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] Issue 007 - WS-C: Make Register/RegisterResponse retriable


I think this makes proposal makes sense.

Mark.


Peter Furniss wrote:

>This is hereby declared to be ws-tx Issue 007.
>
>Please follow-up to this message or ensure the subject line starts Issue
>007 - (ignoring Re:, [ws-tx] etc)
>
>The Related Issues list has been updated to show the issue numbers.
>
>Issue name -- WS-C: Make Register/RegisterResponse retriable
>
>Owner:  Alastair Green [mailto:alastair.green@choreology.com]
>
>Target document and draft:
>
>Protocol:  Coord
>
>Artifact:  spec
>
>Draft: Coord spec working draft uploaded 2005-12-02
> 
>Link to the document referenced:
>
>http://www.oasis-open.org/committees/download.php/15738/WS-Coordination-
>2005-11-22.pdf
> 
>Section and PDF line number:
> 
> WS-Coordination spec, Section 3.2 "Registration Service" l. 294
> 
> 
>Issue type: Design
> 
> 
>Related issues:
>
> Issue 008 - WS-C: Remove fault 4.6 AlreadyRegistered
> Issue 014 - WS-C: EPR equality comparison is problematic 
> Issue 009 - WS-C/WS-AT: Is request-reply MEP useful?
> 
> 
>Issue Description:
>
> Register/RegisterResponse should be retriable exchange
> 
>
>Issue Details:
> 
> [This issue stems from Choreology Contribution issue TX-20.]
> 
> Section 9 of WS-AT defines the WS-Coordination exchanges
>  
>     CreateCoordinationContext/CreateCoordinationContextResponse
>     Register/RegisterResponse
> 
> as request-reply exchanges.
> 
> (Whether this request reply MEP should be used at all in the WS-TX
>specs is addressed 
>in a separate issue: see  "Issue 009 - WS-C/WS-AT: Is request-reply MEP
>useful?".)
> 
>Substantively, it may be particularly misleading to think of the
>Register/RegisterResponse
>exchange as a request-reply pattern. The 
>implication of using this pattern is that there is a simple one 
>message in, one message out exchange. The presence of a fault
>(AlreadyRegistered) as a potential response to Register hardens
>that implication.
>
>Current behaviour would lead to service being informed it has already
>registered a
>Participant, when it has in fact simply succeeded in 
>registering a Participant. Superficially, the
>AlreadyRegistered fault could simply be
>viewed as being unnecessarily verbose: the reaction of the service to 
>the fault at run-time must be to treat
>it as uninteresting, i.e. as equal in effect to a successful 
>registration.
> 
>In fact there is a deeper problem. Consider the following scenario:
> 
>A Coordination Service (CS) creates a Coordinator (C) for a new atomic 
>transaction (AT), and emits a CoordinationContext (CC).
>
>The CC is transmitted to an application service (AS). AS (logically)
>creates 
>a P which sends Register (R) to the Registration Service (RS) 
>EPR for AT, embedding the EPR for receipt
>of protocol messages outbound from C to P (CP EPR).
>
>The RS, on receiving Register, creates an EPR for inbound protocol
>messages 
>from P to C (PC EPR), and embeds this in the RegisterResponse 
>(RR), which it sends to P.
>
>AS and P crash before the RR message is received by P, or the RR message
>drops 
>and is never received by P. Either way, AS (on recovery, or after
>waiting) causes P to 
>resends R to RS. RS examines the inbound Register,
>and determines that it has come from a known P (see "Related Issues", 
>"WS-C: EPR equality comparison should
>not be relied upon"), i.e. that it is a duplicate registration.
>
>Currently, RS replies with an AlreadyRegistered fault, sent to P. P now 
>knows that he is registered with C, but has never received the PC EPR 
>(/RegisterResponse/CoordinationProtocolService element). Any further 
>retries of P send R to C will result in the same situation.
>
>C will never be able to receive messages from P. P will never become 
>Prepared. The transaction will eventually collapse through timeout.
>
>Therefore, the Register/RegisterResponse exchange must tolerate
>duplicates. 
>If a Register message is delivered more than once (either 
>by the transport, or through comms-failure- or recovery-induced retry) 
>then the Registration Service should respond on each occasion with a 
>RegisterResponse containing the same PC EPR, to ensure reliable 
>completion of the EPR exchange that permits the 
>subsequent coordination protocol to operate correctly.
> 
>NOTE.
> 
>This change brings the R/RR exchange in line with the behaviour of the 
>CreateCoordinationContext/...Response
>exchange. There is a difference. R/RR is likely to be implemented as a 
>true idempotent operation. CCC/CCCR is
>not: each CCCR embeds a new RS EPR, and a new 
>/Context/Identifier. But each exchange can be harmlessly
>replayed indefinitely, in the event of failure to receive the 
>response message.
>
>
>Proposed Resolution:
>
>Insert the following text in WS-Coordination spec, Section 3.2 
>"Registration Service" immediately following current l. 294
>
>"[New paragraph]The requester MAY send a Register message for a given 
>Participant more than once, and the underlying transport could deliver 
>the Register message more than once.
>On receipt of a Register message for a
>given Participant, which has already been processed succesfully, the 
>Registration Service MUST send to the
>requester a RegisterResponse containing the same 
>CoordinationProtocolService element (Endpoint Reference for 
>Participant to Coordinator protocol messages) as that 
>contained in all 
>previous RegisterResponses generated by
>the Registration Service which relate to the Participant's request to 
>register for this activity.
>[New paragraph]"
> 
> 
>
>  
>


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