Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-8520

[Broker-J] ReadPendingException thrown by Broker-J intermittently



    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: qpid-java-broker-8.0.2
    • Fix Version/s: qpid-java-broker-8.0.5
    • Component/s: Broker-J
    • Labels:
    • Environment:

      Broker-J 8.0.2

      Spring Boot 3.2.2

      Docker Engine v20.10.5

      Testcontainers 1.15.1


      Our project is using the HTTPS management interface, using a REST client.  We've wrapped our qpid instance in a Docker container using testcontainers, and have a test that sets up and tears down different elements we utilise in our system with asserts that things are as we expected, all this over HTTPS between the local machine and the container. This works splendidly, except for the fact that we see intermittent errors in the test of the type

      java.nio.channels.ReadPendingException: null
      at org.eclipse.jetty.io.FillInterest.register(FillInterest.java:58)
      at org.eclipse.jetty.io.AbstractEndPoint.fillInterested(AbstractEndPoint.java:362)
      at org.eclipse.jetty.io.AbstractConnection.fillInterested(AbstractConnection.java:134)
      at org.eclipse.jetty.server.HttpConnection.onOpen(HttpConnection.java:505)
      at org.eclipse.jetty.io.ssl.SslConnection.onOpen(SslConnection.java:357)
      at org.apache.qpid.server.management.plugin.portunification.TlsOrPlainConnectionFactory$PlainOrTlsConnection.onOpen(TlsOrPlainConnectionFactory.java:166)
      at org.eclipse.jetty.io.SelectorManager.connectionOpened(SelectorManager.java:324)
      at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:368)
      at org.eclipse.jetty.io.ManagedSelector.access$2000(ManagedSelector.java:62)
      at org.eclipse.jetty.io.ManagedSelector$Accept.run(ManagedSelector.java:853)
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
      at org.apache.qpid.server.bytebuffer.QpidByteBufferFactory.lambda$null$0(QpidByteBufferFactory.java:464)
      at java.lang.Thread.run(Thread.java:745)

      This occurs directly after these log lines:

      2021-04-22 13:42:23,709 WARN [qtp1875836959-116] (o.e.j.i.FillInterest) - Read pending for null prevented AC.ReadCB@108ec429{HttpConnection@108ec429::DecryptedEndPoint@7cbac9d1{l=/,r=/,OPEN,fill=,flush=,to=2/30000}}
      2021-04-22 13:42:23,721 WARN [qtp1875836959-116] (o.e.j.i.SelectorManager) - Exception while notifying connection PlainOrTlsConnection@2fb30f4a<-org.apache.qpid.server.management.plugin.portunification.MarkableEndPoint@46d4f493

      From the client side log:

      org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://localhost:49201/api/latest/queue/default/localhost/": Remote host terminated the handshake; nested exception is javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake

      I am fully aware that this might be a bit too little to go by, but I have tried in to create a reproducible code snippet, but cannot find a way to make the error occur in a stable and reproducible way. I am also aware that this might be caused by a number of other things, but figured thia would be a good start to try to find out what to do about it.





            • Assignee:
              kyrre Kyrre
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created: