Hi Igniters, Earlier we agreed about syntax KILL QUERY '[node_order].[query_counter]', e.g. KILL QUERY '25.123' for single query or KILL QUERY '25.*' for all queries on the node. Which is part of IEP-29 <https://cwiki.apache.org/confluence/display/IGNITE/IEP-29%3A+SQL+management+and+monitoring> .
Now I want to discuss internal realization of KILL query feature. My current vision is following: After parsing, Ignite create KILL query command with two parameters: nodeOrderId, nodeQryId. To determine that need to kill all queries on a node we can use negative value of query id, due to qry id always have positive values. The command process at IgniteH2Indexing as native command. By nodeOrderId we find node which initial for the query and send to the node new GridQueryKillRequest with nodeQryId to TOPIC_QUERY with not QUERY POOL executor. At GridReduceQueryExecutor we add support of processing new GridQueryKillRequest which just run already exists cancelQueries method with given qryId or with all qryIds which currently running at the node in case at initial KILL QUERY parameters used star symbol. I have a doubt which of thread pool we should use to process GridQueryKillRequest. My opinion it shouldn't be QUERY pool, due to the pool can be fully used by executing queries, it such case we can't cancel query immediately. May we use one of already existed pool or create new one? Or may be I'm mistaken and it should use QUERY pool. What do you think about proposed plan of implementation? And please give comments about which of thread pool will be better to use for kill query requests. It's small, but really important part of the realization. Thanks. -- Живи с улыбкой! :D
