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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ws-rx message

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


Subject: RE: [ws-rx] Issue 129: Define "discard"


OK,

If WS-RX is defining a protocol specification and what is in-scope is defined by the diagram located in section 2 figure 1, then all discussion of the AD to RMD interface is out of scope. Rationale for continuing in this direction is that (and has been argued before) behavior beyond the wire protocol is not testable and not observable on the wire.  Section 2 of this specification states that it enables a number of potential reliability features including  

(ref wd14 lines starting at 114) ordered delivery, duplicate elimination and guaranteed receipt.  It goes on to say that regardless of which reliability features are implemented. The wire protocol does not change.

The motivation for issue 106 was that starting in section 2 line 117 the specification states that the RM Source can, except in the most extreme circumstances, accurately determine the disposition of each message transmitted as perceived by the RM destination, so as to resolve any in-doubt status regarding receipt of the messages transmitted.

 

It was argued by several, IBM included, that the protocol was all about transfer, and not about delivery, but the delivery word was used in many places.  This, the word was replaced with transfer in many places throughout the document.  Perhaps we missed a few.

 

The problem was that if the spec is not about delivery, and if the RMD/AD interface is out of scope (which is right and proper for a wire protocol specification), then it was not possible to implement ordered delivery behavior containing no gaps without the communication from RMD to RMS of what the RMD/AD combination might do in the case of sequence closure or termination of a sequence that contains one or more unacknowledged messages with a sequence number lower than one or more acknowledged messages in such a way so that the RMS had no doubt as to the status of those acknowledged messages that followed the first unacknowledged message.  If merely duplicate elimination were in force at the destination side, then the RMS presumably could assume that all messages acknowledged might eventually be delivered (acknowledgement indicates that the RMD has taken responsibility).  On the other hand, if ordered delivery, which might have been better described as ordered processing, were in force, then some potential implementations may never process acknowledged messages that follow one or more unacknowledged messages.  Thus there was always doubt at the RMS as to the ending status.

 

The IncompleteSequenceBehavior element was introduced so that the RMS may discriminate between those messages that had been acknowledged and that stand a chance of being processed, noting that there are no guarantees since it is not even known if the AD exists or is operating correctly, and those messages that had been acknowledged and that stand no chance whatsoever of being processed.  This was an attempt to narrow the window of doubt concerning ending sequence status.

 

What the IncompleteSequenceBehavior element was intended to convey was effectively a way that the RMS might understand what messages at the end of an incomplete sequence were lost even although acknowledged and nothing more.  There is no indication what the RMS is to do with this information, other than have the correct ending status which presumably might be retrieved by the AS in some way out of scope of this document.  This was intentional.  The word dropped was used to indicate to the RMS the effective behavior of the RMD/AD without needing to specify exactly how this might be implemented or how the reliability features were divided in implementation between the AD and RMD.  The spec is simply silent on these issues since there is no impact on the wire protocol.

 

I can imaging implementations where the RMD has the ability to communicate “forget about those message X that delivered” to its associated AD.  I can also see the need for implementations that might only care that all messages be processed in order but a missing message now and again might be no big deal.  The RMD and AD are free to do whatever is enabled by the protocol.

 

I feel that constraining implementations to do things such as to persist messages across system failure events or to only deliver a complete sequence or none at all is beyond the intent of the protocol specification, on the other hand, I will fight to allow the protocol to support implementation of a wide variety of reliability features in any way their designers see fit.  Maybe the AD has roll-back capability? I think we must allow for the possibility without prohibiting it, since after all it is all about transfer, and not delivery.

 

At least the wire protocol now contains sufficient information for the specification to live up to its section 2 promises.

 

I suggest that we close this issue with no action as my first choice.  Any second choice supportable by me cannot constrain the RMD/AD implementation of this protocol in ways that do not affect the protocol.  One way is to define a discarded message, if its dictionary definition is inadequate, to mean a message that sure as heck will not be processed by the AD.

Thanks

-bob


From: Durand, Jacques R. [mailto:JDurand@us.fujitsu.com]
Sent: Thursday, June 15, 2006 6:37 PM
To: Doug Davis; Bob Freund-Hitachi
Cc: ws-rx@lists.oasis-open.org
Subject: RE: [ws-rx] Issue 129: Define "discard"

 

Editorial comment:

 

as defined, “discard”  *exactly* means “not deliver” as far as the observable behavior of RM is concerned…. So this proposal should honestly use the term deliver already in the glossary instead of adding a redundant term actually defined as “discard: to not deliver”.

 

More substantial comment:

 

I can’t find in the archives the original motivation behind  wsrm:IncompleteSequenceBehavior , but for me it always had a non-normative value – a hint for the RMS about the RMD behavior that the RMS can use for optimization purpose.  

 

This proposal below by effectively conveying a delivery assurance commitment from RMD to RMS, goes far beyond, and the fact that the feature is optional does not change its nature. If we go that route, why not more generally convey in CSR the DA conditions this sequence will be submitted to on RMD side? (dup elimination or not, different flavors of ordering, …) I am not necessarily objecting to this, but IMO i129 is not the place to resolve this.

 

If the RMS wants to have some contractual assurance on the RMD delivery behavior, it can be obtained (a) either out-of-band like any other DA, (b) or in case this is too dynamic (subject to change with each sequence, based on resources, etc.) then the use of  IncompleteSequenceBehavior can be more formally bound to an out-of-scope agreement / policy.

 

Still, my RMD may want to send a hint on its general behavior so that the RMS can behave more efficiently, but it may not want to formally – or strictly - commit to this (unless again out-of-band agreement).

                                                                                                                                               

So I would keep it simple on the replacement of “discard” (either use “not deliver” or “not process further”) and remove the RFC2119 keywords… getting back to something close to the initial DougD proposal I believe…

 

Jacques

 

 

--------- Doug Davis wrote: ---------

/wsrm:CreateSequenceResponse/wsrm:IncompleteSequenceBehavior
This optional element, if present, specifies the behavior that the RM Destination will exhibit upon the
closure, or termination, of an incomplete sequence. For the purposes of defining the values used, the term 'discard' refers to the RM Destination never allowing a particular message to be processed by the Application Destination.

A value of “DiscardEntireSequence” indicates that the entire Sequence MUST be discarded
by the RM Destination if the Sequence is closed, or terminated, when there are one or more gaps in the final SequenceAcknowledgement.

A value of “DiscardFollowingFirstGap” indicates that the messages in the Sequence beyond the first gap MUST be discarded by the RM Destination if the Sequence is closed, or terminated,
when there are one or more gaps in the final SequenceAcknowledgement.

The default value of “NoDiscard” indicates that no acknowledged messages in the Sequence will be
discarded by the RM Destination.



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