[ 
https://issues.apache.org/jira/browse/IGNITE-23778?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Pereslegin resolved IGNITE-23778.
---------------------------------------
    Resolution: Won't Fix

Should be fixed in IGNITE-23441

> Sql. Synchronous cancellation of a locally initiated request
> ------------------------------------------------------------
>
>                 Key: IGNITE-23778
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23778
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>            Reporter: Pavel Pereslegin
>            Priority: Major
>              Labels: ignite-3
>
> If query has opened cursor call to CancelHandle.cancel() will wait until 
> something will be done with cursor (from the user side).
> For example:
> {code:java}
>     @Test
>     public void simpleCancelTest() {
>         IgniteSql sql = igniteSql();
>         CancelHandle cancelHandle = CancelHandle.create();
>         CancellationToken token = cancelHandle.token();
>         Statement statement = sql.statementBuilder()
>                 .query("SELECT * FROM system_range(0, 10000000000)")
>                 .build();
>         try (ResultSet<SqlRow> rs = sql.execute(null, token, statement)) {
>             // PROBLEM
>             // We hang here until the user does something with the cursor.
>             cancelHandle.cancel();
>             try {
>                 while (rs.hasNext()) {
>                     rs.next();
>                 }
>                 fail("Exception was not thrown");
>             } catch (SqlException expected) {
>                 assertEquals(Sql.EXECUTION_CANCELLED_ERR, expected.code());
>             }
>         }
>     }
> {code}
> If you change {{cancelHandle.cancel();}} to {{cancelHandle.cancelAsync();}}, 
> the test will pass.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to