Hey y’all,

There are some blocking requests that could make an event loop *await
uninterruptibly*. At this point, the Drillbit might seem unresponsive. This
is worsened if the the event loop is not unblocked (due to a bug), which
requires a Drillbit restart. Although Drill supports *offloading from the
event loop* (experimental), this is not sufficient as the thread handling
the queue of requests would still block.

AFAIK there are two such requests:
+ when the user cancels
<https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java#L1184>
the query during planning
+ a fragment is canceled
<https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java#L150>
or terminated
<https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java#L501>
early during setup

I think a simple solution would be to *re-queue *such requests (possible in
above cases). That way other requests get their chance, and all requests
would be eventually handled. Thoughts?

Thank you,
Sudheesh

Reply via email to