Tim Armstrong created IMPALA-6920:
-------------------------------------

             Summary: Multithreaded scans are not guaranteed to get a thread 
token immediately
                 Key: IMPALA-6920
                 URL: https://issues.apache.org/jira/browse/IMPALA-6920
             Project: IMPALA
          Issue Type: Bug
          Components: Backend
    Affects Versions: Impala 2.12.0
            Reporter: Tim Armstrong
            Assignee: Tim Armstrong


So what happens is that we reserve an optional token for the first scanner 
thread but that can be taken by any other operator in the same fragment. What 
happens in one fragment in TPC-DS q18a is:
1. The hash join grabs an extra token for the join build. I guess it does this 
early so it gets an optional token before other fragments can grab them.
2. The scan node reserves an optional token in Open(). This optional token is 
already in use by the hash join.
3. The scan node tries to start the first scanner thread, but there are no 
optional tokens available, so it can't start any.
4. Eventually the optional token is given up and the scanner thread can start.

If #4 always happens without the scan making progress, then no deadlock is 
possible, but if there's any kind of circular dependency, this can deadlock.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to