hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Kalnichevski (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HTTPCORE-51) My HttpRequestExecutionHandler.submitRequest is being called repeatedly
Date Sun, 04 Mar 2007 13:03:50 GMT

     [ https://issues.apache.org/jira/browse/HTTPCORE-51?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Oleg Kalnichevski updated HTTPCORE-51:
--------------------------------------

        Fix Version/s:     (was: 4.0-alpha5)
                       4.0-alpha4
             Assignee: Oleg Kalnichevski
    Affects Version/s:     (was: 4.0-alpha5)

> My HttpRequestExecutionHandler.submitRequest is being called repeatedly
> -----------------------------------------------------------------------
>
>                 Key: HTTPCORE-51
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-51
>             Project: HttpComponents Core
>          Issue Type: Bug
>          Components: HttpCore NIO
>         Environment: Windows Vista
>            Reporter: Anders Wallgren
>         Assigned To: Oleg Kalnichevski
>             Fix For: 4.0-alpha4
>
>
> 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?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpcomponents-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpcomponents-dev-help@jakarta.apache.org


Mime
View raw message