W3C home > Mailing lists > Public > ietf-http-wg-old@w3.org > January to April 2000

RE: On pipelining

From: Larry Masinter <LM@att.com>
Date: Fri, 21 Jan 2000 08:09:38 -0800
To: "Fred Bohle" <fbohle@neonsys.com>, "Daniel Hellerstein" <DANIELH@mailbox.econ.ag.gov>
Cc: "HTTP Working Group" <http-wg@hplb.hpl.hp.com>
Multi-threading can be done for requests that come in over the
same connection; this seems valuable, especially if each of the
requests require computation or communication with other service
elements in the network.

For example, you could have a server with a request thread and
a response thread, where requests would spawn additional threads
to handle them if necessary (e.g., if the request was for a
CGI or non-local resource) and then queue the results for the
response thread.

#    I would suggest that the multi-threading be done at the connection
# not at the request level.  That way you can be sure the requests are
handled in their
# proper order.  Multi-threading at the request level would require some
other mechanism
# to be sure that they are executed in the same order, defeating the purpose
of multi-
# threading.  At a minimum, you must return the responses in the same order
that you
# received them.  Again multi-threading the requests would require a
mechanism to
# ensure this order, minimizing the benefits of such multi-threading.

 #     Consider three requests that:
# 1. display a database item.
# 2. update that database item.
# 3. display the same database item.

# The intent here is to show the before and after views of the database
item. In a
# multi-threaded request server, if the requests execute in 1,3,2 order, or
2,1,3 order,
# the before/after sense of the display is lost.  Note that this is true
even if you force
# the order of responses to be reshuffled as 1,2,3.

#      So, I don't see how you can make it work if you multi-thread the


   Clients SHOULD NOT pipeline requests using non-idempotent methods or
   non-idempotent sequences of methods (see section 9.1.2). Otherwise, a
   premature termination of the transport connection could lead to
   indeterminate results. A client wishing to send a non-idempotent
   request SHOULD wait to send that request until it has received the
   response status for the previous request.

It is not the server's responsibility to insure consistency, and a server
implementation that multithreads the responses would seem to be valid.
Received on Friday, 21 January 2000 16:13:39 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 14:40:24 UTC