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

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsrm message

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


Subject: consolidated proposals for resolution of Chris F comments


attached is a table which consolidates all the proposals to resolve 
Chris F comments.

We should go thru this at the meeting on Tuesday, along with the 
comments from Mark Peel, and the
changes from last week's meeting from Doug B.

I will send out a full agenda before the meeting.

Tom Rutt

-- 
----------------------------------------------------
Tom Rutt	email: tom@coastin.com; trutt@us.fujitsu.com
Tel: +1 732 801 5744          Fax: +1 732 774 5133


Title: • Re: [wsrm] Proposal to accomodate Chris Ferris comments - batch 2

 

 

<JD5>

·  FW: Re: [wsrm] Proposed clarificaiton resolutions to Ferris comments 1,2
From Jacques Durand <JDurand@us.fujitsu.com> on 18 Jul 2004 03:43:31 -0000

 

<ter2>

·  Proposal to accomodate Chris Ferris comments - batch 2
From "Tom Rutt" <tom@coastin.com> on 16 Jul 2004 21:13:03 -0000

 

<DB4>

·  Re: [wsrm] Proposed resolutions for ChrisF issues 3,4,6,8,10
From Doug Bunting <Doug.Bunting@Sun.COM> on 16 Jul 2004 05:07:36 -0000

 

·  Re: Fwd: Re: [wsrm] Proposed clarificaiton resolutions to Ferriscomments 1,2
From Doug Bunting <Doug.Bunting@Sun.COM> on 16 Jul 2004 05:05:06 -0000

 

<JD3>

·  RE: [wsrm] Proposed resolutions for ChrisF issues 3,4,6,8,10
From Jacques Durand <JDurand@us.fujitsu.com> on 16 Jul 2004 03:40:07 -0000

 

<JD2>

·  RE: Fwd: Re: [wsrm] Proposed clarificaiton resolutions to Ferris comments 1,2
From Jacques Durand <JDurand@us.fujitsu.com> on 16 Jul 2004 00:10:11 -0000

 

<DB3>

·  Proposed resolutions for ChrisF issues 3,4,6,8,10
From Doug Bunting <Doug.Bunting@Sun.COM> on 16 Jul 2004 00:05:09 -0000

 

<DB2>

·  Refinements of comments 7 and 9 [Re: [wsrm] Proposed clarificaitonresolutions to Ferris comments 1,2,24,5,7,9,16,19]
From Doug Bunting <Doug.Bunting@Sun.COM> on 15 Jul 2004 22:47:27 -0000

 

 

<DB1>

·  Re: Fwd: Re: [wsrm] Proposed clarificaiton resolutions to Ferriscomments 1,2
From Doug Bunting <Doug.Bunting@Sun.COM> on 15 Jul 2004 20:25:15 -0000

 

<JD1>

·  [wsrm] Proposed clarificaiton resolutions to Ferris comments 1,2
From Jacques Durand <JDurand@us.fujitsu.com> on 15 Jul 2004 00:20:40 -0000

 

<ter1>

·  Proposed clarificaiton resolutions to Ferris comments 1,2,24,5,7,9,16,19
From Tom Rutt <tom@coastin.com> on 14 Jul 2004 20:53:41 -0000

 

 

 

1,

2,

24.

<ter1> Need to clarify that no implementation details are prescribed for abstract RMP operations:

 

Proposed clarification:

 

Add at the end of line 85 the following sentence to the qos bullet:

 

“

These abstract operations are associated with processing of an RMP, however implementation aspects regarding how, or when, they are invoked are not prescribed by this specification.

“

<JD1> Although these ops are first mentioned in line 85, this reference is very general and does not call for such a detailed adjustment that early. In line 85, I would just add "These operations are defined in Section 1.5".

</JD1>

 

Add the following new paragraph between lines 105 and 106, before the Note

 

“

The direction of the arrows for the qos contract abstract operations, shown in Figure 1, represents the direction of information flow associated with the operation. Implementation details of how these operations are invoked, including which entity invokes the abstract operation, are not prescribed by this specification.

“

<JD1> OK, but I would remove second sentence if we use my rewording below for the Note, as it is redundant.

 

<JD1> I think we need an even more explicit statement, for addressing comments 1,2 from CF:

" These operations are abstractly defined here as transfer of information

(message payload, error notice) between the RMP and external components (Producer, Consumer). This specification makes no requirement on how these operations should be implemented, and by which component. Defining the reliability QoS contracts does not require more concrete definitions, which are left to implementations. "

 

I would place the statement in the "Note" after Figure 1, replacing and expanding on sentence in line 110 (" The interpretation of these operations is a matter of implementation.")

 

<DB1> I agree with the general direction outlined in the attached discussion but think we should go a bit further.

 

With regard to the set of definitions, we should be clear these operations define the abstract interface to a subset of the infrastructure on either the sending or the receiving side that may not be nearly this clearly separated.  That is, the RMP itself is abstract in the sense that it has the abstract interface described using the submit, notify, deliver and respond operations.  The RMP is also abstract because the infrastructure support for reliable delivery may be more or less comprehensive that what we have arbitrarily chosen to place within that bucket for the purposes of making our specification clear.  This adds up to meaning the notify operation (for example) may or may not exist in a real deployment, not just that the producer might actually poll for errors.

 

If we start with Jacques' suggestion for text below Figure 1:

 

… above

 

[As an aside, this point seems important enough not to relegate it to a (non-normative?) note and should be in the regular specification text.]  I would re-word it slightly:

 

"

These operations and executable components are abstractly defined here to simplify discussion of the WS-Reliability protocol and not to imply a particular API or component separation.  The separations described here between producer and consumer and their associated RMP do indicate the expected value of placing WS-Reliability support within an infrastructure component.  However, any implementation choices leading to the externally observable properties discussed in this specification are equally valid.

 

The operations themselves describe a transfer of information (payload or error notice) between external components (Producer, Consumer) and an associated RMP.  Again, this specification makes no requirement on how these operations should be implemented, by which component or if these operations are explicitly present in an implementation.

"

 

<JD3> Overall the 1st part of this rewording looks fine to me, as it rightly emphasizes that the whole model (components + operations) is an abstract template that can be instantiated in many ways, depending on how we want the QoS contract to apply, between which parties.

 

One edit: I believe the singular form should be used:

"...any implementation choices leading to the externally observable properties discussed in this specification are equally valid"

--->

"...any implementation choice leading to the externally observable properties discussed in this specification is equally valid"

 

Other comments inline, for the operation definitions </JD3>

 

<JD5>

 

Lines 182-198: generalize the definitions of the four abstract operations

 

“

 

Deliver:

 

An abstract operation supported by the RMP. When invoked on a Receiving RMP, the operation makes the payload of one Reliable Message available to the Consumer. For example, in one specific implementation choice, the payload is placed into a queue by the Receiving RMP to be consumed by an application component.

 

Submit:

 

An abstract operation supported by the RMP. When invoked, the operation transfers payload data from the Producer to the Sending RMP (e.g., a request to the Sending RMP to take responsibility for the Reliable Message).

 

Respond:

 

An abstract operation supported by the RMP. When invoked, the operation transfers payload data from the Consumer to a Receiving RMP.

 

Notify:

 

An abstract operation supported by the RMP. When invoked, the operation makes available a response payload received by the Sending RMP, to the Producer, or makes available to the Producer the status of a Reliable Message (e.g., a notification that the Sending RMP failed to send a Reliable Message).

 

“

 

with the following:

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

“

 

Deliver:

 

An abstract operation associated with a Receiving RMP. When invoked, the operation makes the payload of one Reliable Message available to the Consumer from the Receiving RMP. For example, in one specific implementation choice, the payload is placed into a queue by the Receiving RMP to be consumed by an application component.

 

<JD1> The "associated with a Receiving RMP" might still be misinterpreted.

I would replace 1st sentence with:

"An abstract operation that controls a transfer from Receiving RMP to Consumer."

 

Submit:

 

An abstract operation associated with a Sending RMP. When invoked, the operation transfers payload data from the Producer to the Sending RMP (e.g., a request to the Sending RMP to take responsibility for the Reliable Message).

 

<JD1> I would replace 1st sentence with:

"An abstract operation that controls a transfer from Producer to Sending RMP."

 

Respond:

 

An abstract operation associated with a Receiving RMP. When invoked, the operation transfers payload data from the Consumer to a Receiving RMP.

 

<JD1> I would replace 1st sentence with:

"An abstract operation that controls a transfer from Consumer to Receiving RMP."

 

Notify:

 

An abstract operation associated with a Sending RMP. When invoked, the operation makes available a response payload received by the Sending RMP, to the Producer, or makes available to the Producer the status of a Reliable Message (e.g., a notification that the Sending RMP failed to send a Reliable Message).

 

<JD1> similarly,

"An abstract operation that controls a transfer from Sending RMP to Producer."

plus a narrowing: replace "the status" by "the failure status".

 

 

<DB1>

 

With this background, we can be a bit more straightforward with our definitions of the operations.  We have already described them as abstract and for the exposition of the text.  This leaves us able to simplify the abstract interface and talk directly about invocation and information transfer.  How about:

 

"

Deliver:

 

An abstract operation that transfers the payload of one Reliable Message from Receiving RMP to Consumer.  For example, in one specific implementation choice, the payload is placed into a queue by the Receiving RMP to be consumed by an application component.

 

 

