ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-6825) Unhandled interruption in GridH2Table
Date Fri, 03 Nov 2017 06:48:00 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-6825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16237175#comment-16237175
] 

ASF GitHub Bot commented on IGNITE-6825:
----------------------------------------

GitHub user devozerov opened a pull request:

    https://github.com/apache/ignite/pull/2976

    IGNITE-6825

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/gridgain/apache-ignite ignite-6825

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ignite/pull/2976.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #2976
    
----
commit f6399b46770a11beb0fb131bf0ce87162f052f1e
Author: devozerov <ppozerov@gmail.com>
Date:   2017-11-03T06:45:44Z

    IGNITE-6825: SQL: Fixed GridH2Table unlock in case of interrupt.

----


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

Mime
View raw message