H3MultipleConnectionsToSameHost.java#useNioSelector intermittent fails after too many probe time outs

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: P4
    • None
    • Affects Version/s: 27
    • Component/s: core-libs
    • Environment:
    • x86_64
    • linux

      Test java/net/httpclient/http3/H3MultipleConnectionsToSameHost.java#useNioSelector intermittent fails, the test log snippet show below:

      INFO: QUIC: QuicServerConnection(49) connection has now transitioned to draining state
      tt caught
      java.util.concurrent.CompletionException: java.io.IOException: Connection closed by server peer: INTERNAL_ERROR
      at java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323)
      at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:412)
      at java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:421)
      at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1173)
      at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531)
      at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2221)
      at java.net.http/jdk.internal.net.http.Http3ExchangeImpl.cancelImpl(Http3ExchangeImpl.java:734)
      at java.net.http/jdk.internal.net.http.Http3Connection.lambda$close$1(Http3Connection.java:676)
      at java.base/java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4811)
      at java.net.http/jdk.internal.net.http.Http3Connection.close(Http3Connection.java:676)
      at java.net.http/jdk.internal.net.http.Http3Connection.close(Http3Connection.java:646)
      at java.net.http/jdk.internal.net.http.Http3Connection.onDecoderStreamsFailed(Http3Connection.java:1393)
      at java.net.http/jdk.internal.net.http.http3.streams.QueuingStreamPair.localWriterLoop(QueuingStreamPair.java:124)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:182)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:207)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:280)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:233)
      at java.net.http/jdk.internal.net.http.http3.streams.QueuingStreamPair.submitData(QueuingStreamPair.java:103)
      at java.net.http/jdk.internal.net.http.qpack.Decoder.submitDecoderInstruction(Decoder.java:308)
      at java.net.http/jdk.internal.net.http.qpack.Decoder.cancelStream(Decoder.java:187)
      at java.net.http/jdk.internal.net.http.Http3Connection$Http3StreamDispatcher.onStreamAbandoned(Http3Connection.java:830)
      at java.net.http/jdk.internal.net.http.http3.streams.PeerUniStreamDispatcher.abandon(PeerUniStreamDispatcher.java:220)
      at java.net.http/jdk.internal.net.http.http3.streams.PeerUniStreamDispatcher.abort(PeerUniStreamDispatcher.java:241)
      at java.net.http/jdk.internal.net.http.http3.streams.PeerUniStreamDispatcher.dispatch(PeerUniStreamDispatcher.java:121)
      at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:884)
      at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:862)
      at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531)
      at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2221)
      at java.net.http/jdk.internal.net.http.http3.streams.QuicStreamIntReader.dispatch(QuicStreamIntReader.java:150)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:182)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
      at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:207)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
      at java.base/java.lang.Thread.run(Thread.java:1527)
      Caused by: java.io.IOException: Connection closed by server peer: INTERNAL_ERROR
      at java.net.http/jdk.internal.net.http.quic.TerminationCause.toReportedCause(TerminationCause.java:129)
      at java.net.http/jdk.internal.net.http.quic.TerminationCause.<init>(TerminationCause.java:56)
      at java.net.http/jdk.internal.net.http.quic.TerminationCause$TransportError.<init>(TerminationCause.java:158)
      at java.net.http/jdk.internal.net.http.quic.TerminationCause.forTransportError(TerminationCause.java:92)
      at java.net.http/jdk.internal.net.http.quic.ConnectionTerminatorImpl.drain(ConnectionTerminatorImpl.java:295)
      at java.net.http/jdk.internal.net.http.quic.ConnectionTerminatorImpl.incomingConnectionCloseFrame(ConnectionTerminatorImpl.java:142)
      at java.net.http/jdk.internal.net.http.quic.QuicConnectionImpl.incoming1RTTFrame(QuicConnectionImpl.java:3962)
      at java.net.http/jdk.internal.net.http.quic.QuicConnectionImpl.processOneRTTPacket(QuicConnectionImpl.java:2131)
      at java.net.http/jdk.internal.net.http.quic.QuicConnectionImpl.processDecrypted(QuicConnectionImpl.java:1996)
      at java.net.http/jdk.internal.net.http.quic.QuicConnectionImpl.decrypt(QuicConnectionImpl.java:768)
      at java.net.http/jdk.internal.net.http.quic.QuicConnectionImpl.internalProcessIncoming(QuicConnectionImpl.java:1931)
      at java.net.http/jdk.internal.net.http.quic.QuicConnectionImpl.incoming(QuicConnectionImpl.java:728)
      ... 6 more

      "entering closing state" relates logs:

      > grep "entering closing state" 219.log | sed -E "s|\([0-9]+\)||" | sort -u
      INFO: QUIC: QuicClientConnection entering closing state, code (app layer) 0x100 - H3 connection closed - no error
      INFO: QUIC: QuicServerConnection entering closing state, code 0x1 - java.io.IOException: QuicServerConnection(8): Too many probe time outs (APPLICATION: backoff 1024, duration PT1M44.32S, QuicRttEstimatorState[latestRttMicros=21059, minRttMicros=296, smoothedRttMicros=27687, rttVarMicros=18547, rttSampleCount=1945])

            Assignee:
            Daniel Jelinski
            Reporter:
            Sendao Yan
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: