Thanks for letting me know. It's worth adding this to the docs it doesn't currently include any warning or notice that TRANSACTIONAL_SNAPSHOT isn't ready for production in https://apacheignite-sql.readme.io/docs/multiversion-concurrency-control Is there a set of outstanding tickets I can keep track of? Depending on time needed, we could potentially contribute to getting this released.
Regards, Courtney Robinson Founder and CEO, Hypi Tel: ++44 208 123 2413 (GMT+0) <https://hypi.io> <https://hypi.io> https://hypi.io On Wed, Apr 15, 2020 at 3:26 PM Evgenii Zhuravlev <[email protected]> wrote: > 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 >> >
