[teiid-issues] [JBoss JIRA] (TEIID-3781) Queries are not killed even if the client sends a cancel request

Steven Hawkins (JIRA) issues at jboss.org
Tue Jun 21 12:53:00 EDT 2016


    [ https://issues.jboss.org/browse/TEIID-3781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13255334#comment-13255334 ] 

Steven Hawkins commented on TEIID-3781:
---------------------------------------

> I am not sure what is the exact point prior to which is cancellation "safe" (without TimeoutException).

This should be logged as a different issue.  From these logs you can see that the server is sending a response to the client about the cancellation:

08:06:44,972 DEBUG [org.teiid.TRANSPORT] (New I/O worker #63) processing message:MessageHolder: key=2 contents=Invoke interface org.teiid.client.DQP.cancelRequest
...
08:06:46,782 DEBUG [org.teiid.TRANSPORT] (New I/O worker #63) send message: MessageHolder: key=2 contents=true

However I can see on the client side that there is a soft dead lock between the main reader thread and the cancel thread, such that the synchronization of the cancel method can prevent it from receiving the response.

> Queries are not killed even if the client sends a cancel request
> ----------------------------------------------------------------
>
>                 Key: TEIID-3781
>                 URL: https://issues.jboss.org/browse/TEIID-3781
>             Project: Teiid
>          Issue Type: Quality Risk
>          Components: Query Engine
>    Affects Versions: 7.0
>            Reporter: Salvatore R
>            Assignee: Steven Hawkins
>             Fix For: 8.12.1, 8.13
>
>
> I have different behaviors when I try to cancel the following queries:
> {code:sql}
> SELECT COUNT(*)
> FROM
> 	(SELECT * FROM my.address) as x1,
> 	(SELECT * FROM my.address) as y1
> {code}
> and
> {code:sql}
> SELECT COUNT(*)
> FROM
> 	(SELECT * FROM my.address limit 10000) as x1,
> 	(SELECT * FROM my.address limit 10000) as y1
> {code}
> where "my.address" is a table with around 20000 rows in MySQL.
> The first query is immediately cancelled but the second one continues to run until the end and it is never killed.
> Looking at the generated plans, the main difference is that the first query is fully pushed down to MySQL while the second one is not.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the teiid-issues mailing list