You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Deneche A. Hakim (JIRA)" <ji...@apache.org> on 2016/04/08 08:20:25 UTC

[jira] [Created] (DRILL-4595) FragmentExecutor.fail() should interrupt the fragment thread to avoid possible query hangs

Deneche A. Hakim created DRILL-4595:
---------------------------------------

             Summary: FragmentExecutor.fail() should interrupt the fragment thread to avoid possible query hangs
                 Key: DRILL-4595
                 URL: https://issues.apache.org/jira/browse/DRILL-4595
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.4.0
            Reporter: Deneche A. Hakim
            Assignee: Deneche A. Hakim
             Fix For: 1.7.0


When a fragment fails it's assumed it will be able to close itself and send it's FAILED state to the foreman which will cancel any running fragments. FragmentExecutor.cancel() will interrupt the thread making sure those fragment don't stay blocked.
However, if a fragment is already blocked when it's fail method is called the foreman may never be notified about this and the query will hang forever. One such scenario is the following:

- generally it's a CTAS running on a large cluster (lot's of writers running in parallel)
- logs show that the user channel was closed and UserServer caused the root fragment to move to a FAILED state
- jstack shows that the root fragment is blocked in it's receiver waiting for data
- jstack also shows that ALL other fragments are no longer running, and the logs show that all of them succeeded
- the foreman waits *forever* for the root fragment to finish



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)