<JD3> on Deliver: So you propose to not use anymore the expression "making available".  In that case we should warn that the notion of "transfer" above must also be understood in an abstract way, as a transfer of control (or of responsibility) on the payload, not necessarily as a physical transfer which may take place later (in which case we may not want to wait for this to happen before sending the Ack).

E.g. an RMP may "deliver" by just setting a flag on payload stored in a persistent store, meaning availability to a COnsumer which

may later complete the actual transfer by querying the store.

</JD>

 

<JD5> Answer to JD4 From Doug B: Whether payloads or control of payloads is transfered is a very low implementation detail that does not matter when we are talking about abstract operations on abstract components.  I believe this only confuses the specification.

 

<JD2> my concern was precisely to make sure that "transfer" remains abstract enough and is not understood in a too restrictive way, which could possibly lead a developer to believe (in my above example) that its RMP has to wait for the payload to be physically fetched by the COnsumer, before sending the ack for a delivery.

(that's a possible interpretation, but not the only one.)

To keep "transfer" abstract enough I propose to add a sentence like: "transfer to a component" in above definitions does not imply a complete physical transfer of data. It is, mor generally, the act of making data available in some way to the component.

(see below my more complete proposal)

</JD2>

 

 

Notify:

 

An abstract operation that transfers a failure status or contained payload of one Reliable Message from Sending RMP to Producer.  The transfered status might include an indication the Sending RMP was unable to reliably deliver the message.  The Sending RMP is NOT REQUIRED to invoke this operation for every Reliable Message submitted; it MAY invoke Notify for a subset of the completed Submit operations.

 

 

<JD3>  On notify: the last sentence ("it MAY...") is not clear, and talks of correlation between these ops that I believe should be addressed later in the doc in a more informed context, e.g. section 2.2. Also we may want to move the requirements (statements using the RFC keywords) out of these definitions, and in a more prescriptive section like 2.2. The prescriptive section (2.2) should also say the most basic: that an RMP MUST be able to invoke Notify (regardless how the op is implemented) as well as Deliver. The other operations (Submit, Respond) are to be invoked from outside.</JD>

 

<JD5> Response from Doug on <JD3>  Moving these sentences elsewhere is fine.  I am not sure what is missing (or where) with regard to your last sentence.

 

<JD> nothing missing... I was just saying there is no requirement attached to the invocation of (Submit, Respond) as the RMP is not supposed to invoke these.

</JD5>

 

Submit:

 

An abstract operation that transfers the payload of one Reliable Message from Producer to Sending RMP.  Essentially, the Submit operation is a request to the Sending RMP that it take responsibility for the Reliable Message.

 

Respond:

 

An abstract operation that transfers the payload of one Response Message from Consumer to Receiving RMP.  When supported in the protocol, this payload data will be carried together with RM Reply headers (see below). The Consumer is NOT REQUIRED to invoke this operation for every Reliable Message delivered; it MAY invoke Respond for a subset of the completed Deliver operations.

"

 

<JD3> On Respond:  same remarks as for Notify. Also the 2nd sentence seems not at its place in this a definition, which I believe does not need to mention all the rules associated with these ops. I propose to keep just the 1st sentence, in the def.</JD>

 

<JD5> Response to JD3 from Doug: In another email, you agreed with the general use of forward references from this section.  The second sentence above is a forward reference to the rules you mention, not those rules.

 

   JD: Forward refs are OK,

my concern on your sentence #2 above, is that it is in fact a hidden requirement (the "will be" actually sounds like a MUST), which exposes deeper protocol ramifications than necessary in this section (which I tend to consider just as a glossary). So the sentence tells either too much or not enough, if left here. Instead, we could refer to the section that expands on it (e.g. "more detailed semantics is given in Section 2.2").

</JD5>

 

 

 

<JD4> 1) and 2) follow-up:

<JD4> in addition to proposed resolution (previous emails), we need to fix - or explain – the way we name these operations: we call them currently "RMP operations" at various places, but as noted these abstract operations are not necessarily supported by the RMP.

So to be more precise we could rename them (QoS operations? or transfer operations?) or just explain that this naming does not mean all these ops are supported by an RMP.

</JD4

 

<JD5> my proposal:

 

A) for the terminology section, after compilation of previous other comments:

 

(note again that these definitions do not pretend make explicit all the rules and semantics attached to the usage of these ops, which would be described elsewhere in the spec.) This is along keeping the terminology section as nothing more than a glossary.

 

 

Note also that I use the term "message" instead of "payload" (see C.F. comment #15): although I don't see this as a mjor issue, CF has a point that RMP is a SOAP node (or processor)before all. "payload" may sound specific of an implementation. To be discussed in other mail.

 

Deliver:

"An abstract operation that transfers a message from Receiving RMP to Consumer.  This operation is invoked by the RMP. More details are given in section... "

 

Submit:

"An abstract operation that transfers a message from Producer to Sending RMP.  More details are given in section... "

 

Respond:

"An abstract operation that transfers a message from Consumer to Receiving RMP,  as a response to a previously received message. More details are given in section... "

 

Notify:

"An abstract operation that transfers from Sending RMP to Producer, either a failure status

of a previously sent message, or a message received as response.  This operation is invoked by the RMP. More details are given in section... "

 

</JD5>

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

<JD5> B) in Section 2.2 that expands on "RMP operations", add:

 

(after line 255 1st sentence that introduces the four ops)

(mostly wording from Doug, +few edits: choices->choice, and some addition on "transfer".)

 

"These operations and executable components are abstractly defined here to simplify discussion of the WS-Reliability protocol and not to imply a particular API or component separation.  The separations described here between producer and consumer and their associated RMP do indicate the expected value of placing WS-Reliability support within an infrastructure component.  However, any implementation choice leading to the externally observable properties discussed in this specification is equally valid.

 

The operations themselves describe a transfer of information (message data or error notice) between external components (Producer, Consumer) and an associated RMP.  This "transfer" does not imply a complete physical transfer of data. It is, more generally, the act of making data available in some way to the component.

 

This specification makes no requirement on how these operations should be implemented, by which component or if these operations are explicitly present in an implementation."

 

[note: other edits may be necessary in 2.2. or elsewhere.

But note that I'd prefer to leave the section 1.2 as is and not overload it with more details on Deliver/Submit/Respond/Notify - although that's where we talk first about these ops - as this is not essential to the purpose of this section (to convey the general RM concepts and scope)]

</JD5> 

 

2

See comment 1

3

<ter2> Improper reference for ws security

 

Proposed resolutions:

 

Lines 151: change

“

OASIS WS-Security 2004

“

to

“

OASIS Soap Message Security 1.0

“

 

Line 155: change:

“

WS-Security 2004

“

to

“

OASIS SOAP Message Security 1.0 [WSS]

“

 

Line 250: change:

“

WS-Security

“

to

“

OASIS Soap Message Security 1.0 [WSS]

“

 

<DB3> lines 151/5 and 250/1 should have a normative reference to the OASIS

SOAP Message Security 1.0 spec not "WS-Security"

 

==> As agreed (I believe) during the teleconference, make the change Chris suggested and reference the specification in both places using the correct term.

4

<DB3> line 489/90 reads: ... Why is this only a RECOMMENDATION?

"It is RECOMMENDED to NOTresend a message for which an RM-Reply with one of the following Fault types has been received:".

 

==> change to

 

"A Sending RMP MUST NOT resend a message for which it has received an RM-Reply with one of the following Fault types:"

 

I am not sure where group termination due to an error should be covered though expect that would be somewhere in chapter 5.  I do agree both the sending and receiving RMP should terminate a group as soon as such a fault is identified (for the receiving RMP) or received (for the sending RMP). This is complicated because the sending RMP may have to retry or poll before it shares this understanding, meaning the receiving RMP cannot "forget" the group immediately.

 

<JD4> <JD> I guess the reason that is only a recommendation, is that

preventing such resending is not essential to the RM protocol.

(E.g. similarly, we never say that as soon as an Ack is received, any resending MUST stop.)

It is just not paramount (nor always feasible?) to strictly enforce this, implementation-wise, although this is an optimization.

 

As for the dis-ordered sequence of which one message has been faulted, it is indeed

an optimization that we have not done, to terminate the group when one of its

messages has been faulted as above (we currently would wait for the faulted message

to expire, to terminate the group.)

So we could update 5.1.3.5 (Termination by ordered failure) by adding to

the "triggering event" line (both in sending RMP and receiving RMP): "...or a message

is faulted with one of the codes mentioned in section 3.2.1"

</JD>

 

<DB4> For (4), I do not understand a MAY / MUST for stopping the "resend loop" after receiving a Fault without a MAY / MUST for stopping after receiving an acknowledgement.  In both cases, I would prefer MUST since to do otherwise just wastes RMP time.  This would also be one of those nice externally observable requirements.

5

<ter1> WSRM TC has agreed to fix unnecessary use of Soap 1.2 terminology

 

Proposed resolution, agreed at July 13 WSRM TC meeting:

 

Line 67-68: change sentence:

 

“

 

WS-Reliability is a SOAP Module (as defined by [SOAP 1.2]), which fulfills reliable messaging requirements that are critical in some applications of Web Services.

 

“

 

to:

 

“

 

WS-Reliability is a SOAP based specification, which fulfills reliable messaging requirements that are critical in some applications of Web Services.

 

