> **Problem** > When using HTTP/1.1 with HttpClient, it was observed that requests configured > with timeouts at build time fail with a HttpTimeoutException when they are > redirected to a separate URI by a server (status code 3xx on first response). > What should happen is that the second request response (so after receiving a > 3xx code) clears restarts the timer intially set. However, when > `responseTimerEvent` is registered for the first time, it is not unregistered > and cleared before starting a second timer. > > **Solution** > This fix addresses the issue by calling `cancelTimer()` in > `MultiExchange.java` whenever the `newRequest` reference is set to a non-null > value after calling `responseFilters(response)` on the initial response > received. This occurs in the case where a status code 3xx is received in the > initial response. When `cancelTimer()` is called, it now unreferences > `responseTimerEvent` after cancellation operations take place. > > While the fix for the issue was relatively straight forward, the regression > test is less so. I would point to to the comment located in > `RedirectTimeoutTest:L119` for an explanation of the testing method.
Conor Cleary has updated the pull request incrementally with one additional commit since the last revision: 8304701: Increased timeout values again for test stability ------------- Changes: - all: https://git.openjdk.org/jdk/pull/16689/files - new: https://git.openjdk.org/jdk/pull/16689/files/17eb74d2..0a456bfb Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=16689&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16689&range=01-02 Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/16689.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/16689/head:pull/16689 PR: https://git.openjdk.org/jdk/pull/16689
