On Mon, 21 Nov 2022 15:12:02 GMT, Daniel Fuchs <[email protected]> wrote:
> Please find here a test fix for the > sun/net/www/http/HttpClient/MultiThreadTest. > > This test makes concurrent connections to a server using multiple threads, > and due to keep-alive, expects that there should not be more connections than > concurrent threads. However, the test has been seen occasionally and > intermittently failing because it observed more connections than threads. The > test has some built-in logic to exclude connections that do not come from the > test itself, so external interference should not be the cause. > > The suspicion is that occasionally some connection might remain idle for more > than the keep-alive timeout, which then causes it to be closed, and allows > the client to open a new connection. > > This fix works this way: > > - first it adds some logic to figure out whether a Worker thread might have > remained idle for more than the keep-alive timeout > - then it takes this information into account when matching the number of > actual connections with the number of expected connection, > - additionally it reduces the keep-alive timeout to one second, and forces > some sleep on the client side after half the requests have been sent to > increase the probability that some connections will be idle long enough to > trigger the idle-time detection logic (as a means to test the fix itself). > > Finally it improves logging by adding more diagnosis (including human > readable time stamps), so that future failures, if any, will be easier to > diagnose. Note that reducing the keep-alive time to 1 second makes the test > run much faster even with the 1500ms sleep on the client side. > > With this fix I no longer observe the test failing. This pull request has now been integrated. Changeset: 8effaa8f Author: Daniel Fuchs <[email protected]> URL: https://git.openjdk.org/jdk/commit/8effaa8f1f550d2cd0ff369f99436a8a7401fa10 Stats: 256 lines in 1 file changed: 169 ins; 24 del; 63 mod 8223783: sun/net/www/http/HttpClient/MultiThreadTest.java sometimes detect threads+1 connections Reviewed-by: djelinski, michaelm ------------- PR: https://git.openjdk.org/jdk/pull/11268
