OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ws-tx message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [ws-tx] Re: Editorializing on MEPs etc


Mark:

I agree with you.  I included that text mainly for completeness, given
the earlier discussion concerning the client using relates-to vs.
refParams to correlate the response.  I wanted to be clear that both
mechanisms were equally viable.

As stated today on the call, I am largely ambivalent to the text that
replays WS-A, erring on the side of keeping it in order to facilitate
interop.  (As a side note, our experience in general interop testing is
that you can never be too clear about what we expect people's underlying
WS-A implementations to do.)

-----Original Message-----
From: Mark Little [mailto:mark.little@jboss.com] 
Sent: Thursday, March 09, 2006 4:13 AM
To: Max Feingold
Cc: ws-tx@lists.oasis-open.org
Subject: Re: [ws-tx] Re: Editorializing on MEPs etc

Max, once comment:

* MUST include the reference parameter elements from the request's 
wsa:ReplyTo header in their header blocks.


Why do we have to be explicit about this? It's stated in the 
WS-Addressing specification anyway. For example, from the 2004/08 
edition, which we still use in the current specs:

    * Each [reference property] and [reference parameter] element
      becomes a header block in the SOAP message. The element
      information item of each [reference property] or [reference
      parameter] (including all of its [children], [attributes] and
      [in-scope namespaces]) is to be added as a header block in the new
      message.


Which seems pretty explicit to me.

Mark.



Max Feingold wrote:

> To be more crisp about what I am proposing, I have created the 
> attached document. It contains a proposed division of the text in 
> WS-AT's section 9 between WS-C and WS-AT (and eventually WS-BA).
>
> The change markers represent the differences from the status quo for 
> each spec's allotted portion. The highlighted text represents 
> potentially duplicate text from WS-Addressing that we could consider 
> eliding.
>
> Finally, I have included an amended WS-AT coordinator state table with

> change markers representing the required changes to correctly process 
> duplicate RegisterResponse messages.
>
>
------------------------------------------------------------------------
>
> *From:* Max Feingold
> *Sent:* Friday, March 03, 2006 1:47 PM
> *To:* Alastair Green; ws-tx@lists.oasis-open.org
> *Subject:* RE: [ws-tx] Re: Editorializing on MEPs etc
>
> In my view, modeling Register / RegisterResponse using the standard 
> WS-A RR MEP is simply the most natural way to represent the pattern. 
> By composing with WS-A's definition of the MEP, we simply re-use 
> existing art and compose with a pattern that /every WS-A stack /is 
> likely to implement anyway.
>
> I think we are overcomplicating the issue by bringing up requester 
> correlation as an interop problem. I do not believe it is within the 
> scope of interoperability to define how a requester correlates and 
> routes a response message. By re-using the WS-A RR MEP, we are simply 
> stating the following principles:
>
>     * Request messages MUST have a wsa:MessageId.
>     * Request messages MUST have a wsa:ReplyTo
>     * Response messages MUST have a wsa:RelatesTo built from the
>       request's MessageId.
>     * Response messages MUST contain any RefParams provided in the
>       request's RelatesTo.
>
> This is simply a restatement of WS-A. We may wish to be more or less 
> verbose in WS-C when indicating that we conform to this pattern. The 
> current text in WS-AT opted for verbosity and re-statement.
>
> Now, from the perspective of interoperability, a conformant server 
> simply has to follow these rules when composing replies. A conformant 
> client, however, can implement reply correlation as it sees fit. It 
> can use the MessageId, its own RefParams or both at the same time. 
> It's an implementation detail. Some WS-A stacks will include a 
> built-in RR implementation that manages a vector of MessageIds. Others

> will not, so the WS-C implementer will use some form of manual 
> correlation. Either approach is fine and will be interoperable.
>
> Concerning the question of transport-duplicate messages, I think we 
> have to (perhaps reluctantly) conclude that they need to be included 
> in the state table of any protocol that does not explicitly call out a

