Hi Nikolay,

I think that problem here is that the query you are trying to kill is

> "SELECT QUERY_ID FROM SYS.SQL_QUERIES"

itself, which is already completed by the time you run "KILL QUERY" command.

I'm not an expert in the system views, but it seems to me that the line

> List<List<?>> sqlQries0 = SqlViewExporterSpiTest.execute(ignite0, "SELECT 
> QUERY_ID FROM SYS.SQL_QUERIES");

returns only the queries which were originated from the ignite0 node.
Since "SELECT _KEY, _VAL FROM INTEGER" was started on the client node,
it doesn't get into that list.

Try to replace "ignite0" with a "client" node in this line. I think it
may help:

> List<List<?>> sqlQries0 = SqlViewExporterSpiTest.execute(client, "SELECT 
> QUERY_ID FROM SYS.SQL_QUERIES");



-- 
Kind Regards
Roman Kondakov


On 02.03.2020 12:02, Nikolay Izhikov wrote:
> Hello, Igniters.
> 
> Ignite right now support `KILL QUERY` command.
> I tried to use it and stuck with the simple test.
> Error is «Query with provided ID doesn’t exist» 
> 
> Can you, please, advise me - How KILL QUERY should be used?
> 
> ```
>     @Test
>     public void testCancelSQLQuery() throws Exception {
>         IgniteEx ignite0 = startGrids(NODES_CNT);
>         IgniteEx client = startClientGrid("client");
> 
>         ignite0.cluster().state(ACTIVE);
> 
>         initCache(client);
> 
>         SqlFieldsQuery qry = new SqlFieldsQuery("SELECT _KEY, _VAL FROM 
> INTEGER").setSchema("default").setPageSize(10);
>         Iterator<List<?>> iter = queryProcessor(client).querySqlFields(qry, 
> true).iterator();
> 
>         assertNotNull(iter.next());
> 
>         List<List<?>> sqlQries0 = SqlViewExporterSpiTest.execute(ignite0, 
> "SELECT QUERY_ID FROM SYS.SQL_QUERIES");
>         assertEquals(1, sqlQries0.size());
>       
>         String qryId = (String)sqlQries0.get(0).get(0);
>         SqlViewExporterSpiTest.execute(client, "KILL QUERY '" + qryId + "'»);
> 
>       //Expecting this iteration will fail.
>         while(iter.hasNext())
>             assertNotNull(iter.next());
> 
>         fail("You shouldn't be here!");
>     }
> 
>     private void initCache(IgniteEx client) {
>         IgniteCache<Object, Object> cache = client.getOrCreateCache(
>             new 
> CacheConfiguration<>(DEFAULT_CACHE_NAME).setIndexedTypes(Integer.class, 
> Integer.class));
> 
>         for (int i = 0; i < PAGE_SZ * PAGE_SZ; i++)
>             cache.put(i, i);
>     }
> ```
> 
> ```
> class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed 
> to cancel query 
> [nodeId=4f812490-47b9-4331-8b51-d783f5300000,qryId=1,err=Query with provided 
> ID doesn't exist [nodeId=4f812490-47b9-4331-8b51-d783f5300000, qryId=1]]
> 
>       at 
> org.apache.ignite.internal.processors.query.h2.CommandProcessor.processKillQueryCommand(CommandProcessor.java:482)
>       at 
> org.apache.ignite.internal.processors.query.h2.CommandProcessor.runCommand(CommandProcessor.java:411)
>       at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeCommand(IgniteH2Indexing.java:996)
>       at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:1085)
>       at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2454)
> ````
> 

Reply via email to