Isaac Zhu created IGNITE-19784:
----------------------------------

             Summary: Specific SQL query causes all nodes in cluster down
                 Key: IGNITE-19784
                 URL: https://issues.apache.org/jira/browse/IGNITE-19784
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 2.13
         Environment:  
 
 
 
 
 
            Reporter: Isaac Zhu


I'm using 2.13 server and client.

The query is performed in a wrong way using the Python thin client. But It 
leads to all server nodes get shutdown which is a severe BUG. It should just 
report this is a wrong query.
h2. Table and index:

CREATE TABLE PUBLIC.TEST_TABLE (
    GROUP_ID INTEGER,
    DIFF_FILE_ID INTEGER,
    TEST_CASE_ID INTEGER,
    PARSING_START_TIME TIMESTAMP,
    STATUS VARCHAR,
    BEST_LOWER_STATUS VARCHAR,
    BEST_LOWER_FROM INTEGER,
    IS_R2R BOOLEAN,
    LAST_UPDATE TIMESTAMP,
    PRIMARY KEY (GROUP_ID,TEST_CASE_ID)
) WITH "TEMPLATE=PARTITIONED,affinity_key=TEST_CASE_ID,cache_group=TEST_TABLE";
CREATE INDEX IS_R2R_TEST_TABLE ON PUBLIC.TEST_TABLE(IS_R2R);
CREATE INDEX GROUP_ID_TEST_TABLE ON PUBLIC.TEST_TABLE(GROUP_ID);
CREATE INDEX TEST_CASE_ID_TEST_TABLE ON PUBLIC.TEST_TABLE(TEST_CASE_ID);
CREATE INDEX DIFF_FILE_ID_TEST_TABLE ON PUBLIC.TEST_TABLE(DIFF_FILE_ID);
CREATE INDEX STATUS_TEST_TABLE ON PUBLIC.TEST_TABLE(STATUS);
h2. Code of run the query with python thin client:

from pyignite import Client
def execute_ignite_query(client, sql, query_args):
    response = []
    try:
        result = client.sql(sql, include_field_names=True, 
query_args=query_args)
        columns = next(result)
        for row in result:
            response.append(\{key: val for key, val in zip(columns, row)})
    except:
        traceback.print_exc()
    return response
 
 
sql = "SELECT GROUP_ID, STATUS, IS_R2R, COUNT(*) AS COUNT FROM test_table WHERE 
GROUP_ID IN ( ? ) AND status != '' GROUP BY group_id , status , is_r2r"
group_id = "478,479,480,481,482,483,484,485,486,487,488,7765"
result = execute_ignite_query(ignite_client, sql,[group_id])

