From cbdc7a6f88511a08800400edfbf13f6d3f7ad4f6 Mon Sep 17 00:00:00 2001 From: Daniel Fuchs Date: Fri, 3 Mar 2023 13:18:23 +0000 Subject: [PATCH] 8303481: CancelRequestTest assertTrue failing with AssertionError due to java.util.concurrent.CompletionException: java.io.EOFException: EOF reached while reading Reviewed-by: jpai, djelinski --- .../internal/net/http/frame/OutgoingHeaders.java | 4 ++++ .../test/lib/http2/Http2TestServerConnection.java | 5 ++++- .../lib/jdk/httpclient/test/lib/http2/Queue.java | 13 ++++++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/java.net.http/share/classes/jdk/internal/net/http/frame/OutgoingHeaders.java b/src/java.net.http/share/classes/jdk/internal/net/http/frame/OutgoingHeaders.java index 892b69ef393..ff2d403eb38 100644 --- a/src/java.net.http/share/classes/jdk/internal/net/http/frame/OutgoingHeaders.java +++ b/src/java.net.http/share/classes/jdk/internal/net/http/frame/OutgoingHeaders.java @@ -80,4 +80,8 @@ public class OutgoingHeaders extends Http2Frame { return system; } + @Override + public String toString() { + return "OutgoingHeaders()"; + } } diff --git a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java index 94f11e843ce..17bdeee7e67 100644 --- a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java +++ b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2TestServerConnection.java @@ -828,7 +828,10 @@ public class Http2TestServerConnection { throw new IOException("Unexpected frame"); } } else { - q.put(frame); + if (!q.putIfOpen(frame)) { + System.err.printf("Stream %s is closed: dropping %s%n", + stream, frame); + } } } } diff --git a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Queue.java b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Queue.java index 358d6c509f6..791067381d1 100644 --- a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Queue.java +++ b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Queue.java @@ -58,17 +58,24 @@ public class Queue implements ExceptionallyCloseable { return closing; } + public synchronized boolean isOpen() { + return !closed && !closing; + } + public synchronized void put(T obj) throws IOException { - Objects.requireNonNull(obj); - if (closed || closing) { + if (!putIfOpen(obj)) { throw new IOException("stream closed"); } + } + public synchronized boolean putIfOpen(T obj) { + Objects.requireNonNull(obj); + if (!isOpen()) return false; q.add(obj); - if (waiters > 0) { notifyAll(); } + return true; } // Other close() variants are immediate and abortive