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] Concrete proposal for PR035


Jacques

I'm happy with your first two proposals, I just have a concern about your
second InOrder point.

Let's see if we are in agreement about what should happen, in the various
DA combinations, if the RMD receives and accepts messages 1,2,4,5,6
(message 3 is missing/delayed).

1. The way I see it is that if InOrder is specified, then it must not be
violated.. i.e. once the RMD has delivered any message, it must not deliver
any earlier message. Likewise the AtMostOnce DA must not be violated by
"delivering" the same message more than once. So if the DA is AtMostOnce
and InOrder, then it should deliver 1 and 2 and then wait an
implementation-determined time to see if 3 turns up. If 3 doesn't arrive
within this time, it then goes on to deliver 4,5,6. It never delivers 3,
even if it does turn up later since that would violate inOrder.

RMS--1--->RMD  gets delivered
RMS--2--->RMD  gets delivered
RMS--4--->RMD  gets held
RMS--5--->RMD  gets held
RMS--6--->RMD  gets held

time passes...RMD decides to give up on 3

RMD delivers 4,5,6
RMS--3--->RMD  gets discarded


2. If it is atLeastOnce or exactlyOnce with inOrder, then the RMD should
wait for 3 before delivering 4,5,6. There could be situations where message
3 never turns up (RMS fails to resend). In this case I would expect the RMS
(or someone else) to give up eventually and then close the sequence.
Clearly the IncompleteSequenceBehavior would apply when the sequence
closes, but it doesn't apply before. Even if the IncompleteSequenceBehavior
were NoDiscard, the RMD can't decide to deliver 4 while the sequence is
open,  because there's still the possibility that 3 might appear, and when
that happens we aren't allowed to drop it nor deliver it out of order.

If the sequence does close and 3 still hasn't turned up, then what happens
depends on the IncompleteSequenceBehavior
- DiscardEntireSequence and DiscardFollowingFirstGap means that 4,5,6 are
discarded
- NoDiscard means that 4,5,6 are delivered

So how to capture all that in a concise sentence? I think it is best if we
don't talk about delaying at all (which is really an implementation
technique) and just talk about the things that must be obeyed. How about
this?

This DeliveryAssurance can be used in combination with any of the
AtLeastOnce, AtMostOnce or ExactlyOnce assertions, and the requirements of
those assertions MUST also be met. In particular if the AtLeastOnce or
ExactlyOnce assertion applies and the RM Destination detects a gap in the
sequence, then the RM Destination MUST NOT deliver any subsequent messages
from that sequence until the first missing message is received or until the
sequence is closed.

Regards

Peter Niblett
IBM Senior Technical Staff Member



                                                                           
             "Durand, Jacques                                              
             R."                                                           
             <JDurand@us.fujit                                          To 
             su.com>                   Peter Niblett/UK/IBM@IBMGB,         
                                       <ws-rx@lists.oasis-open.org>        
             31/01/2007 01:32                                           cc 
                                                                           
                                                                   Subject 
                                       RE: [ws-rx] Concrete proposal for   
                                       PR035                               
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




I think we are getting close.

I would suggest the following  - mostly editorial - modifications on the DA
defs:

ExactlyOnce:
"...Each message is to be delivered exactly once, or else an error MUST be
raised by the RM Source and/or RM Destination. "
This could be misleading as the reader might understand that it is OK to
deliver duplicates provided that an error is raised... which is not what we
had in mind - at least according to the way we handled AtMostOnce DA.  Now,
the last sentence of the DA contradicts the idea that duplicates might be
delivered, but which one is the reader to believe?. So to dissipate this
ambiguity I propose to reword the first sentence as:


"...Each message is to be delivered exactly once, and if the message could
not be delivered then an error MUST be raised by the RM Source and/or RM
Destination. "


InOrder:


I would avoid any forward reference to the details of the protocol solution
that is supposed to help this DA, as specified later on in the spec body-
or at least would try to keep away from the XML details and just allude to
the mechanism to be used:


propose to replace: (as indicated by its MessageNumber) with: (as indicated
by a message sequence number)


propose to replace: in the order indicated by the sequence MessageNumbers
with: in the order indicated by the message numbering


One more sugegstion on the InOrder DA again: I think we go too far when we
recommend to "delay" delivery of out of order messages in case of InOrder +
AtLeastOnce. Reasons are, several options for the ultimate delivery
behavior in case of out-of-order messages,  still need be kept open (e.g.
as signaled with IncompleteSequenceBehavior), provided that the overall
monotonic order is preserved. E.g. in some cases, the out-of-order messages
will be discarded, not just delayed.


So instead of:


"...then the RM Destination SHOULD delay delivery of these messages"


we coud say:


"...then the RM Destination SHOULD wait for a reasonable time window before
forgoing missing messages"





Thanks,


- Jacques











-----Original Message-----
From: Peter Niblett [mailto:peter_niblett@uk.ibm.com]
Sent: Tuesday, January 30, 2007 3:28 PM
To: ws-rx@lists.oasis-open.org
Subject: [ws-rx] Concrete proposal for PR035


Here are my proposed changes to the WS-RM and WS-RMP specs, consolidating
the various input and discussion we had on last week's call

(See attached file: wsrm-1.1-spec-wd-16-PR035.pdf)(See attached file:
wsrmp-1.1-spec-wd-11-PR035.pdf)

All changes are in section 2 of each spec, and they are all additions. I
have used Adobe Pop-up annotations to show the new material.

Peter Niblett
IBM Senior Technical Staff Member





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