Uploaded image for project: 'Quarkus'
  1. Quarkus
  2. QUARKUS-6932

Handle backpressure whilst not on the event loop

XMLWordPrintable

      This is a follow up on b8801de since the check at
      if (Vertx.currentContext() == ((HttpServerRequestInternal) request).context()) {
      return false;
      } else { // NEVER TAKEN!
      doesn't seem taken.
      Additionally I see no point to accumulate the overflow ourself since:

      the event loop cannot be blocked, by definition (which means, no overflow, even now, on master)
      the worker threads just wait till there's enough available capacity in the write q

      FYI this code won't last past Vertx 5 because:

      Vertx has introduced synchronizing on HTTP connections at eclipse-vertx/vert.x@c0c1c59
      The existing VertxOutputStream code is relying on "extending" the atomicity of awaiting the write queue not be full (which is made of N operations vs the connection) relying on this implementation detail
      Vertx 5 has removed such synchronization

      Hopefully @vietj has a different and racy mechanism in Vertx 5 which will use a single method to do what we need here.
      Let's see if the CI is happy now 🗡️

      Fixes #50317

              jmartisk@redhat.com Jan Martiska
              msochure@redhat.com Miroslav Sochurek
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: