You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Tupitsyn (Jira)" <ji...@apache.org> on 2024/09/09 11:01:00 UTC
[jira] [Updated] (IGNITE-23170) BinaryTupleCommon.shrinkDecimal is too slow
[ https://issues.apache.org/jira/browse/IGNITE-23170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Tupitsyn updated IGNITE-23170:
------------------------------------
Description:
Add the following code to *ItSqlApiBaseTest*
{code:java}
@Test
public void testDecimalDivisionTimeout() {
IgniteSql igniteSql = igniteSql();
igniteSql.execute(null, "CREATE TABLE testDecimalDivisionTimeout (ID INT PRIMARY KEY, VAL0 INT)").close();
for (int i = 0; i < 10; i++) {
igniteSql.execute(null, "INSERT INTO testDecimalDivisionTimeout VALUES (?, ?)", i, i * 100).close();
}
ResultSet<SqlRow> cursor = igniteSql.execute(null,
"SELECT cast(VAl0 as decimal(300)) / ? FROM testDecimalDivisionTimeout", new BigDecimal(200));
while (cursor.hasNext()) {
cursor.next();
}
}
{code}
Warnings in the log:
{code}
org.apache.ignite.lang.IgniteException: A critical thread is blocked for 1758 ms that is more than the allowed 500 ms, it is "iscsat_n_0-client-12" prio=10 Id=121 RUNNABLE
at java.base@11.0.24/java.math.MutableBigInteger.divideOneWord(MutableBigInteger.java:1131)
at java.base@11.0.24/java.math.MutableBigInteger.divideKnuth(MutableBigInteger.java:1203)
at java.base@11.0.24/java.math.MutableBigInteger.divideKnuth(MutableBigInteger.java:1163)
at java.base@11.0.24/java.math.BigInteger.divideAndRemainderKnuth(BigInteger.java:2328)
at java.base@11.0.24/java.math.BigInteger.divideAndRemainder(BigInteger.java:2316)
at java.base@11.0.24/java.math.BigDecimal.createAndStripZerosToMatchScale(BigDecimal.java:4878)
at java.base@11.0.24/java.math.BigDecimal.stripTrailingZeros(BigDecimal.java:3053)
at app//org.apache.ignite.internal.binarytuple.BinaryTupleCommon.shrinkDecimal(BinaryTupleCommon.java:118)
at app//org.apache.ignite.internal.binarytuple.BinaryTupleBuilder.appendDecimalNotNull(BinaryTupleBuilder.java:292)
at app//org.apache.ignite.internal.binarytuple.BinaryTupleBuilder.appendDecimal(BinaryTupleBuilder.java:317)
at app//org.apache.ignite.client.handler.requests.sql.ClientSqlCommon.packValue(ClientSqlCommon.java:96)
at app//org.apache.ignite.client.handler.requests.sql.ClientSqlCommon.packCurrentPage(ClientSqlCommon.java:48)
at app//org.apache.ignite.client.handler.requests.sql.ClientSqlExecuteRequest.writeResultSetAsync(ClientSqlExecuteRequest.java:135)
at app//org.apache.ignite.client.handler.requests.sql.ClientSqlExecuteRequest.lambda$process$0(ClientSqlExecuteRequest.java:93)
{code}
> BinaryTupleCommon.shrinkDecimal is too slow
> -------------------------------------------
>
> Key: IGNITE-23170
> URL: https://issues.apache.org/jira/browse/IGNITE-23170
> Project: Ignite
> Issue Type: Bug
> Components: binary
> Reporter: Pavel Tupitsyn
> Assignee: Pavel Tupitsyn
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0
>
>
> Add the following code to *ItSqlApiBaseTest*
> {code:java}
> @Test
> public void testDecimalDivisionTimeout() {
> IgniteSql igniteSql = igniteSql();
> igniteSql.execute(null, "CREATE TABLE testDecimalDivisionTimeout (ID INT PRIMARY KEY, VAL0 INT)").close();
> for (int i = 0; i < 10; i++) {
> igniteSql.execute(null, "INSERT INTO testDecimalDivisionTimeout VALUES (?, ?)", i, i * 100).close();
> }
> ResultSet<SqlRow> cursor = igniteSql.execute(null,
> "SELECT cast(VAl0 as decimal(300)) / ? FROM testDecimalDivisionTimeout", new BigDecimal(200));
> while (cursor.hasNext()) {
> cursor.next();
> }
> }
> {code}
> Warnings in the log:
> {code}
> org.apache.ignite.lang.IgniteException: A critical thread is blocked for 1758 ms that is more than the allowed 500 ms, it is "iscsat_n_0-client-12" prio=10 Id=121 RUNNABLE
> at java.base@11.0.24/java.math.MutableBigInteger.divideOneWord(MutableBigInteger.java:1131)
> at java.base@11.0.24/java.math.MutableBigInteger.divideKnuth(MutableBigInteger.java:1203)
> at java.base@11.0.24/java.math.MutableBigInteger.divideKnuth(MutableBigInteger.java:1163)
> at java.base@11.0.24/java.math.BigInteger.divideAndRemainderKnuth(BigInteger.java:2328)
> at java.base@11.0.24/java.math.BigInteger.divideAndRemainder(BigInteger.java:2316)
> at java.base@11.0.24/java.math.BigDecimal.createAndStripZerosToMatchScale(BigDecimal.java:4878)
> at java.base@11.0.24/java.math.BigDecimal.stripTrailingZeros(BigDecimal.java:3053)
> at app//org.apache.ignite.internal.binarytuple.BinaryTupleCommon.shrinkDecimal(BinaryTupleCommon.java:118)
> at app//org.apache.ignite.internal.binarytuple.BinaryTupleBuilder.appendDecimalNotNull(BinaryTupleBuilder.java:292)
> at app//org.apache.ignite.internal.binarytuple.BinaryTupleBuilder.appendDecimal(BinaryTupleBuilder.java:317)
> at app//org.apache.ignite.client.handler.requests.sql.ClientSqlCommon.packValue(ClientSqlCommon.java:96)
> at app//org.apache.ignite.client.handler.requests.sql.ClientSqlCommon.packCurrentPage(ClientSqlCommon.java:48)
> at app//org.apache.ignite.client.handler.requests.sql.ClientSqlExecuteRequest.writeResultSetAsync(ClientSqlExecuteRequest.java:135)
> at app//org.apache.ignite.client.handler.requests.sql.ClientSqlExecuteRequest.lambda$process$0(ClientSqlExecuteRequest.java:93)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)