Hi Courtney, MVCC is not production ready yet, so, I wouldn't recommend using TRANSACTIONAL_SNAPSHOT atomicity for now.
Best Regards, Evgenii ср, 15 апр. 2020 г. в 06:02, Courtney Robinson <[email protected]>: > We're upgrading to Ignite 2.8 and are starting to use SQL tables. In all > previous work we've used the key value APIs directly. > > After getting everything working, we're regularly seeing "transaction > already completed" errors when executing SELECT queries. A stack trace is > included at the end. > All tables are created with > "template=partitioned,backups=2,data_region=hypi,affinity_key=instanceId,atomicity=TRANSACTIONAL_SNAPSHOT" > > I found https://issues.apache.org/jira/browse/IGNITE-10763 which > suggested the problem was fixed in 2.8 and "is caused by leaked tx stored > in ThreadLocal". > > Has anyone else encountered this issue and is there a fix? > Just to be clear, we're definitely not performing any insert/update/merge > operations, only selects when this error occurs. > > From that issue I linked to, assuming the problem is still a leaked > ThreadLocal is there any workaround for this? > We have a managed thread pool (you can see Pool.java in the trace), I've > tried not to use it but still get the error because I guess it's now just > defaulting to Spring Boot's request thread pool. > > > 2020-04-13 19:56:31.548 INFO 9 --- [io-10000-exec-2] io.hypi.arc.os.gql. >> HypiGraphQLException : GraphQL error, path: null, source: null, msg: null >> javax.cache.CacheException: Transaction is already completed. at org. >> apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query( >> IgniteCacheProxyImpl.java:820) at org.apache.ignite.internal.processors. >> cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:753) at org. >> apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.query( >> GatewayProtectedCacheProxy.java:424) at io.hypi.arc.os.ignite.IgniteRepo. >> findInstanceCtx(IgniteRepo.java:134) at io.hypi.arc.os.handlers. >> BaseHandler.evaluateQuery(BaseHandler.java:38) at io.hypi.arc.os.handlers >> .HttpHandler.lambda$runQuery$0(HttpHandler.java:145) at io.hypi.arc.base. >> Pool.apply(Pool.java:109) at io.hypi.arc.base.Pool.lambda$async$3(Pool. >> java:93) at com.google.common.util.concurrent.TrustedListenableFutureTask >> $TrustedFutureInterruptibleTask.runInterruptibly( >> TrustedListenableFutureTask.java:125) at com.google.common.util. >> concurrent.InterruptibleTask.run(InterruptibleTask.java:69) at com.google >> .common.util.concurrent.TrustedListenableFutureTask.run( >> TrustedListenableFutureTask.java:78) at java.base/java.util.concurrent. >> Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util >> .concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util. >> concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run( >> ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent. >> ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/ >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >> java:628) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: >> org.apache.ignite.transactions.TransactionAlreadyCompletedException: >> Transaction is already completed. at org.apache.ignite.internal.util. >> IgniteUtils$18.apply(IgniteUtils.java:991) at org.apache.ignite.internal. >> util.IgniteUtils$18.apply(IgniteUtils.java:989) at org.apache.ignite. >> internal.util.IgniteUtils.convertException(IgniteUtils.java:1062) at org. >> apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSelect >> (IgniteH2Indexing.java:1292) at org.apache.ignite.internal.processors. >> query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:1117) at >> org.apache.ignite.internal.processors.query.GridQueryProcessor$3.applyx( >> GridQueryProcessor.java:2406) at org.apache.ignite.internal.processors. >> query.GridQueryProcessor$3.applyx(GridQueryProcessor.java:2402) at org. >> apache.ignite.internal.util.lang.IgniteOutClosureX.apply( >> IgniteOutClosureX.java:36) at org.apache.ignite.internal.processors.query >> .GridQueryProcessor.executeQuery(GridQueryProcessor.java:2919) at org. >> apache.ignite.internal.processors.query.GridQueryProcessor. >> lambda$querySqlFields$1(GridQueryProcessor.java:2422) at org.apache. >> ignite.internal.processors.query.GridQueryProcessor.executeQuerySafe( >> GridQueryProcessor.java:2460) at org.apache.ignite.internal.processors. >> query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2396) at >> org.apache.ignite.internal.processors.query.GridQueryProcessor. >> querySqlFields(GridQueryProcessor.java:2323) at org.apache.ignite. >> internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl >> .java:805) ... 16 common frames omitted Caused by: org.apache.ignite. >> internal.transactions.IgniteTxAlreadyCompletedCheckedException: >> Transaction is already completed. at org.apache.ignite.internal. >> processors.cache.mvcc.MvccUtils.checkActive(MvccUtils.java:684) at org. >> apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSelect >> (IgniteH2Indexing.java:1255) ... 26 common frames omitted >> > Regards, > Courtney Robinson > Founder and CEO, Hypi > Tel: ++44 208 123 2413 (GMT+0) <https://hypi.io> > > <https://hypi.io> > https://hypi.io >
