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


Alastair, you're right in your interpretation of WS-Addr and this came 
up during WS-Addr interop. testing.

Section 3.3 in the current 2005 Candidate recommendation is clear on 
this too:


      3.3 Formulating a Reply Message

This section specifies the WS-Addressing-specific rules for creating a 
reply or fault message related to another message.

   1.

      Select the appropriate EPR:

          *

            If the reply is a normal message, select the EPR from the
            related message's [reply endpoint] message addressing
            property. If none is present, the processor MUST fault.

            *Note:*

            When using the XML Infoset representation, in the absence of
            a wsa:ReplyTo element the value of the [reply endpoint]
            message addressing property defaults to an EPR with an
            [address] property of
            "http://www.w3.org/2005/08/addressing/anonymous"; - see
            section *3.2 XML Infoset Representation of Message
            Addressing Properties* <cid:part1.05010902.05050303@jboss.com>.

          *

            Otherwise, if the reply is a fault message and the related
            message's [fault endpoint] message addressing property is
            not empty, select the EPR from that property. If the [fault
            endpoint] property is empty, select the EPR from the related
            message's [reply endpoint] message addressing property.
            Otherwise, if the [reply endpoint] property is empty, the
            behavior of the recipient of the related message is
            unconstrained by this specification.

          *

            In either of the above cases, if the related message lacks a
            [message id] property, the processor MUST fault.

   2.

      If the selected EPR's [address] property is
      "http://www.w3.org/2005/08/addressing/none"; the reply message is
      discarded, if not then populate the reply message's message
      addressing properties:

          *

            [destination]: this property takes the value of the selected
            EPR's [address] property.

          *

            [relationship]: this property MUST include a pair of IRIs as
            follows; the relationship type is the predefined reply URI
            "http://www.w3.org/2005/08/addressing/reply"; and the related
            message's identifier is the [message id] property value from
            the message being replied to; other relationships MAY be
            expressed in this property

          *

            [reference parameters]: this property takes the value of the
            selected EPR's [reference parameters] property


Mark.


Alastair Green wrote:

> Andy,
>
> I can't resist observing that the id concerned is unique, universal, 
> participant-authored, and identifies a particular putative participant 
> state machine instance. Quack, quack, quack ;-) . I think we may see 
> this particular duck again when we look at WS-BA in more detail.
>
> In principle, I'm resigned to keeping the MEP RR. The perturbation, in 
> my view, would be very slight, but as I say, I am resigned. It would 
> be simpler (spec and implementation-wise) to have one pattern (one 
> way), and the modifications being proposed to the AT state table do 
> indeed leave the optional use of RR message ids for correlation as 
> something of a Habsburg's tail, but I can understand the desire to 
> avoid change.
>
> However, I am more concerned at this point with the issue I raised 
> (see thread below) of WS-A compliance with respect to optional or 
> mandatory observance of the reply-to element.
>
> There is no essential difference between 2004-08 and 2005-08 versions 
> of WS-A (as I read them) on this point. If we are composing against 
> 2004-08 for the moment, it is worth looking again at the following 
> section of that spec:
>
> [reply endpoint] : endpoint reference (0..1)
> An endpoint reference that identifies the intended receiver for 
> replies to this
> message. If a reply is expected, a message MUST contain a [reply 
> endpoint]. _The
> sender MUST use the contents of the [reply endpoint] to formulate the 
> reply
> message as defined in Section 3.2._ If the [reply endpoint] is absent, 
> the contents
> of the [source endpoint] may be used to formulate a message to the 
> source. This
> property MAY be absent if the message has no meaningful reply. _If 
> this property
> is present, the [message id] property is REQUIRED._
>
> The two underlined sentences are highly relevant for us.
>
> At present (and in Max's proposed reshuffle), the WS-TX specs say two 
> things that seem to violate these sentences:
>
> 1. WS-A says the responder MUST use the [reply endpoint], and WS-TX 
> says it MAY use it.
>
> 2. WS-A says: if the [reply endpoint] property is present, then 
> [message id] is REQUIRED to be present too, whereas WS-TX uses reply 
> without a message id, when the RR MEP is not being used (when we are 
> working one-way).
>
> Am I misreading WS-A here?
>
> Alastair
>
>
>
> Andrew Wilkinson3 wrote:
>
>>Alastair,
>>
>>In my example the EPR would not be participant-specific, instead the 
>>implementation had chosen to rely upon the WSA message id for correlation. 
>>I don't agree that this is analogous to a universally unique participant 
>>id as this usage of the message id to identify the participant is entirely 
>>internal to the participant implementation. That said, I do take your 
>>general point.
>>
>>I would find it hard to argue with your view that the message id and the 
>>RR MEP are not doing a great deal for us, however there is a lot to be 
>>said for not unnecessarily perturbing the specs - WS-C's use of the RR MEP 
>>for register / registerResponse works fine as it is.
>>
>>Andy
>>
>>
>>
>>
>>Alastair Green <alastair.green@choreology.com> 
>>02/03/2006 16:49
>>
>>To
>>Andrew Wilkinson3/UK/IBM@IBMGB
>>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> 
>>01/03/2006 20:42
>>
>>To
>>Andrew Wilkinson3/UK/IBM@IBMGB
>>cc
>>jharby@gmail.com, Mark Little <mark.little@jboss.com>, Max Feingold 
>><Max.Feingold@microsoft.com>, Thomas Freund <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> 
>>01/03/2006 16:51
>>
>>To
>>Mark Little <mark.little@jboss.com>
>>cc
>>Thomas Freund <tjfreund@us.ibm.com>, Andrew Wilkinson3/UK/IBM@IBMGB, 
>>jharby@gmail.com, Max Feingold <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]