Description
Client$Connection#waitForWork may suffer spurious wakeup because the wait is not surrounded by a loop. See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait().
Client$Connection#waitForWork
if (calls.isEmpty() && !shouldCloseConnection.get() && running.get()) { long timeout = maxIdleTime- (Time.now()-lastActivity.get()); if (timeout>0) { try { wait(timeout); <<<<<<==== spurious wakeup } catch (InterruptedException e) {} } }