nizhikov commented on code in PR #11438: URL: https://github.com/apache/ignite/pull/11438#discussion_r1758659704
########## modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java: ########## @@ -3201,27 +3223,43 @@ private QueryEngine engineForQuery(SqlClientContext cliCtx, SqlFieldsQuery qry) * Execute query setting busy lock, preserving current cache context and properly handling checked exceptions. * * @param cctx Cache context. + * @param userTx User transaction. * @param supplier Code to be executed. * @return Result. */ - private <T> T executeQuerySafe(@Nullable final GridCacheContext<?, ?> cctx, GridPlainOutClosure<T> supplier) { + private <T> T executeQuerySafe( + @Nullable final GridCacheContext<?, ?> cctx, + @Nullable final GridNearTxLocal userTx, + GridPlainOutClosure<T> supplier + ) { GridCacheContext oldCctx = curCache.get(); curCache.set(cctx); - if (!busyLock.enterBusy()) - throw new IllegalStateException("Failed to execute query (grid is stopping)."); - try { - return supplier.apply(); + if (!busyLock.enterBusy()) + throw new IllegalStateException("Failed to execute query (grid is stopping)."); + + if (userTx != null) + userTx.suspend(); + + try { + return supplier.apply(); + } + catch (IgniteCheckedException e) { + throw new CacheException(e); + } + finally { + curCache.set(oldCctx); + + busyLock.leaveBusy(); + + if (userTx != null) + userTx.resume(); Review Comment: Ignite don't provide async API for queries, so my suggestion - Yes, all queries executed synchronously. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@ignite.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org