> dependency on an at-most-once transport. Fortunately, as Ian has 
> indicated, we can trivially re-use the existing 'deliberate' duplicate

> handling to deal with transport duplicates. That leaves the question 
> of duplicate RegisterResponse in WS-AT, which is not currently handled

> correctly.
>
> In my view, all this calls for the following actions to resolve this 
> issue:
>
>    1. Move the text relating to the RR MEP from WS-AT to WS-C.
>       /Remove/ the text that is redundant with what WS-A already says
>       wrt message headers. Simply reference the appropriate WS-A text
>       or supplement it where it is underspecified. (Remember that
>       we're composing with WS-A 2004/08 at the moment.)
>    2. Amend the WS-AT participant view state table to ignore duplicate
>       RegisterResponse messages.
>    3. Decide where to put the one-way message definitions. I would
>       prefer to keep them in the derived specs, based on the factoring
>       principles that we have consistently applied. However, it's
>       largely an editorial question so I don't feel too strongly about
it.
>
>
------------------------------------------------------------------------
>
> *From:* Alastair Green [mailto:alastair.green@choreology.com]
> *Sent:* Thursday, March 02, 2006 8:49 AM
> *To:* Andrew Wilkinson3
> *Cc:* ws-tx@lists.oasis-open.org
> *Subject:* [ws-tx] Re: Editorializing on MEPs etc
>
> Andrew,
>
> [I'm going to put this exchange out onto the main list, because I 
> think we may need some guidance.]
>
> Aha, a penny has dropped.
>
> Are you are thinking of a situation where a set of RegisterResponses 
> are coming back to the same ReplyTo EPR (acting as a reply gateway for

> several participants)? I have been assuming that we ask for a reply to

> e.g. the ParticipantProtocolService EPR (or some EPR that maps it 
> one-to-one). i.e that the EPR is participant-specific.
>
> In other words, in your view, the message id is a kind of explicit 
> universally unique participant id :-) .
>
> If the reply EPR is per-participant then correlation occurs by virtue 
> of delivering RR to the per-participant EPR, and message id is
irrelevant.
>
> If the reply EPR is not, then we can't ignore (or dispense with) the 
> message id.
>
> If we expect the reply EPR to incorporate enough information to lead 
> us to the participant behind the scenes, then I don't see what the 
> message id is doing for us. Explicit participant ids are unpopular in 
> this committee, but in this case you'd like to keep one as an 
> alternative means of correlation to the use of EPRs?
>
> If that is the case, then you are right: we cannot make the MEP a free

> choice.
>
> Either way, we may need some kind of additional spec statement.
>
> The rule in my mind has been: that the reply-to EPR supplied in the 
> header of Register will allow the reply (RegisterResponse) to be 
> unambigously identified with/correlated with the Participant, as 
> defined or identified by the value of ParticipantProtocolService EPR
>
> The rule in the existing spec's mind, as it were, is that the 
> combination of reply-to EPR and Register message id is sufficient to 
> allow the recipient of RR to correlate it with the value of the 
> ParticipantProtocolService EPR.
>
> By the way, this discussion is forcing me to read WS-Addressing with 
> ever greater care and attention. Two points:
>
> 1) I think that we have to obey a reply-to EPR if we given one. This 
> directly relates to the definition of the terminal and non-terminal 
> messages, wihich currently (WS-AT ll. 445-446), says that the use of 
> the reply-to EPR is optional.
>
> 2) I also think that the WS-A spec is ambiguous (at least) on the 
> following point: it could be read to say -- if you are sending a reply

