[
https://issues.apache.org/jira/browse/IGNITE-19895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Evgeny Stanilovsky resolved IGNITE-19895.
-----------------------------------------
Release Note: fixed in different issue
Resolution: Won't Fix
> Sql. QueryCancel#cancel cheat checking exception hierarchy
> ----------------------------------------------------------
>
> Key: IGNITE-19895
> URL: https://issues.apache.org/jira/browse/IGNITE-19895
> Project: Ignite
> Issue Type: Improvement
> Components: sql
> Affects Versions: 3.0.0-beta1
> Reporter: Evgeny Stanilovsky
> Priority: Major
> Labels: ignite-3
>
> Check code below (QueryCancel#cancel), casts checked exception into unchecked
> one thus there are exist some places without catching such exception which
> can lead to tx\resources leakage.
> {code:java}
> public synchronized void cancel() {
> if (canceled) {
> return;
> }
> canceled = true;
> IgniteException ex = null;
> // Run actions in the reverse order.
> for (int i = cancelActions.size() - 1; i >= 0; i--) {
> try {
> Cancellable act = cancelActions.get(i);
> act.cancel();
> } catch (Exception e) {
> if (ex == null) {
> ex = new SqlException(CANCEL_OPERATION_ERR, e);
> } else {
> ex.addSuppressed(e);
> }
> }
> }
> if (ex != null) {
> throw ex;
> }
> }
> {code}
> and call this method from : SqlQueryProcessor#querySingle0 like
> {noformat}
> stage.whenComplete((cur, ex) -> {
> if (ex instanceof CancellationException) {
> *queryCancel.cancel();*
> }
> if (ex != null && outerTx == null) {
> InternalTransaction tx0 = tx.get();
> if (tx0 != null) {
> tx0.rollback();
> }
> }
> }
> {noformat}
> may stay internal tx untouched, as i can see
--
This message was sent by Atlassian Jira
(v8.20.10#820010)