“

 

Lines 166-170: change

 

“

 

Reliable Messaging Processor (RMP):

 

A SOAP Node (as defined by [SOAP 1.2]), or a subset or superset thereof, capable of performing Reliable Messaging as described by this specification. With regard to the transmission of a Reliable Message from one RMP to another, the former is referred to as the Sending RMP, and the latter as the Receiving RMP. An RMP may act in both roles.

 

to:

 

 

Reliable Messaging Processor (RMP):

 

A SOAP processing element, capable of performing Reliable Messaging as described by this specification. With regard to the transmission of a Reliable Message from one RMP to another, the former is referred to as the Sending RMP, and the latter as the Receiving RMP. An RMP may act in both roles.

 

<JD4> <JD> Good point, although the "node" definition in SOAP 1.2 Part 1, section 1.4.1

appears to be a general one (not depending on 1.2 specific features).

So we could use the term "SOAP processor" instead as Tom suggests, and say

that in case of SOAP 1.2, it is a SOAP node, and in case of SOAP 1.1,

it complies with similar requirements:

"...enforcing the rules that govern the exchange of SOAP messages and accesses the services provided

by the underlying protocols through SOAP bindings."

I think what we want to convey in the RMP definition is that (1) an RMP implements SOAP protocol and some underlying binding so that it can do messaging, and (2) an RMP understands RM SOAP headers.

 

</JD>

 

[C.F.]...It makes for a cleaner specification if one defines

behaviour in terms of destination and source because it is entirely

feasible that a component might implement only one of those roles. As

defined, WS-R requires that a conformant implementation of an RMP

implement both roles which would limit its applicability to certain use

cases such as small footprint devices or in cases where reliability was

only needed in one direction. Also, what is with the "a subset, or

superset thereof". What does that mean exactly?

 

<JD> I think these concerns were addressed in the latest contribution (July 7)

which is not the one Chris used.

- new section 2.2 ("RMP operations") explicitly says an RMP can be implemented

for sending, and/or receiving (lines 256-257)

- the "subset/superset" part was removed from the def.

</JD>

 

<DB4> For (5), I am not sure what you are suggesting but suspect your comments work with the proposal in Tom's "1,2,24,5,7,9,16,19" email.

 

6

<ter2> Better definition for Reliable message

 

Proposed clarification:

 

Line 171-172: change

“

Reliable Message:

A message for which some level of reliable delivery is required.

“

to

“

Reliable Message:

A SOAP message carrying a wsrm:request header block.

“

<DB3> line 171/2 defines the term "reliable message". This seems unnecessary.

 

==> change

"Reliable Message:

A message for which some level of reliable delivery is required."

 

to

 

"Reliable Message:

A SOAP message containing a <wsr:Request> header block."

 

Note: I am comfortable with mixing such concrete definitions with the various abstract terms we use to illustrate our model.  If others would prefer our definitions have a consistent abstraction level, what do they suggest for this definition?

 

<JD4> <JD> fine with me: only the terms that refer to notions that the spec does not

want to define further (yet wants to define properties about), need be "abstract".

In the present case, this forward reference is OK (since we say that the glossary

can do forward references.)</JD>

 

7

<ter1> Message Delivery is not the end of Receiving RMP processing

 

Proposed clarification:

 

Lines 204-206: change

 

“

Message Delivery:

 

The action of invoking the “deliver” operation for a Reliable Message. This action marks the end of the RMP processing for this message.

“

 

to

 

“

Message Delivery:

 

The action of invoking the “deliver” operation for a Reliable Message.

 

<DB2> Actually, this does not cover the problems Chris identified with failed Deliver operations nor the explicit connection we have made between message delivery and sending an acknowledgement (when required).  I suggest:

 

"Message Delivery:

 

Completion of the Deliver operation for a Reliable Message."

“

8

<ter2> Definition of PollRequest message

 

Proposed clarification:

 

Lines 221-225: change

“

PollRequest Message:

A polling message for Acknowledgment Indication(s). A Sending RMP may send a PollRequest Message for polling of Acknowledgment Indication(s) regardless of RM-Reply Pattern of the original Reliable Message. For example, the Sending RMP may send PollRequest Message to retrieve Acknowledgment Indication for a message originally sent using Callback RM-Reply Pattern.

“

to

“

PollRequest Message:

A message sent by the Sending RMP to the Receiving RMP that requests that it respond with RM-Reply information

“

 

<DB3> line 217 [actually 221-225] defines the term "PollRequest Message" ... leave out the embellishments.

 

==> change

"PollRequest Message:

A polling message for Acknowledgment Indication(s). A Sending RMP may send a PollRequest Message for polling of Acknowledgment Indication(s) regardless of RM-Reply Pattern of the original Reliable Message. For example, the Sending RMP may send PollRequest Message to retrieve Acknowledgment Indication for a message originally sent using Callback RM-Reply Pattern."

 

to

 

"PollRequest Message:

A message the Sending RMP sends to the Receiving RMP, requesting RM-Replies for identified earlier Reliable Messages.  Support for this message is REQUIRED as part of the Poll RM-Reply pattern (see section 2.5.3).  This message MAY also be used to augment other RM-Reply patterns."

 

9

<ter1> Use of the word implement with Abstract operation

 

Proposed clarification:

 

Lines 256-257: change

 

“

 

An RMP acting in the role of a Sending RMP MUST implement Submit, and notification of failure (Notify). An RMP acting in the role of a Receiving RMP MUST implement Deliver.

 

“

 

with

 

“

 

An RMP acting in the role of a Sending RMP MUST support use of Submit and Notify. An RMP acting in the role of a Receiving RMP MUST support use of Deliver.

 

 

<DB2> An important part of the issue here was implications around who implements what.  The phrase "support use" is not dissimilar enough to avoid these implications.  I am also unsure why we are bothering with the "acting in the role of" wordiness.  Finally, I see nothing in the specification requiring a sending RMP to use AckRequested, meaning that Notify should also be optional (for a more extreme reason, admittedly, than Respond is optional).  I suggest:

 

"A Sending RMP MUST support the Submit operation.  A Receiving RMP MUST invoke the Deliver operation for every valid, in-order and non-expired message it receives."

 

 

“

10

<DB3> line 265/8 reads: ... getting perilously close to implementation detail

"An RMP which supports both Submit and Notify MUST be able to associate a failure notification (Notify) with the related submitted payload(Submit). In case the notification of payload is supported, the RMP MUST be able to associate a received payload(Notify) with a previously submitted payload(Submit)."

 

==> This text or something similar was the subject of an earlier discussion in the TC which may not have completed to everyone's satisfaction.  I would prefer deleting this paragraph.  It is only an indication to the developer how to design their API were they to choose a direct rendering of the RMP component.

 

<JD4> <JD> but this is just the counterpart requirement to what we say earlier in same section

 about the need to associate a Respond invocation to a previous Deliver invocation.

We know an RMP MUST be able to do so (this is part of the semantics of Respond).

Why then is this OK while it is not OK to require also that on the Sending side,

similarly, a Notify invocation must be associated with a previous Submit invocation?

</JD>

 

<DB4>

Agreed, I focused on the particular paragraph Chris mentioned and missed the previous one.  I would therefore suggest both paragraphs should be removed.

 

 

11

<ter2> Table does not show Reply to as complex type

 

Proposed clarification:

 

Lines 758-766: change

“

4.2.3.2 Element: Request/ReplyPattern/ReplyTo

A Sending RMP MUST include this element for a message with “Callback” value for Value element.  The Sending RMP MUST NOT include this element for a message with “Response” or “Poll” value for Value element.  It is to specify the endpoint for the initial Sending RMP to receive a callback Acknowledgment Indication or RM Fault Indication.

 

If present, the format of ReplyTo element MUST be specified by the reference-schema attribute.  If the attribute is omitted, the default format of ReplyTo element is URI as defined in [RFC 2396].

 

                 Table 10 ReplyTo Element

        Cardinality                     1

        Value                                              String

        Attributes                      reference-schema

        Child elements                              None

 

4.2.3.2.1 Attribute: Request/ReplyPattern/ReplyTo/@reference-schema

This attribute is to specify the format or schema of the value of the the ReplyTo element. The Sending RMP MAY omit this attribute, when the value of the ReplyTo element is expressed with a value of type URI.

 “

to

“

4.2.3.2 Element: Request/ReplyPattern/ReplyTo

A Sending RMP MUST include this element for a message with “Callback” value for the Request/ReplyPattern/Value element.  The Sending RMP MUST NOT include this element for a message with “Response” or “Poll” value for the Request/ReplyPattern/Value element.  It is used to specify the endpoint for the initial Sending RMP to receive RM-Reply information.

 

The format of the child element of Request/ReplyPattern/ReplyTo/Ref MUST be specified by Request/ReplyPattern/ReplyTo/@reference-scheme, if the attribute is present.  If the attribute is omitted, the default format of the child element of Request/ReplyPattern/ReplyTo is URI as defined in [RFC 2396].

 

                    Table 10 ReplyTo Element

        Cardinality                     0 or 1

        Value                                              None

        Attributes                      reference-scheme

        Child elements                              {Any} (representing the reference)

 

4.2.3.2.1 Attribute: Request/ReplyPattern/ReplyTo/@reference-scheme

