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

Vladimir Ozerov updated IGNITE-6825:
------------------------------------
    Priority: Major  (was: Blocker)

> 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: Major
>             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)

Reply via email to