I met this problem when some tests get failed because timeout on creating a new collection. The case here is
1. Overseer call DQ.peekElements with LONG.MAX_VALUE timeout.
2. DQ fetch children from ZK but it is empty.
3. At the same time with 2, a set LEADER message is enqueued, changed.signalAll() already called.
4. The call changed.awaitNanos(waitNanos) is never end because no new messages get enqueued after this point.
The fix here is trivial, the call peekElements should have a timeout of 2 seconds, that will be appropriate in most cases.