This attribute is to specify the format or scheme of the value of the child element of Request/ReplyPattern/ReplyTo. The Sending RMP MAY omit this attribute, when the child element of Request/ReplyPattern/ReplyTo is expressed with a value of type URI.

 

The type of this attribute is xsd:anyURI.

 

“

 

 

Lines 863-875  change

“

4.3.1 Element: PollRequest/ReplyTo

A Sending RMP MAY include this element. If present, then the Receiving RMP MUST send the RMReply information in a new request to the endpoint specified by this element. If not present, the RM-Reply MUST be sent back on the response of the Poll request itself. The format or schema of the value of this element is specified by the reference-schema attribute. If the attribute is omitted, the default format of ReplyTo element is URI as defined in [RFC 2396].

 

                   Table 15 ReplyTo Element

        Cardinality                     1

        Value                                              String

        Attributes                      reference-schema

        Child elements                              None

 

4.3.1.1 Attribute: PollRequest/ReplyTo/@reference-schema

This attribute is to specify the format or schema of the value of the ReplyTo element. The Sending RMP MAY omit this attribute, when the value of the ReplyTo element is expressed with a value of type URI.

“

to

“

4.3.1 Element: PollRequest/ReplyTo

A Sending RMP MAY include this element.  If present, the Receiving RMP MUST send the RMReply information in a new request to the endpoint specified by this element. If not present, the RM-Reply MUST be sent back on the response of the Poll request itself.

 

The format of the child element of PollRequest/ReplyTo MUST be specified by the PollRequest/ReplyTo/@reference-scheme, if the attribute is present.  If the attribute is omitted, the default format of the child element of PollRequest/ReplyTo/Ref is URI as defined in [RFC 2396].

 

                   Table 15 ReplyTo Element

        Cardinality                     0 or 1

        Value                                              None

        Attributes                      reference-schema

        Child elements                              {Any} (representing the reference)

 

4.3.1.1 Attribute: PollRequest/ReplyTo/@reference-scheme

This attribute is to specify the format or schema of the value of the child element of PollRequest/ReplyTo.  The Sending RMP MAY omit this attribute when the child element of PollRequest/ReplyTo is expressed with a value of type URI.

 

The type of this attribute is xsd:anyURI.

 

“

 

 

12

<ter2> Clarification of scope

 

Proposed clarification:

 

Lines 430-431: change

“

• If GroupExpiryTime is used for a messaging scope, then the item GroupMaxIdleTime

MUST NOT be used, and vice versa.

“

to

“

• If GroupExpiryTime is used for a group scope, then the item GroupMaxIdleTime

MUST NOT be used, and vice versa.

“

 

 

13

<ter2> Wording

 

Proposed clarification:

 

Lines 484-485: change

“

A Sending RMP that has not been able to receive an acknowledgment for a sent message, MUST notify the Payload Producer of a delivery error.

“

to

“

A Sending RMP that has not received an acknowledgment for a sent message, after applying its resend policy, MUST notify the Payload Producer of a delivery error.

“

 

 

14

<ter2> Implication that Sending RMP must compare payloads

 

Proposed clarification

 

Lines 507-508: change

“

• Two message instances that carry different payloads MUST NOT share the same Message Identifier.

“

to

“

• Message instances resulting from separate invocations of Submit MUST NOT share the same Message Identifier.

“

 

 

15

<ter2> Message is what Sending RMP deals with, not payload

 

Proposed clarification

 

Lines 509-511: change

“

• Two message instances that share the same Message Identifier - such as the

resending mechanism generates - MUST carry exactly the same payload(s) and the

same reliability headers.

“

to

“

• Two message instances that share the same Message Identifier (such as generated by the resending mechanism) MUST have identical reliability headers and convey the payload from the same Submit invocation.

“

 

 

16

<ter1> MUST ignore extra information is too strong a constraint for a spec

 

Proposed clarification

 

Lines 601-604: change sentence

 

“

 

If a message contains additional elements not described in this specification, the Reliable Messaging Processor MUST ignore those elements.

 

“

 

to

 

“

 

If a message contains additional elements not described in this specification, the Reliable Messaging Processor MAY ignore those elements.

 

“

17

<ter2> constraints on sequence number for ordered deliver in wrong place

 

Proposed clarification:

 

Lines 669-767: Delete

“

If the MessageOrder element appears in the message received, the Receiving RMP MUST NOT deliver the message until all messages with the same groupId value and a lower number value have been delivered.

“

and add the following new paragraph after Line 793:

“

If the MessageOrder element appears in the message received, the Receiving RMP MUST NOT deliver the message until all messages with the same Request/MessageId/@groupId value and a lower Request/MessageId/@number value have been delivered.

“

 

 

18

 

19

<ter1> definition of Payload

 

