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: [ws-rx] i0019 - a formal proposal - take 4



Based on my note to Marc I added some text explaining that the RMD may also choose to shutdown
the sequence even w/o a CloseSequence() being sent from the RMS.  I view this as a softer SequenceTerminated
situation.  I assumed this was obvious but making it clearer doesn't hurt.

thanks
-Doug

__________________  



Using the pdf file at http://www.oasis-open.org/apps/org/workgroup/ws-rx/download.php/13493/WS-ReliableMessaging-v1.0-wd-01.pdf
here's the proposal:  

Change lines 340-347, the SeqAck syntax, to:  
<wsrm:SequenceAcknowledgement ...>  
  <wsrm:Identifier ...> xs:anyURI </wsrm:Identifier>  
  [ [<wsrm:AcknowledgementRange ...  
      Upper="xs:unsignedLong"  
      Lower="xs:unsignedLong"/> +  
     <wsrm:Final/> ? ]
  | <wsrm:Nack> xs:unsignedLong </wsrm:Nack> + ]  
  ...  
</wsrm:SequenceAcknowledgement>  

After line 378, add to the description of the SeqAck elements:  
  /wsrm:SequenceAcknowledgement/wsrm:Final  
  This optional element, if present, indicates that the RM    
  Destination is not accepting new messages for the  
  specified Sequence.  The RM Source can be assured that  
  the ranges of messages acknowledged by this
  SequenceAcknowledgement header block will not change in the  
  future.  Any attempt to deliver additional messages to this  
  sequence MUST generate a SequenceClosed fault by the RM  
  Destination.  This element MUST be present when the Sequence  
  is no longer accepting new message.
  Note: this element MUST NOT be used when sending a Nack, it  
  can only be used when sending AcknowledgementRanges.  

On lines 569 and 570 change:  
  After an RM Source receives the <SequenceAcknowledgement>    
  acknowledging the complete range of messages in a Sequence, it
  sends a ...
to  
  When the RM Source has completed its use of the Sequence, it  
  sends a ...  

To the end of that para, at the end of line 574, add:  
  Note, under normal usage the RM source will complete its use of  
  the sequence when all of the messages in the Sequence have been  
  acknowledged.  However, the RM Source is free to Terminate  
  or Close a Sequence at any time regardless of the acknowledgement  
  state of the messages.  

Change lines 581 and 582 from:  
  This element is sent by an RM Source after it has received the    
  final <SequenceAcknowledgement> covering the full range of a Sequence.  
to  
  This element is sent by an RM Source to indicate it has completed
  its use of the Sequence, i.e. it will not attempt to send any  
  additional application messages to the RM Destination.  RM protocol  
  messages, e.g. AckRequested, CloseSequence and TerminateSequence  
  may still be sent.  

After line 396, add a new section about closing a Sequence:  
  3.6 Closing A Sequence  
  There may be times during the use of an RM Sequence that the RM  
  Source or RM Destination will wish to discontinue using a Sequence
  even if some of the messages have not been successfully delivered
  to the RM Destination.  

  In the case where the RM Source wishes to discontinue use of a
  sequence, while it can send a TerminateSequence to the RM Destination,  
  since this is a one-way message and due to the possibility of late  
  arriving (or lost) messages and Acknowledgements, this would leave  
  the RM Source unsure of the final ranges of messages that were  
  successfully delivered to the RM Destination.  

  To alleviate this, the RM Source can send a <wsrm:CloseSequence> element,  
  in the body of a message, to the RM Destination to indicate that  
  RM Destination MUST NOT accept any new application messages for the  
  specified sequence, other than those already received at the time
  the <wsrm:CloseSequence> element is interpreted by the RMD.  Upon receipt
  of this message the RM Destination MUST send a SequenceAcknowledgement  
  to the RM Source.  Note, this SequenceAcknowledgement MUST include the  
  <wsrm:Final> element indicating that the RM Destination will not accept  
  any new messages for this sequence.

  While the RM Destination MUST NOT accept any new application messages  
  it MUST still accept and process RM protocol messages.  For example,  
  it MUST accept and respond to AckRequested, TerminateSequence as well as  
  CloseSequence messages.  Note, subsequent CloseSequence messages have no
  effect on the state of the sequence.

  In the case where the RM Destination wishes to discontinue use of a
  sequence it may choose to 'close' the sequence itself.  In cases where
  the RM Destination wishes to generate a Fault but still allow RM protocol
  messages (for example, AckRequested) but not allow any new application
  messages to be processed it may use the SequenceClosed Fault in place of the
  SequenceTerminated fault.  Since the SequenceTerminated fault may
  result in the state information about the sequence to be reclaimed,
  use of the SequenceClosed fault will allow the RM Source to still
  retrieve a final and accurate accounting of the state of the sequence.

  When a Sequence is closed and there are messages at the RM Destination  
  that are waiting for lower-numbered messages to arrive (such as the  
  case when InOrder and ExactlyOnce delivery assurance is being enforced)  
  before they can be delivered to the RM Destination's application, the RM  
  Destination MUST NOT deliver those messages.  

  The following exemplar defines the CloseSequence syntax:  
    <wsrm:CloseSequence wsrm:Identifier="xs:anyURI"/>  

  /wsrm:CloseSequence
  This element is sent by an RM Source to indicate that the RM    
  Destination MUST NOT accept any new messages for this sequence.  
  Any attempt to deliver additional messages to this sequence  
  MUST generate a SequenceClosed fault by the RM Destination.  

  /wsrm:CloseSequence@Identifier  
  This required attribute contains an absolute URI conformant  
  with RFC2396 that uniquely identifies the sequence.  

  /wsrm:CloseSequence/{any}  
  This is an extensibility mechanism to allow different (extensible)  
  types of information, based on a schema, to be passed.  
   
  /wsrm:CloseSequence@{any}  
  This is an extensibility mechanism to allow additional attributes,    
  based on schemas, to be added to the element.  

  A <wsrm:CloseSequenceResponse> is sent in the body of a response message by    
  an RM Destination in response to receipt of a <wsrm:CloseSequence> request  
  message.  It indicates that the RM Destination has closed the  
  sequence.  

  The following exemplar defines the <wsrm:Closed> syntax:  

  /wsrm:CloseSequenceResponse
  The element is sent in the body of a response message by    
  an RM Destination in response to receipt of a <wsrm:CloseSequence> request  
  message.  It indicates that the RM Destination has closed the  
  sequence.  

  /wsrm:CloseSequenceResponse/{any}  
  This is an extensibility mechanism to allow different (extensible)  
  types of information, based on a schema, to be passed.  
   
  /wsrm:CloseSequenceResponse@{any}  
  This is an extensibility mechanism to allow additional attributes,    
  based on schemas, to be added to the element.  

On lines 735 and 746 make these faults non-terminating by removing:  
  It is an unrecoverable error and terminates the Sequence.  
   
After line 760, add a new fault:  
  4.8 Sequence Closed  
  This fault is sent by an RM Destination to indicate that the
  specified sequence has been closed.
  Properties:  
  [Code] Sender  
  [Subcode] wsrm:SequenceClosed  
  [Reason] The sequence is closed and can not accept new messages.  
  [Detail] <wsrm:Identifier...> xs:anyURI </wsrm:Identifier>

Add the proper XML to the schema and WSDL....

thanks,  
-Doug  



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