← Prev in month ← Prev in thread
Next in thread → Next in month →

Proposed resolution for Rel57

From
Jacques Durand <>
Date
2003-11-08T03:38:18+00:00
ID
Thread
Proposed resolution for Rel57
Title: Proposed resolution for Rel57

Rel 57: Ordering and Missing Message Behavior

---------------------------------------

Proposal:

[short answer]: 

the RMP will wait until the sequence expires (indicated either by GroupExpiryTime, 

or by MaxGroupIdleTime). All out-of-order messages will be then discarded.

However, even so storage resources may be insufficient to persist further out-of-order 

messages. In that case, a resource fault (Fault code: "MessageStoreOverflow" will be 

generated and made available to the Sender. 

[long answer]:

Given the definition of Guaranteed Ordered Delivery, a message must not be delivered

to the receiver application if not all previous messages were.

Therefore in case a Receiver RMP decides to not wait any longer for a missing

message, the already received out-of-order messages MUST be discarded and not 

delivered to the application. 

Discarding an out-of-order group occurs in the following cases (d1, d2, d3):

Case d1: the group had GroupExpiryTime specified in its messages. 

On the Receiver side, the out-of-order messages MUST be discarded as soon as this date 

expires, and the group MUST be terminated. Indeed, any missing message received after 

this date, will not be accepted by the RMP (as GroupExpiryTime is always greater than 

ExpiryTime of any message in the group), and the group will never be complete.

On the Sender side, 

Case d2: the group did not have GroupExpiryTime specified, but had GroupMaxIdleTime.

On the Receiver side, the out-of-order messages MUST be discarded if this maximum idle time 

from the last received message expires, and the group MUST be terminated. 

Case d3: neither GroupExpiryTime nor GroupMaxIdleTime were specified for messages

of this group. In this case, any out of order message will be discarded, and

the group immediately terminated. 

NOTE: In order to avoid this situation, a Sender SHOULD either use time-based termination 

criteria (like in d1, d2), or if not, SHOULD always wait for a message to be acknowledged, 

before sending the next message in the sequence.

In all cases (d1, d2, d3), the Receiver RMP MUST generate an RM Fault "OutOfOrderSequenceExpired".

In case the Sender must take the initiative to poll for such a fault, it SHOULD do so when:

(1) some Acks are missing, (2) the group has expired according to GroupMaxIdleTime 

or GroupExpiryTime, if these are specified. 

Once the Fault has been obtained, the Sender MUST NOT send further messages for this group, 

and MUST communicate instead a delivery failure to its application.

NOTE: the cases above (d1, d2, d3) decide of the discarding of out-of-order messages

of a group, and therefore of the termination of a failed ordered group.

This does not mean yet the removal of the group state, as message IDs may still be needed 

for duplicate checks.
← Prev in month ← Prev in thread
Next in thread → Next in month →