Proposed clarification

 

Lines 173-174: change

 

“

 

Payload:

 

Subset of message data that is intended for the consumer of the Reliable Message.

 

“

 

to

 

“

 

Payload:

 

Message data that is transferred from or to an RMP through the use of an abstract RMP operation.

 

“

 

--

20

<ter2> clarification of term scope

 

Proposed clarification

 

Line 402: change “messaging scope” to “scope”

 

 

21

 

22

<ter2> Redundant text is not clear

 

Proposed clarification

 

Lines 496-497: remove

“

When the NoDuplicateDelivery agreement item is enabled, a payload submitted only once to the Sending RMP MUST NOT be delivered twice or more to the consumer party.

“

 

since the following paragraph states the same requirement more clearly.

 

 

23

 

24

See comment 1)

25

 

26

 

27

<ter2> redundant text should be removed

 

Proposed clarification

 

Lines 217-218: remove

“

For the Callback and Poll RM-Reply Patterns, RM-Replies for multiple Reliable Messages MAY be included in a single Reliable Messaging response.

“

since this constraint is clearly stated in specification of Response element.

 

 

28

<ter2> Term “smallest scope” is unclear

 

Proposed clarification

 

Line 408: change

“

The smallest scope of applicability for each RM Agreement item is:

“

to

“

Agreement items applying to the Message Scope MAY be applied at the Group Scope.

 

The default scope of applicability for each RM Agreement item is:

“

 

 

29

<ter2> redundant constraint is misleading

 

Proposed clarification

 

Lines 541-542: remove

“

• From one sent message to the next in the same group, the sequence number MUST

increase by one, starting with value 0.

“

 

since this is clearly stated in the definition of sequence number values.

 

 

30

<ter2> Exclusive Or not clear

 

Lines 666-668: change

“

In a request message, the sender MAY include either a @groupExpiryTime or a @groupMaxIdleDuration corresponding to the group termination parameters specified in Section 5.1.2.

“

to

“

In a request message, the sender MAY include either a @groupExpiryTime or a @groupMaxIdleDuration, but not both, corresponding to the group termination parameters specified in Section 5.1.2.

“

 

 

31

 

32

 

33

 

34

 

35

 

35

 

36, 37

<ter2> Fault specs are misleading

 

Proposed clarification

 

Line 1081: change the table row

“

InvalidMessageId

 

This fault is sent in any of the following cases:

1. If @groupId (for MessageId or RefToMessageIds ) doesn’t exist, or if exists, and the value is wrong or invalid.

2. If number attribute in SequenceNum element doesn’t exist, or if exist, the value is invalid or wrong.

3. Attributes (from and to) of SequenceNumRange doesn’t exist, or if exists, the values are invalid or wrong.

“

To:

“

InvalidMessageId

 

This fault is sent in any of the following cases:

1. If @groupId (for MessageId or RefToMessageIds ) is not present, or is present with an invalid value.

2. If @number in SequenceNum element is not present, or is present with an invalid value.

3. Attributes (from and to) of SequenceNumRange are not present, or are present with invalid values.

“

 

 

37

 

38

 

39

 

40

 

41

 

42

<ter2> extensibility not described in Specification Text

 

 

Chris Ferris pointed out that the main body text which specifies the header elements does not describe the extensibility expressed in the schema.

 

In fact, the only place where extensibility is shown, which is in the figures 6 and 7, shows it incorrectly (with the any at the end).

 

Proposed clarification:

 

Lines 562, 567, and 588: remove the boxes with “any” from figures 6 and 7.

 

 

Lines 600 – 602: change

“

In a case where the text of the specification is shown to be in conflict with schema statements, the schema statement prevails. If a message contains additional elements not described in this specification, the Reliable Messaging Processor MUST ignore those elements.

“

to

“

In a case where the text of the specification is shown to be in conflict with schema statements, the schema statement prevails.

 

The schema for some of the elements specified in this section includes specification of extensibility elements and attributes.  The extensibility features expressed formally in the schema are specified in section 4.6.

 

If a message contains additional elements or attributes not described in this specification, the Reliable Messaging Processor MAY ignore them.

“

 

 

Line 1128:  add new section 4.6

“

4.6 Extensibility features of Schema

 

The schema namespace with prefix wsrm, which is part of this specification, specifies extension mechanisms for some schema elements.

 

The following elements, which have a complex sequence type, are specified in the schema to allow the presence one or more extension elements, of type xsd:any, at the beginning of the sequence, as well as one or more extension attributes:

* Request

* Response

* PollRequest

* NonSequenceReply

* SequenceReplies

* ReplyRange

 

“

 

 

 

43

 

4445

 

46

 

47

 

48

 

 

 

 

 

 

 

 

 



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