Uploaded image for project: 'HttpComponents HttpCore'
  1. HttpComponents HttpCore
  2. HTTPCORE-51

My HttpRequestExecutionHandler.submitRequest is being called repeatedly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 4.0-alpha4
    • HttpCore NIO
    • None
    • Windows Vista

    Description

      In my test suite, I'm sending a single post, but I'm finding that my HttpRequestExecutionHandler.submitRequest handler is being called multiple times. I think I've tracked it down to DefaultNHttpClientConnection.productOutput:

      public void produceOutput(final NHttpClientHandler handler) {
      try {
      if (this.outbuf.hasData())

      { this.outbuf.flush(this.session.channel()); <<--- this is called }

      if (!this.outbuf.hasData()) {
      if (this.closed)

      { this.session.close(); resetOutput(); return; }

      else {
      if (this.contentEncoder != null) {
      handler.outputReady(this, this.contentEncoder);
      if (this.contentEncoder.isCompleted())

      { resetOutput(); <<<<----- then this }

      }
      }
      if (this.contentEncoder == null && !this.outbuf.hasData())

      { this.session.clearEvent(EventMask.WRITE); }

      }
      } catch (IOException ex)

      { handler.exception(this, ex); }

      finally

      { // Finally set buffered output flag this.hasBufferedOutput = this.outbuf.hasData(); }

      if (this.request == null && !this.closed)

      { handler.requestReady(this); <<<--- then this }

      }

      The sequence of events is that my submitRequest is called once, then when the channel becomes writable, produceOutput is called. It's a small request (3 bytes of content), so the first branch is followed and outbuf is flushed. Then there is no more data, and the second branch is called, where resetOutput is called, but the method doesn't return. Then, at the bottom of produceOutput, handle.requestReady is called again, since resetOutput set request to null.

      Am I doing something wrong, or is there a bug here?

      Attachments

        Activity

          People

            olegk Oleg Kalnichevski
            awallgren Anders Wallgren
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: