Hi Andrey, Thanks for the notice. I believe the variable is not needed, it's probably a copy-paste error. You will see that such a variable is also declared in the FixedLengthBodyParser where it's actually used.
The UnknownLenghtParser will parse the bytes until the connection is closed (or an exception occurs) - so `completed` is not really needed there. best regards, -- daniel On 18/08/2021 10:38, Andrey Turbanov wrote:
Hello During investigation of results of IDEA inspections I found suspicious code in a method 'jdk.internal.net.http.ResponseContent.UnknownLengthBodyParser#accept' https://github.com/openjdk/jdk/blob/master/src/java.net.http/share/classes/jdk/internal/net/http/ResponseContent.java#L492 boolean completed = false; try { if (debug.on()) debug.log("Parser got %d bytes ", b.remaining()); if (b.hasRemaining()) { // only reduce demand if we actually push something. // we would not have come here if there was no // demand. boolean hasDemand = sub.demand().tryDecrement(); assert hasDemand; breceived += b.remaining(); pusher.onNext(List.of(b.asReadOnlyBuffer())); } } catch (Throwable t) { if (debug.on()) debug.log("Unexpected exception", t); closedExceptionally = t; if (!completed) { onComplete.accept(t); } } Variable 'completed' has an initial value 'false' and never assigned again. Then it's checked in the 'catch' section. It seems it should be set to 'true' somewhere. Andrey Turbanov