Please help review this PR which improves `HttpServer::stop` termination timing 
to better fit user expectations.

This PR:

* Makes `ServerImpl::stop` continue without delay when there are no active 
exchanges during shutdown
* Attempts to interrupt the dispatcher thread before joining it, giving 
long-living interruptible exchanges a chance to finish  early
* Adds testing for boundary conditions with or without an active exchange, 
delay occurring before exhange completes and exchange completing before delay.

Additinally, `ServerImpl::stop` is updated to use `System::nanotime` instead of 
`System::currentTimeMillis` when calculating wait times.

The test relies on timing to assert the order of events. Not perfect, but it 
seems to work.

(This part of the code base is rather new to me. A bit of hand-holding should 
be expected when reviewing this PR)

-------------

Commit messages:
 - Improve shutdown sequence in HttpServerImpl::stop

Changes: https://git.openjdk.org/jdk/pull/24467/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24467&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8304065
  Stats: 237 lines in 2 files changed: 231 ins; 3 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/24467.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24467/head:pull/24467

PR: https://git.openjdk.org/jdk/pull/24467

Reply via email to