{color:#de350b}*This query will hang and all server nodes raise this error and 
stopped immediatly:*{color}

[23:33:07,635][SEVERE][query-#15094][] Critical system error detected. Will be 
handled accordingly to configured handler [hnd=StopNodeOrHaltFailureHandler 
[tryStop=false, timeout=0, super=AbstractFailureHandler 
[ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, 
SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext 
[type=CRITICAL_ERROR, err=class 
o.a.i.i.processors.cache.persistence.tree.CorruptedTreeException: B+Tree is 
corrupted [groupId=-1392979922, pageIds=[844420636415674], cacheId=-1293843575, 
cacheName=SQL_PUBLIC_TEST_TABLE, indexName=_key_PK, groupName=TEST_TABLE, 
msg=Runtime failure on bounds: [lower=IndexSearchRowImpl 
[rowHnd=o.a.i.i.processors.query.h2.index.QueryIndexRowHandler@7cc55efe], 
upper=IndexSearchRowImpl 
[rowHnd=o.a.i.i.processors.query.h2.index.QueryIndexRowHandler@7cc55efe]]]]]
class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [groupId=-1392979922, pageIds=[844420636415674], 
cacheId=-1293843575, cacheName=SQL_PUBLIC_TEST_TABLE, indexName=_key_PK, 
groupName=TEST_TABLE, msg=Runtime failure on bounds: [lower=IndexSearchRowImpl 
[rowHnd=org.apache.ignite.internal.processors.query.h2.index.QueryIndexRowHandler@7cc55efe],
 upper=IndexSearchRowImpl 
[rowHnd=org.apache.ignite.internal.processors.query.h2.index.QueryIndexRowHandler@7cc55efe]]]
>---at 
>org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree.corruptedTreeException(InlineIndexTree.java:594)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1217)
>---at 
>org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexImpl.find(InlineIndexImpl.java:104)
>---at 
>org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.find(H2TreeIndex.java:209)
>---at org.h2.index.BaseIndex.find(BaseIndex.java:130)
>---at org.h2.index.IndexCursor.find(IndexCursor.java:176)
>---at org.h2.table.TableFilter.next(TableFilter.java:471)
>---at org.h2.command.dml.Select.queryGroup(Select.java:323)
>---at org.h2.command.dml.Select.queryWithoutCache(Select.java:628)
>---at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:114)
>---at org.h2.command.dml.Query.query(Query.java:352)
>---at org.h2.command.dml.Query.query(Query.java:333)
>---at org.h2.command.CommandContainer.query(CommandContainer.java:114)
>---at org.h2.command.Command.executeQuery(Command.java:202)
>---at 
>org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:114)
>---at 
>org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:888)
>---at 
>org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:985)
>---at 
>org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onQueryRequest0(GridMapQueryExecutor.java:471)
>---at 
>org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.lambda$onQueryRequest$0(GridMapQueryExecutor.java:255)
>---at 
>org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7422)
>---at 
>org.apache.ignite.internal.processors.closure.GridClosureProcessor$1.body(GridClosureProcessor.java:827)
>---at 
>org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>---at 
>org.apache.ignite.internal.processors.security.thread.SecurityAwareRunnable.run(SecurityAwareRunnable.java:51)
>---at 
>java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>---at 
>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>---at java.lang.Thread.run(Thread.java:748)
Caused by: class org.apache.ignite.IgniteException: Failed to store new index 
row.
>---at 
>org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree.compare(InlineIndexTree.java:306)
>---at 
>org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree.compare(InlineIndexTree.java:74)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.compare(BPlusTree.java:5553)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findInsertionPoint(BPlusTree.java:5473)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$1100(BPlusTree.java:162)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run0(BPlusTree.java:369)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:6089)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Search.run(BPlusTree.java:349)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:6075)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.readPage(PageHandler.java:174)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.DataStructure.read(DataStructure.java:415)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.read(BPlusTree.java:6276)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.findDown(BPlusTree.java:1542)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doFind(BPlusTree.java:1509)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$7300(BPlusTree.java:162)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.find(BPlusTree.java:5746)
>---at 
>org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.find(BPlusTree.java:1201)
>---... 24 more
Caused by: org.h2.message.DbException: Data conversion error converting 
"478,479,480,481,482,483,484,485,486,487,488,7765" [22018-197]
>---at org.h2.message.DbException.get(DbException.java:168)
>---at org.h2.value.Value.convertTo(Value.java:1116)
>---at org.h2.value.Value.convertTo(Value.java:617)
>---at org.h2.value.Value.convertTo(Value.java:592)
>---at 
>org.apache.ignite.internal.processors.query.h2.index.H2RowComparator.compareKey(H2RowComparator.java:77)
>---at 
>org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexTree.compare(InlineIndexTree.java:293)
>---... 40 more
Caused by: org.h2.jdbc.JdbcSQLException: Data conversion error converting 
"478,479,480,481,482,483,484,485,486,487,488,7765" [22018-197]
>---at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
>---... 46 more
Caused by: java.lang.NumberFormatException: For input string: 
"478,479,480,481,482,483,484,485,486,487,488,7765"
>---at 
>java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
>---at java.lang.Integer.parseInt(Integer.java:580)
>---at java.lang.Integer.parseInt(Integer.java:615)
>---at org.h2.value.Value.convertTo(Value.java:1061)
>---... 44 more

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to