> you must state the relationship of this response message to the 
> stimulant message, i.e. that you have to use relates-to. I'm not sure 
> that's what it really means to say, but it does imply it quite 
> strongly. This stands at odds with the current WS-A Section 9 rules 
> for non-terminal messages.
>
> Yours,
>
> Alastair
>
>
> Andrew Wilkinson3 wrote:
>
>Alastair,
>
> 
>
>I don't believe we can make use the RR MEP optional for the 
>
>register/registerResponse exchange as it would bring with it unwanted 
>
>interop complications.
>
> 
>
>Observing that the only real difference between the RR and one-way MEPs
is 
>
>the inclusion of a relates to header in a RR response message imagine
two 
>
>separate implementations, one which uses the RR MEP for register / 
>
>register response, the other which uses the one-way MEP. The 
>
>implementation using the RR MEP sends a register request and stores the

>
>WSA uid of the message which it will subsequently use to correlate the 
>
>reply. The implementation using the one-way MEP receives this message
and 
>
>replies, the relatesTo header is not included in the message. The
register 
>
>response message is received but without a relatesTo entry in the
header 
>
>the implementation is unable to correlate it with the register message
- 
>
>at this point we're broken. For this reason I believe that we need to
make 
>
>a definite statement about the use of the RR MEP and, in the interests
of 
>
>not unnecessarily perturbing the specs, that statement should be that
the 
>
>register / registerResponse exchange MUST be conducted using the RR
MEP.
>
> 
>
>Andy
>
> 
>
> 
>
> 
>
> 
>
>Alastair Green <alastair.green@choreology.com>
<mailto:alastair.green@choreology.com> 
>
>01/03/2006 20:42
>
> 
>
>To
>
>Andrew Wilkinson3/UK/IBM@IBMGB
>
>cc
>
>jharby@gmail.com <mailto:jharby@gmail.com>, Mark Little
<mark.little@jboss.com> <mailto:mark.little@jboss.com>, Max Feingold 
>
><Max.Feingold@microsoft.com> <mailto:Max.Feingold@microsoft.com>,
Thomas Freund <tjfreund@us.ibm.com> <mailto:tjfreund@us.ibm.com>
>
>Subject
>
>Re: Editorializing on MEPs etc
>
> 
>
> 
>
> 
>
> 
>
> 
>
> 
>
>Andrew,
>
> 
>
>On the procedural point, as already expressed, I agree.
>
> 
>
>Your proposal  on 2. was my initial inclination.
>
> 
>
>I would be more open to it, if we were to make use of RR MEP optional 
>
>for WS-C (i.e. that implementers can choose either one-way or RR MEP
for 
>
>the WS-C exchanges). That would be a good move, in my view, as RR MEP
is 
>
>a "Habsburg's tail" (a vestigial organ with no current function: the 
>
>extra verterbra that the Habsburg royal family allegedly often 
>
>possessed), and would fully justify the positioning of the 
>
>terminal/non-terminal definition in the base, WS-C, spec.
>
> 
>
>Alastair
>
> 
>
>Andrew Wilkinson3 wrote:
>
>  
>
>>I think that we should be careful not to exceed our remit when
producing 
>>
>>    
>>
> 
>
>  
>
>>text to address issue 9. If the resolution to issue 007 has exposed a 
>>
>>problem with the WS-AT state tables then I believe it would be 
>>
>>procedurally correct to raise a seperate issue to address it rather
than 
>>
>>    
>>
> 
>
>  
>
>>trying to resolve multiple issues under issue 009.
>>
>> 
>>
>>I would like to suggest an alternative to Alastair's 2. below and that

