Alexander Belyak created IGNITE-6825:
----------------------------------------

             Summary: Unhandled interruption in GridH2Table
                 Key: IGNITE-6825
                 URL: https://issues.apache.org/jira/browse/IGNITE-6825
             Project: Ignite
          Issue Type: Bug
      Security Level: Public (Viewable by anyone)
    Affects Versions: 2.1
            Reporter: Alexander Belyak
            Priority: Blocker


In GridH2Table.lock(Ses, excl, force) method we:
1) put session in sessions table;
2) add lock in H2 session locks
3) try to Lock(excl), but if in GridH2Table.lock(excl):277 while thread in 
lock.lockInterruptiblu() it got interruption - session with lock still alive in 
GridH2Table sessions map but no really lock acquired and when session will 
trying to unlock all acquired locks it will try to unlock it too and we get 
exception:
{noformat}
[ERROR][pub-#3855%DPL_GRID%DplGridNodeName%][o.a.i.i.p.q.h.t.GridMapQueryExecutor]
 Failed to run map query on local node.
 
org.apache.ignite.IgniteCheckedException: Failed to execute SQL query.
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:970)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1029)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQueryWithTimer(IgniteH2Indexing.java:1008)
        at 
org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onQueryRequest0(GridMapQueryExecutor.java:660)
        at 
org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onQueryRequest(GridMapQueryExecutor.java:506)
        at 
org.apache.ignite.internal.processors.query.h2.twostep.GridMapQueryExecutor.onMessage(GridMapQueryExecutor.java:206)
        at 
org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor$1.applyx(GridReduceQueryExecutor.java:145)
        at 
org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor$1.applyx(GridReduceQueryExecutor.java:143)
        at 
org.apache.ignite.internal.util.lang.IgniteInClosure2X.apply(IgniteInClosure2X.java:38)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.send(IgniteH2Indexing.java:2066)
        at 
org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.send(GridReduceQueryExecutor.java:1273)
        at 
org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.query(GridReduceQueryExecutor.java:733)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$8.iterator(IgniteH2Indexing.java:1214)
        at 
org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:95)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$9.iterator(IgniteH2Indexing.java:1256)
        at 
org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:95)
        at 
com.sbt.dpl.gridgain.collection.dataselectors.executor.cachequery.IgniteCacheQueryExecutor.iterator(IgniteCacheQueryExecutor.java:131)
        at 
com.sbt.dpl.gridgain.collection.dataselectors.executor.cachequery.impl.SqlQueryExecutor.iterator(SqlQueryExecutor.java:58)
        at 
com.sbt.dpl.gridgain.collection.dataselectors.executor.cachequery.impl.SqlQueryExecutor.iterator(SqlQueryExecutor.java:23)
        at 
com.sbt.dpl.gridgain.collection.dataselectors.impl.H2IndexesDataSelector.binaryIterator(H2IndexesDataSelector.java:142)
        at 
com.sbt.dpl.gridgain.collection.dataselectors.AbstractDataSelector.getIterator(AbstractDataSelector.java:110)
        at 
com.sbt.dpl.gridgain.collection.dataselectors.IndexesSwitchSelectDataSelector.getIterator(IndexesSwitchSelectDataSelector.java:106)
        at 
com.sbt.dpl.gridgain.collection.base.GGAbstractCollectionWithDataSelector.iterator(GGAbstractCollectionWithDataSelector.java:390)
        at 
ru.sbt.deposit_pf_api.comparators.EntityService.findDepositByProduct(EntityService.java:846)
        at 
ru.sbt.deposit_pf_api.comparators.EntityService.findDepositByProduct(EntityService.java:807)
        at 
ru.sbt.deposit_pf_api.comparators.EntityService.getDepositByObjectInner(EntityService.java:1350)
        at 
ru.sbt.deposit_pf_api.comparators.EntityService.getDepositByObject(EntityService.java:1169)
        at 
ru.sbt.deposit_pf_api.comparators.EntityService.getGroupingObject(EntityService.java:1098)
        at 
ru.sbt.deposit_pf_api.comparators.UnknownClassMapFunction$FindUnknownMapFunctionPredicate.apply(UnknownClassMapFunction.java:183)
        at 
ru.sbt.deposit_pf_api.comparators.UnknownClassMapFunction$FindUnknownMapFunctionPredicate.apply(UnknownClassMapFunction.java:1)
        at ru.sbt.deposit_pf_api.CollectionUtils.filter(CollectionUtils.java:55)
        at 
ru.sbt.deposit_pf_api.comparators.UnknownClassMapFunction.map(UnknownClassMapFunction.java:91)
        at 
ru.sbt.deposit_pf_api.comparators.UnknownClassMapFunction.map(UnknownClassMapFunction.java:1)
        at com.sbt.dpl.gridgain.Job.executeUserMap(Job.java:110)
        at com.sbt.dpl.gridgain.Job.execute(Job.java:68)
at 
com.sbt.dpl.gridgain.compute.ComputeJobAdapterWrapper.execute(ComputeJobAdapterWrapper.java:68)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:566)
        at 
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6629)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:560)
        at 
org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:489)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
        at 
org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1181)
        at 
org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1908)
        at 
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1562)
        at 
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1190)
        at 
org.apache.ignite.internal.managers.communication.GridIoManager.access$4200(GridIoManager.java:126)
        at 
org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1097)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.h2.jdbc.JdbcSQLException: General error: 
"java.lang.IllegalMonitorStateException: attempt to unlock read lock, not 
locked by current thread" [50000-195]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
        at org.h2.message.DbException.get(DbException.java:168)
        at org.h2.message.DbException.convert(DbException.java:295)
        at org.h2.message.DbException.toSQLException(DbException.java:268)
        at org.h2.message.TraceObject.logAndConvert(TraceObject.java:352)
        at 
org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:123)
        at 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:963)
        ... 49 common frames omitted
Caused by: java.lang.IllegalMonitorStateException: attempt to unlock read lock, 
not locked by current thread
        at 
java.util.concurrent.locks.ReentrantReadWriteLock$Sync.unmatchedUnlockException(ReentrantReadWriteLock.java:444)
        at 
java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:428)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1341)
        at 
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:881)
        at 
org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.unlock(GridH2Table.java:296)
        at 
org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.unlock(GridH2Table.java:389)
        at org.h2.engine.Session.unlockAll(Session.java:942)
        at org.h2.engine.Session.endTransaction(Session.java:713)
        at org.h2.engine.Session.commit(Session.java:661)
        at org.h2.command.Command.stop(Command.java:156)
        at org.h2.command.Command.executeQuery(Command.java:231)
        at 
org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:111)
        ... 50 common frames omitted
{noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to