You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladimir Ozerov (JIRA)" <ji...@apache.org> on 2017/11/03 06:52:00 UTC

[jira] [Updated] (IGNITE-6825) Unhandled interruption in GridH2Table

     [ https://issues.apache.org/jira/browse/IGNITE-6825?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vladimir Ozerov updated IGNITE-6825:
------------------------------------
    Component/s: sql

> 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) 
>          Components: sql
>    Affects Versions: 2.1
>            Reporter: Alexander Belyak
>            Priority: Blocker
>             Fix For: 2.4
>
>
> 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)