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

Zhong Yanghong updated KYLIN-2881:
----------------------------------
    Description: 
A query may need a bunch of hconnections to visit hbase. Anyone of them fails, 
the whole query should be interrupted, and all of the related hconnections 
should be released for future other queries despite that currently we cannot 
interrupt the threads at hbase coprocessor side.

To achieve this goal, one property is added to QueryContext to keep 
{{Throwable}}. If any sub-step during the query detects this {{Throwable}}, it 
should stop. In {{ExpectedSizeIterator}}, there are two parts where this 
detection is needed.
* before putting data to the queue
* during iteration

If exception happens during a query, it should stop its related threads. Thus, 
{{QueryStopListener}} is added for this.

  was:
A query may need a bunch of hconnections to visit hbase. Anyone of them fails, 
the whole query should be interrupted, and all of the related hconnections 
should be released for future other queries despite that currently we cannot 
interrupt the threads at hbase coprocessor side.

To achieve this goal, there're still some improvements:
* Before putting data to the queue of {{ExpectedSizeIterator}}, check whether 
it's timeout & whether exception exist.
* If any exception found in {{ExpectedSizeIterator}}, the callback of 
coprocessor call should be return early.


> Improve hbase coprocessor exception handling at kylin server side 
> ------------------------------------------------------------------
>
>                 Key: KYLIN-2881
>                 URL: https://issues.apache.org/jira/browse/KYLIN-2881
>             Project: Kylin
>          Issue Type: Improvement
>          Components: Query Engine
>    Affects Versions: v2.1.0
>            Reporter: Zhong Yanghong
>            Assignee: Zhong Yanghong
>             Fix For: v2.2.0
>
>
> A query may need a bunch of hconnections to visit hbase. Anyone of them 
> fails, the whole query should be interrupted, and all of the related 
> hconnections should be released for future other queries despite that 
> currently we cannot interrupt the threads at hbase coprocessor side.
> To achieve this goal, one property is added to QueryContext to keep 
> {{Throwable}}. If any sub-step during the query detects this {{Throwable}}, 
> it should stop. In {{ExpectedSizeIterator}}, there are two parts where this 
> detection is needed.
> * before putting data to the queue
> * during iteration
> If exception happens during a query, it should stop its related threads. 
> Thus, {{QueryStopListener}} is added for this.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to