>>
>>    
>>
>is 
>
>  
>
>>that we produce a set of definitions in WS-C that defines use of the
RR 
>>
>>MEP and the one-way MEP including defintions of terminal and 
>>
>>    
>>
>non-terminal 
>
>  
>
>>messages. While WS-C doesn't use the one-way MEP I believe there's
some 
>>
>>value in attempting to produce a list of commonly used MEPs within
WS-C 
>>
>>which can be referenced by other specs. Whether or not we attempt to 
>>
>>    
>>
>make 
>
>  
>
>>this list exhaustive is a point for discussion. Again, this is
possibly 
>>
>>something that should be done under a separate issue is it's arguably 
>>
>>    
>>
>not 
>
>  
>
>>directly related to the RR MEP - issue 011 may well be more
appropriate.
>>
>> 
>>
>>Andy
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>>Alastair Green <alastair.green@choreology.com>
<mailto:alastair.green@choreology.com> 
>>
>>01/03/2006 16:51
>>
>> 
>>
>>To
>>
>>Mark Little <mark.little@jboss.com> <mailto:mark.little@jboss.com>
>>
>>cc
>>
>>Thomas Freund <tjfreund@us.ibm.com> <mailto:tjfreund@us.ibm.com>,
Andrew Wilkinson3/UK/IBM@IBMGB, 
>>
>>jharby@gmail.com <mailto:jharby@gmail.com>, Max Feingold
<Max.Feingold@microsoft.com> <mailto:Max.Feingold@microsoft.com>
>>
>>Subject
>>
>>Re: Editorializing on MEPs etc
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>>Hi Mark,
>>
>> 
>>
>>Sorry, I don't think we can ignore the the duplicate RegisterResponse 
>>
>>issue or hope it will be dealt with at the infrastructure level
without 
>>
>>    
>>
>a 
>
>  
>
>>bit of extra specification, in WS-AT and WS-BA.
>>
>> 
>>
>>To recap: duplicate Registers are deemed to be OK by resolution of
007: 
>>
>>the Coordinator generates a new EPR for the deemed "new participant".
>>
>> 
>>
>>Duplicate registers can arise either by impatient retry, or by
transport 
>>
>>    
>>
> 
>
>  
>
>>redelivery. The ensuing RegisterResponses will both be delivered to
the 
>>
>>same EPR, so the receiving end can work out that it's received one
twice 
>>
>>    
>>
> 
>
>  
>
>>(ignore the second one).
>>
>> 
>>
>>The rule is: if an RR message is received twice targeted on the same
EPR 
>>
>>    
>>
> 
>
>  
>
>>then it has to be thrown away. This is the same kind of rule that is 
>>
>>expressed in the WS-AT state tables for e.g. duplicate Prepares. Not 
>>
>>    
>>
>quite 
>
>  
>
>>the same -- the action is not to resend a response, but the fact that 
>>
>>    
>>
>this 
>
>  
>
>>may happen has to be captured somewhere.
>>
>> 
>>
>>As Max points out, the current PV state table assumes that 
>>
>>RegisterResponse will arrive once. It doesn't cope with duplicate 
>>
>>RegisterResponses.
>>
>> 
>>
>>This is only OK if the "throw away" (no-op) rule is stated elsewhere. 
>>
>> 
>>
>>Here are two implementaton strategies that might be adopted:
>>
>> 
>>
>>A. Set a participant state machine to a state of "initial" or 
>>
>>"registering", and send Register to C. Keep a vector of all message
ids 
>>
>>for all Registers sent for the current P EPR, with a vector status of 
>>
>>"live". If a RegisterResponse arrives whose reply-to value is equal to

>>
>>    
>>
>one 
>
>  
>
>>of the stored message ids, and the vector is "live" then set the 
>>
>>participant state machine to "active", mark the vector as "dead". If
the 
>>
>>    
>>
> 
>
>  
>
>>RR arrives when the vector is "dead" then ignore the inbound message 
>>
>>(no-op). [This is very artificial: I am trying to imagine why and how 
>>
>>    
>>
>you 
>
>  
>
>>would actually use the values of message id and reply to.]
>>
>> 
>>
>>B. Set a participant state machine to a state of "initial" or 
>>
>>"registering" and send Register to C. If a RegisterResponse arrives at

>>
>>    
>>
>the 
>
>  
>
>>current P EPR, and the state machine is in state "registering" set the

>>
>>state machine state to "active", and proceed. If an RR arrives when
the 
>>
>>state machine is "active" then ignore the inbound message (no-op).
>>
>> 
>>
>>Logically, these are the same state machine. In the first case we have

