Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.1-beta1
    • Labels:
      None
    • Environment:
      Operating System: All
      Platform: All

      Description

      Pipelining is currently employed by Mozilla based browsers, which are reported
      to gain some performance from it.

        Activity

        Ortwin Glück created issue -
        Henri Yandell made changes -
        Field Original Value New Value
        issue.field.bugzillaimportkey 22628 12333817
        Hide
        Roland Weber added a comment -

        This issue will be addressed by the HttpAsync component.

        Show
        Roland Weber added a comment - This issue will be addressed by the HttpAsync component.
        Roland Weber made changes -
        Link This issue incorporates HTTPASYNC-3 [ HTTPASYNC-3 ]
        Oleg Kalnichevski made changes -
        Assignee HttpComponents Dev [ httpclient-dev@jakarta.apache.org ]
        Hide
        Roland Weber added a comment -

        In order to enable pipelining in HttpClient, the connection management API and therefore HttpClient would have to be remodeled to a two-phase allocation of connections. First the connection is allocated for sending the request, then released for sending (unless there is an expect-continue handshake) and allocated for receiving the response. To avoid pointless sending of requests, the connection re-use strategy should make partial decisions based on the request alone, for example if there is a "connection: close" header. Authentication and secure tunnels add another layer of complexity to this problem.
        Many of the problems will have to be addressed in HttpAsync. Once we've learned how to handle pipelining there, we can attempt to bring it into the HttpClient.

        Show
        Roland Weber added a comment - In order to enable pipelining in HttpClient, the connection management API and therefore HttpClient would have to be remodeled to a two-phase allocation of connections. First the connection is allocated for sending the request, then released for sending (unless there is an expect-continue handshake) and allocated for receiving the response. To avoid pointless sending of requests, the connection re-use strategy should make partial decisions based on the request alone, for example if there is a "connection: close" header. Authentication and secure tunnels add another layer of complexity to this problem. Many of the problems will have to be addressed in HttpAsync. Once we've learned how to handle pipelining there, we can attempt to bring it into the HttpClient.
        Roland Weber made changes -
        Fix Version/s 5.0 [ 12312298 ]
        Fix Version/s 4.0 Final [ 12311094 ]
        Hide
        Oleg Kalnichevski added a comment -

        Actually, HttpCore NIO is fully HTTP pipelining capable. I just need to add ability to queue requests / responses to the default protocol handlers. So, we'll have a full-blown HTTP pipelining support in HttpCore 4.0

        Oleg

        Show
        Oleg Kalnichevski added a comment - Actually, HttpCore NIO is fully HTTP pipelining capable. I just need to add ability to queue requests / responses to the default protocol handlers. So, we'll have a full-blown HTTP pipelining support in HttpCore 4.0 Oleg
        Oleg Kalnichevski made changes -
        Link This issue incorporates HTTPASYNC-3 [ HTTPASYNC-3 ]
        Hide
        Jonathan Leibiusky added a comment -

        Are there any news on this? It seems like a really old issue.

        Show
        Jonathan Leibiusky added a comment - Are there any news on this? It seems like a really old issue.
        Mark Thomas made changes -
        Workflow jira [ 12362722 ] Default workflow, editable Closed status [ 12557864 ]
        Mark Thomas made changes -
        Workflow Default workflow, editable Closed status [ 12557864 ] jira [ 12581048 ]
        Mark Thomas made changes -
        Workflow jira [ 12581048 ] Default workflow, editable Closed status [ 12606831 ]
        Oleg Kalnichevski made changes -
        Project HttpComponents HttpClient [ 12310360 ] HttpComponents HttpAsyncClient [ 12311081 ]
        Key HTTPCLIENT-258 HTTPASYNC-8
        Workflow Default workflow, editable Closed status [ 12606831 ] jira [ 12635009 ]
        Affects Version/s 2.0 Beta 2 [ 12311083 ]
        Component/s HttpClient [ 12311010 ]
        Fix Version/s Future [ 12318075 ]
        Fix Version/s Future [ 12312298 ]
        Hide
        Jakub Skoczen added a comment -

        Guys, what is the status of this? Has that been implemented the HttpCore already?

        Show
        Jakub Skoczen added a comment - Guys, what is the status of this? Has that been implemented the HttpCore already?
        Hide
        Oleg Kalnichevski added a comment -

        HTTP request pipelining is partially supported by the HttpCore server side components. I am planning to enhance request pipelining on the server side in 4.3 and possibly add support for request pipelining on the client side.

        Oleg

        Show
        Oleg Kalnichevski added a comment - HTTP request pipelining is partially supported by the HttpCore server side components. I am planning to enhance request pipelining on the server side in 4.3 and possibly add support for request pipelining on the client side. Oleg
        Hide
        Philippe Marsteau added a comment -

        Is there any update/plan to add HTTP 1.1 pipelining support anytime soon? Is this already part of HttpAsyncClient module?

        Show
        Philippe Marsteau added a comment - Is there any update/plan to add HTTP 1.1 pipelining support anytime soon? Is this already part of HttpAsyncClient module?
        Hide
        Oleg Kalnichevski added a comment -

        No immediate plans. It will need to be implemented in HttpCore first.

        Oleg

        Show
        Oleg Kalnichevski added a comment - No immediate plans. It will need to be implemented in HttpCore first. Oleg
        Hide
        Oleg Kalnichevski added a comment -

        Support for client and server side request pipelining has landed in HttpCore SVN trunk. Feel free to start testing it early

        Sample code can be found here:

        http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/httpcore-nio/src/examples/org/apache/http/examples/nio/PipeliningHttpClient.java

        Oleg

        Show
        Oleg Kalnichevski added a comment - Support for client and server side request pipelining has landed in HttpCore SVN trunk. Feel free to start testing it early Sample code can be found here: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/httpcore-nio/src/examples/org/apache/http/examples/nio/PipeliningHttpClient.java Oleg
        Oleg Kalnichevski made changes -
        Fix Version/s 4.1-alpha1 [ 12326280 ]
        Fix Version/s Future [ 12318075 ]
        Hide
        Oleg Kalnichevski added a comment -

        11 years after marking this issue as resolved.

        Oleg

        Show
        Oleg Kalnichevski added a comment - 11 years after marking this issue as resolved. Oleg
        Oleg Kalnichevski made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            Ortwin Glück
          • Votes:
            5 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development