- From: <noah_mendelsohn@us.ibm.com>
- Date: Sun, 14 Apr 2002 08:02:25 -0400
- To: "Williams, Stuart" <skw@hplb.hpl.hp.com>
- Cc: "'xml-dist-app@w3.org'" <xml-dist-app@w3.org>
In case it's not obvious, among the reasons that deadlock is possible with overlap of response with request: Consider a streaming service. Perhaps it takes in a long stream of characters, uppercases them, and sends them back. The server is coded to start sending the response before the request is fully received. This is allowed, but not mandated by HTTP (as an example of an underlying protocol). The problem is that success depends on the client being coded to deal with the overlap as well. If you have client built in a more obvious way, I.e. to not start looking for the response before the request is complete, then deadlock can result: the response is streaming back, and the client won't read any of it. Gradually the response stream backs up, and the server is unable to write to it. Maybe or maybe not the server buffers more response for awhile, but sooner or later it has to stop reading the request. Now the request stream backs up and we have deadlock. Even if deadlock is not a problem (client and server are both smart about streaming), getting the state machine tables just right is tricky with so much asynchrony. So, this is a case of a valuable capability, that is not absolutely mandatory on day 1 (my opinion). It will probably be of great value to a small number of clients and servers, and a source of many bugs and testability problems to the others. It will be very hard to spec well. I have no clearly compelling suggestion, but my current leaning would be: have the base binding not stream. I think (not sure) we could always add a feature to enable overlap, possibly signaled by a header sent from the client (which would ensure the client's commitment to avoid deadlock). It would also allow us to write the complex version of the spec later, I think. Does this work? ------------------------------------------------------------------ Noah Mendelsohn Voice: 1-617-693-4036 IBM Corporation Fax: 1-617-693-8676 One Rogers Street Cambridge, MA 02142 ------------------------------------------------------------------
Received on Sunday, 14 April 2002 08:20:34 UTC