>>
>>created an ancillary mini-machine that uses the Request-Reply MEP 
>>
>>features. In the second case the implementation state machine is a 
>>
>>    
>>
>direct 
>
>  
>
>>reflection of the logical state machine (that does not use the RR MEP 
>>
>>features). .
>>
>> 
>>
>>In my view the specification describe the logical state machine, and 
>>
>>should leave the implementation strategy to the implementer
(especially 
>>
>>    
>>
>as 
>
>  
>
>>implementation strategy A is so unnatural). 
>>
>> 
>>
>>Note that this problem is created by the fact that we are potentially 
>>
>>processing a sequence of messages, each with its own message id. There

>>
>>    
>>
>is 
>
>  
>
>>no concept in WS-A of such a sequence. Therefore, we need to say -- 
>>
>>    
>>
>here, 
>
>  
>
>>in these specs -- that such a sequence can exist, and how to deal with

>>
>>    
>>
>it. 
>
>  
>
>>Otherwise it becomes one of those cases where "we all know what we
meant 
>>
>>    
>>
> 
>
>  
>
>>to say", which is not a good practice. Right now, if you look at the
row 
>>
>>    
>>
> 
>
>  
>
>>RegisterResponse, column Active, in the 2PC PV of WS-AT you will read 
>>
>>    
>>
>the 
>
>  
>
>>following: Invalid State/Active. And according to the text immediately

>>
>>above, Invalid State means: "send an Invalid State fault" -- which is 
>>
>>    
>>
>not 
>
>  
>
>>what we want.
>>
>> 
>>
>>Either we change the state table, or we write text enforcing an
approach 
>>
>>    
>>
> 
>
>  
>
>>similar to strategy A. On grounds of consistency, minimalism, and 
>>
>>    
>>
>freedom 
>
>  
>
>>of implementation choice I would prefer to change the WS-AT state
table. 
>>
>>    
>>
> 
>
>  
>
>>It's an unfortunate fact that the RR MEP is not doing anything 
>>
>>    
>>
>fundamental 
>
>  
>
>>here except forcing implementers into a particular (unspecified) 
>>
>>behaviour. As I am tired of fighting City Hall, I don't mind acceding
to 
>>
>>    
>>
> 
>
>  
>
>>the (pointless, harmless) presence of RR MEP, but it isn't a finished 
>>
>>    
>>
>job, 
>
>  
>
>>unless we address this possibility in one of the two ways I have
raised. 
>>
>>    
>>
> 
>
>  
>
>>There is nothing in the current spec to stop a faithful implementation

>>
>>receiving a duplicate RR and directing it at a state machine that will

>>
>>fault it.
>>
>> 
>>
>>Furthermore, and taking off from another of your comments: we could 
>>
>>introduce a statement into WS-C (there is none there now) which stated

>>
>>that duplicate RegisterResponses are discarded. This would be contrary

>>
>>    
>>
>to 
>
>  
>
>>the resolution of 007 which contains the statement: 
>>
>>The manner in which the participant handles duplicate protocol
messages 
>>
>>depends
>>
>>on the specific coordination type and coordination protocol.
>>
>>Even if we introduced a textual statement on discards in the AT and BA

>>
>>specs, we are not finished with the problem. The whole
RegisterResponse 
>>
>>row of the AT state table has to cope with the arrival of a duplicate 
>>
>>RegisterResponse (late, out of order). At present that row incorrectly

>>
>>faults a late duplicate, when in fact the duplicate RR should always
be 
>>
>>thrown away. This strongly indicates that the AT state table is the 
>>
>>    
>>
>place 
>
>  
>
>>to define all duplicate RR behaviours.
>>
>> 
>>
>>I assume that the same will apply to BA.
>>
>> 
>>
>>Alastair
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>>Mark Little wrote: 
>>
>>Hi Alastair. Apologies for the delay in replying, but I was traveling 
>>
>>    
>>
>last 
>
>  
>
>>week. Comments inline ... 
>>
>> 
>>
>> 
>>
>>Hi, 
>>
>> 
>>
>>This mail is being sent to everyone who is an editor of WS-C, WS-AT or

