> This fix revisits an assertion that has been observed failing in > ResponseSubscribers.HttpResponseInputStream. > > The HttpResponseInputStream has the logic to wait until a buffer has been > taken out of the queue before requesting a new one. Therefore there should at > most be one byte buffer in the queue, except in the case of error (or > asychronous close), where a LAST_LIST sentinel is inserted in the queue to > unblock the consumer of the input stream, which might be blocked in > queue.take(). > > The HttpResponseInputStream thus asserts, when processing a subscription, > that the remaining capacity of the queue should be greater than 1 (unless > already closed), to ensure that there will be room for the LAST_LIST > sentinel. However, in case of asynchronous shutdown of the executor, it's > possible that the subscriber will be marked failed and the LAST_LIST sentinel > inserted into the queue before/at the same time that the subscription is > processed. > > This fix proposes to relax the assertion to only fire if closed == false and > failed == null and capacity <= 1 when processing the subscription
Daniel Fuchs has updated the pull request incrementally with one additional commit since the last revision: Update src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java ------------- Changes: - all: https://git.openjdk.org/jdk/pull/12677/files - new: https://git.openjdk.org/jdk/pull/12677/files/28860b0c..e4a28276 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=12677&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=12677&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/12677.diff Fetch: git fetch https://git.openjdk.org/jdk pull/12677/head:pull/12677 PR: https://git.openjdk.org/jdk/pull/12677
