W3C home > Mailing lists > Public > public-ws-resource-access@w3.org > September 2009

Re: draft 3 of WS-Eventing state tables

From: Gilbert Pilz <gilbert.pilz@oracle.com>
Date: Thu, 17 Sep 2009 13:08:42 -0700
Message-ID: <4AB2974A.2080304@oracle.com>
To: "Li, Li (Li)" <lli5@avaya.com>
CC: public-ws-resource-access@w3.org
Li,

To be clear, I note that, from the Subscribers/Event Sinks point of 
view, a Subscription enters the "Created" state on receipt of the 
SubscribeResponse message so the question is really, "Is it possible for 
an Event Sink to receive a Notification before the SubscribeResponse is 
received?"

Yes, it *is* possible for an Event Sink to receive a Notification before 
the SubscribeResponse is received. This gets to your earlier point about 
the fact that we can't say/presume anything about the internals of 
anyone's implementation. It *could* be (indeed it seems likely) that an 
Event Source might process the Subscribe request on a separate thread 
from the thread that is executing the Notify logic. Suppose, then, that 
a Subscribe request is received at "the same time" that a Notification 
is being sent. You could have the following sequence of activities:

1.) The thread processing the Subscribe request adds the NotifyTo EPR to 
the "subscription table" for this Subscription and, shortly thereafter, 
is "swapped out" (i.e. the thread is suspended and another thread is run).

2.) The thread processing the Notification and proceeds to transmit a 
Notification to every NotifyTo EPR in the subscription table, including 
the one added by (1).

3.) The Subscribe thread resumes execution, marshals the 
SubscribeResponse, and transmits it to the Subscriber.

This is just one of the *many *ways in which a Notification could 
precede the SubscribeResponse. There are other scenarios that involve 
the use of non-anonymous URIs in the wsa:ReplyTo EPR of the Subscribe 
request and routing delays, etc. Ultimately we need to recognize that 
the SubscribeResponse and Notification messages are independent from one 
another and that, short of requiring *all* implementations of 
WS-Eventing to use WS-RM (with an InOrder Delivery Assurance no less), 
there is no way to force any particular ordering between them. Note this 
applies to the SubscriptionEnd message as well.

The upshot for the Subscriber/Event Sink is that you need to have your 
NotifyTo and EndTo listeners set up and ready *before* you send the 
Subscribe request.

BTW, thank you for asking this question. This is just the sort of 
discussion I was hoping the state tables would foster!

- gp

On 9/17/2009 12:12 PM, Li, Li (Li) wrote:
>
> Gil,
>
>  
>
> The following statement helps:
>
>  
>
> Again, by "state" I mean "What messages can the Subscriber/Event Sink 
> expect to send and receive in relation to this Subscription?"
>
>  
>
> According to this definition, I wonder why there is an entry in the 
> Notification/Creating cell in the first table:
>
> [Creating]
> {5}
>
>  
>
> This means the event sink can receive notifications related to a 
> subscription before it is created?
>
> Thanks,
>
> Li Li
>  
>
> ------------------------------------------------------------------------
>
> *From:* Gilbert Pilz [mailto:gilbert.pilz@oracle.com]
> *Sent:* Wednesday, September 16, 2009 3:46 PM
> *To:* Li, Li (Li)
> *Cc:* public-ws-resource-access@w3.org
> *Subject:* Re: draft 3 of WS-Eventing state tables
>
>  
>
> I don't think these tables define "internal states" so much as 
> "expectation states" with regards to the messages that the consumer 
> and the provider can expect to send and receive. For example, an Event 
> Source cannot expect to send a successful wse:Unsubscribe message for 
> a Subscription unless that Subscription is in the "Created" state.
>
> The information in these tables is supposed to duplicate the 
> information that is contained in the normative text of the spec but 
> present it in a manner that can be easily consumed by developers. A 
> desired side-effect of the process of constructing these state tables 
> is to flush out any areas where the spec is unclear about the effects 
> of particular messages. For example, if a Subscriber sends a 
> wse:Unsubscribe message and receives a wse:EventSourceUnableToProcess 
> fault in response, what is the state of the Subscription in question? 
> Again, by "state" I mean "What messages can the Subscriber/Event Sink 
> expect to send and receive in relation to this Subscription?" Can it 
> assume that Notifications for this Subscription will continue to be 
> transmitted by the Event Source?
>
> - gp
>
> On 9/16/2009 7:34 AM, Li, Li (Li) wrote:
>
> Gil,
>  
> Thanks for updating the tables. As I understood it, the purpose of this
> proposal is to enhance interoperability between WS-E web services
> without getting into any implementation details. Since these tables
> define internal states of SOAP endpoints that are apparently outsides
> the scope of web service interfaces, how do you expect these tables be
> followed by implementations? In other words, what information in these
> tables is not already in or implied by the WS-E spec?
>  
> Thanks,
>  
> Li Li
>  
>  
>  
>   


Received on Thursday, 17 September 2009 20:09:34 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 18 December 2010 18:18:13 GMT