>>
>>WS-BA. 
>>
>> 
>>
>>I've picked up the AI from the TX TC meeting of 23 Feb to propose (in 
>>
>>conjunction with you the editors) a concrete proposal for 009, based
on 
>>
>>the premise that the RR MEP is going to stay. 
>>
>> 
>>
>>To kick this off, before putting work into writing a concrete change 
>>
>>proposal, I want to suggest how to address this in principle. Please
let 
>>
>>    
>>
> 
>
>  
>
>>me know if you agree, disagree, have amendments to this approach. 
>>
>> 
>>
>>1. The RR MEP is primarily used by WS-Coordination: the parts of WS-AT

>>
>>Section 9 that deal with that MEP should be moved to WS-C. There are 
>>
>>normative references to the effect of Register/RegisterResponse in the

>>
>>WS-AT state tables, but these references have nothing to do with the 
>>
>>character of these messages as RR MEP messages. 
>>
>> 
>>
>>Agreed. Are you also proposing updating the state table in WS-C to
cover 
>>
>>    
>>
> 
>
>  
>
>>the WS-AT case you mentioned above? 
>>
>> 
>>
>> 
>>
>>2. The one-way MEP is not used by WS-C, but is used by WS-AT and
WS-BA. 
>>
>>I would suggest that we produce text which covers the use of this MEP,

>>
>>and reproduce it in both specs separately. Alternative would be to put

>>
>>the text in WS-AT and then cross-reference in WS-BA. In this context I

>>
>>think it would be easier to cut-and-paste than do an x-ref (section 
>>
>>numbers will change etc). 
>>
>> 
>>
>>I'd go with copy-and-paste too. 
>>
>> 
>>
>> 
>>
>>3. I would like you to revisit, if you get a chance, the original 009 
>>
>>issue to see what I proposed in terms of wording re terminal and 
>>
>>non-terminal. There was a bit of discussion on e-mail between Tom and 
>>
>>me, back in November or December, about refining that. I'd like to 
>>
>>create consensus between us on what the shape of that rewording should

>>
>>be, if rewording is needed. 
>>
>> 
>>
>>Please note that I believe that the outcome of the resolution of 007
is 
>>
>>that the RR MEP message-id based correlation need never be used, and
is 
>>
>>therefore fundamentally pointless (if harmless). The rules for
duplicate 
>>
>>    
>>
> 
>
>  
>
>>processing are partly expressed in the existing WS-AT state tables,
but 
>>
>>need amplification (i..e 007 is not fully resolved, in respect of 
>>
>>duplicate Register/RegisterResponse processing). I would welcome 
>>
>>contrary comments if anyone believes we need to say anything about the

>>
>>use of the message-id/reply-to features beyond what is currently
stated 
>>
>>in WS-AT S. 9, i.e. that they have to be present (even if they need 
>>
>>never be used). You could say something like: you can use the reply-to

>>
>>to detect duplicates RRs and therefore eliminate the message before it

>>
>>hits the P state machine, but in specification terms that is just a 
>>
>>restatement of the 2PC PV state table (if it were correctly
specified). 
>>
>> 
>>
>>I would have thought that we can ignore duplicate detection and 
>>
>>elimination at the level of WS-A: surely that will be taken care of by

>>
>>    
>>
>the 
>
>  
>
>>"underlying" infrastructure (not trying to impose any specific 
>>
>>implementation here, but hopefully you get my point)? 
>>
>> 
>>
>>Mark. 
>>
>> 
>>
>> 
>>
>>Yours, 
>>
>> 
>>
>>Alastair 
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>> 
>>
>>    
>>
> 
>
> 
>
> 
>
>  
>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]