Hi Julia,
thanks for looking into this issue, it looks like regression, in JDK8 we don't do join() on "dispatcherThread" in stop(). We need to find out why we introduce the below code.
####################################################
if (dispatcherThread != null) {
try {
dispatcherThread.join();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
logger.log (Level.TRACE, "ServerImpl.stop: ", e);
}
}
try {
dispatcherThread.join();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
logger.log (Level.TRACE, "ServerImpl.stop: ", e);
}
}
#########################################################
Thanks,
Vyom
----- Original message -----
From: Julia Boes <julia.b...@oracle.com>
Sent by: "net-dev" <net-dev-boun...@openjdk.java.net>
To: OpenJDK Network Dev list <net-dev@openjdk.java.net>
Cc:
Subject: [EXTERNAL] RFR: 8233185: HttpServer.stop() blocks indefinitely when called on dispatch thread
Date: Tue, Nov 26, 2019 9:58 PM
Hi,
When HttpServer.stop(int delay) is called on the dispatcher thread of
the server, the call blocks indefinitely as the thread is waiting for
itself to die. The proposed fix in this case is to skip the join() and
let the thread return immediately.
Bug: https://bugs.openjdk.java.net/browse/JDK-8233185
Webrev: http://cr.openjdk.java.net/~jboes/webrevs/8233185/webrev.00/
Regards,
Julia