- From: Christopher B Ferris <chrisfer@us.ibm.com>
- Date: Tue, 21 Feb 2006 10:11:37 -0500
- To: David Hull <dmh@tibco.com>
- Cc: "public-ws-addressing@w3.org" <public-ws-addressing@w3.org>, public-ws-addressing-request@w3.org
- Message-ID: <OFA898252D.86F675E6-ON8525711C.00523652-8525711C.00537543@us.ibm.com>
Given as the WS-RX specification isn't yet complete, I see no reason why we might not make a clarification to tighten things up and make the behavior unambiguous. Cheers, Christopher Ferris STSM, Emerging e-business Industry Architecture email: chrisfer@us.ibm.com blog: http://www.ibm.com/developerworks/blogs/dw_blog.jspa?blog=440 phone: +1 508 377 9295 public-ws-addressing-request@w3.org wrote on 02/21/2006 09:44:57 AM: > As I understand it, specifications distinguish between conforming > and non-conforming implementations, not between naive and non-naive > implementations. > > The pattern I gave, of C sending acks back on B's "back-channel", > would conform if WS-RX takes the view that anonymous AcksTo is > nothing special and WS-A changes its semantics to define anonymous > as always meaning the "back-channel". If you don't like that, you > don't specify "don't be naive", you tighten the semantics, right? > > As WS-A now stands, such a use of anonymous would be undefined, > forcing WS-RX to clarify what it actually means. WS-RX seems like > the better place to handle this. WS-A specifically takes on > request-response but otherwise just provides building blocks. > Whatever else we say about this, it seems pretty clear that AcksTo > and ReplyTo are two different beasts. We would like to be able to > use the underlying response message for both, but that doesn't give > them the same semantics. > > As an aside, the pattern I mentioned might actually be the Right > Thing, if A and B are coming from the same physical place and that > place's infrastructure knows about all active sequences. In that > case, you get twice as many chances to get acks back. Why wait > until I send an A message to get an A ack? That's why I talked > about "anonymous means back-channel" effectively tying together > everyone who used anonymous when sending to a given endpoint. This > tying together may or may not be good, depending on context, but I'm > pretty sure it's a consequence of that rule. > > Christopher B Ferris wrote: > > David, > > Please see my inlined comments below, > > Cheers, > > Christopher Ferris > STSM, Emerging e-business Industry Architecture > email: chrisfer@us.ibm.com > blog: http://www.ibm.com/developerworks/blogs/dw_blog.jspa?blog=440 > phone: +1 508 377 9295 > > public-ws-addressing-request@w3.org wrote on 02/21/2006 02:15:17 AM: > > > The more I ponder the problem of anonymous AcksTo, the more I think > > that anonymous can't quite be treated as just another EPR address. > > I'm posting this here because I think the situation is not unique to > > AcksTo or WS-RX. Rather, WS-RX happens to have presented the use > > case that flushes the issue out. Also, while I may have got the WS- > > RX use case wrong here, I believe the overall point is still of > > interest to WSA. Finally, there are clearly enough WS-RX folks in > > the audience here that if this is in fact relevant to WS-RX, I'm > > sure the news will find its way there. > > > > Here's the scenario: > > > > Suppose that A and B both want to use a reliable sequence to send > > messages to C. Each uses its own sequence. As I understand it, > > this is the normal case (as opposed to, say, A and B sharing the > > same sequence). Now further suppose that A and B both use anonymous > > for AcksTo. Given that acks for a given message could come back > > with a later message, the following could happen: > > A sends C message A1 > > C sends back a response with no acks > > B sends C message B1 > > C sends back a response with an ack to message A1 > > For that matter, if C isn't careful, it could send acks to some > > completely unrelated process that happened to be sending to it > > without even using WS-RX. > > Exsqueeze me? Why would it do that? Only the most naive implementation > would be written to arbitrarily send an ack on the HTTP response flow > (in the case of an HTTP binding) blindly, without consideration as to > the context. > > The RM Sequence provides the context... if a "request" message (oh how > I HATE that term) or more properly a SOAP envelope carried on the HTTP request > has a wsrm:Sequence header with wsrm:Identifier X, then the RMD > instructed to use the anon EPR for its wsrm:AcksTo can use the HTTP > response to any message, carrying that Sequence context, to send > a wsrm:SequenceAcknowledgement... either piggy-backed on an application-level > response, or in an infrastructure-manufactured SOAP envelope. > > Why is this so complicated? > > > > > So, in order for this to work, C has to be careful only to use > > anonymous AcksTo for replies to request messages that are part of > > the same sequence (by the way, how does C ack the last message of > > such a sequence if it doesn't know it's the last?). > > Well, of course. See above. The wsrm:Sequence/wsrm:Identifier provides > the needed context. > > > > > By contrast, it doesn't seem C would have to be so careful in the > > case where the AcksTo EPRs are not anonymous. Normally (and again > > I'm not a WS-RXpert) I would expect that A and B would use separate > > AcksTo addresses, and C would just send acks to the addresses it was > > I would agree that in the case of the non-anonymous EPR, that the RMD > *can* send acks for ANY Sequence that has a matching wsrm:AcksTo EPR (despite > the fact that there are no EPR comparison rules defined), however, in > practice, I see this as a rather esoteric use case. I envisage that > implementations will likely stick to the practice of dealing with > a single Sequence at a time, based upon the context of the > wsrm:Sequence/wsrm:Identifier contained in the message just received. > > > told to use. Even if A and B used the same AcksTo address and used > > the sequence number on the acks to sort out whose acks they were, > > they could do so without any help from C because the acks would at > > least always end up at the same destination. > > > > Another way to look at this is that using the same AcksTo for two > > different sequences ties the two sequences together and whoever's > > getting the acks has to know about both sequences. This would apply > > equally to anonymous and non-anonymous. I believe this handles most > > of the problem, but not all. First, this would require every sender > > that wants to use anonymous AcksTo with a given destination to know > > about every other one. Second, by itself it doesn't deal with > > senders that aren't even using WS-RX. I'm not sure the second > > problem is serious, but the first one seems like it might be. > > > > It also seems worth considering the case where A uses anonymous and > > B doesn't. If B is expecting acks at non-anonymous D, then it > > wouldn't normally be checking for acks in its responses, and neither > > could it be expected to know what to do with A's acks if it did > > notice them. C can send B's acks freely to D, but it has to be > > careful to send A's acks back only on responses to messages from A. > > See above. Only a naive implementation would do something this > inane. > > > > > Even if there turn out to be no serious issues here for WS-RX, it > > seems worth noting that trying to extend anonymous beyond the > > context of a single request-response message exchange effectively > > ties together all senders to a given destination into one virtual > > receiver for messages to anonymous. That is, a message sent to > > anonymous in such a scenario could arrive back at any sender. > > Sorry, I am not buying. There are no issues and I do not see any reason > to constrain the semantic of the anon URI to apply generally to an MEP > absent a context of a given MAP. It is the MAP that should define the > semantic of the context that applies. For wsa:ReplyTo and wsa:FaultsTo, > the WS-A is free to constrain the semantic to apply to the MEP. > For wsrm:AcksTo, I see no reason why the WS-RX TC can't assign the > semantic that constrains the set of SequenceAcknowledgements to those > with a Sequence identifier that match that of the received message. > > IMO, you are making this more complicated than it needs to be. > > We have demonstrated interop that was perfectly happy with the > status quo of the semantic of the anon URI as applies to the > wsrm:AcksTo. Why impose an unnecessary change?
Received on Tuesday, 21 February 2006 15:12:12 UTC