W3C home > Mailing lists > Public > public-ws-resource-access@w3.org > October 2010

Re: WS-Eventing optionality analysis

From: Doug Davis <dug@us.ibm.com>
Date: Fri, 1 Oct 2010 14:35:41 -0400
To: public-ws-resource-access@w3.org
Message-ID: <OFF3FA4D0D.6A0F97D7-ON852577AF.0061DF58-852577AF.0066250F@us.ibm.com>
Been thinking about this and I actually think the inconsistency is some 
place else in the doc.  If you look at how the Subscribe operation is 
defined, it basically says this - w.r.t. Expires:
- the Expires element is optional for both the subscriber and the event 
- an event source is not required to support the Expires element (note, it 
says 'element' not the expiry feature)
- the absence of the Expires element means that the subscription has an 
indefinite expiration time
- an Expires element with a value of PT0S also means indefinite expiration

Note that the absence of the Expires element doesn't mean that the 
Subscription Manager doesn't have to support the notion of expiry.  In 
fact, the spec says the exact opposite when it says that there is a 
default value for Expires of 'indefinite':
        If this element is not present, the implied default expiration 
time is indefinite. 

This means that Subscription Managers do in fact need to support the 
notion of expiry, its just that in some cases they may only support the 
'indefinite' or PT0S value.  Which is fine.  But this is where the 
inconsistency lies.

The spec right now, mistakenly, gives the impression that the feature of 
expiry is optional for the Subscription Manager by making the Expires 
element option for it to support.  But, this isn't true - the spec makes 
it clear that even w/o the presence of the Expires element the expiry 
feature gets a default value (PT0S) - so while the Expires element may be 
optional, the feature behind it is not.  If this isn't clear, think of it 
this way:  what is the semantic difference between a Subscribe w/o an 
Expires element and a Subscribe with an Expires element that has a PT0S 
value?  W.r.t. the expiry feature there is no difference.  This is why I 
believe that presence or absence of the Expires element has no relation to 
whether expiry itself is supported - in short because it is always 

Now, in practice someone may choose to look at this and say that absence 
of Expires (or even Expires + PT0S) is the equivalent of not supporting 
expiry because it'll never expire.  And that is true from an "end results" 
type of perspective, but from a spec perspective these are very different 
things.  How someone chooses to implement a PT0S value is up to them. 
Whether they set a timeout value to a very large number or whether they 
just never check for a timeout at all is an implementation choice.  But 
either way, from an on-the-wire/spec perspective they are in fact 
supporting Expires with a value of PT0S - as the spec says.

So, in the end I think the inconsistency is around the notion of allowing 
an Event Source (or Subscription Manager) to claim that it doesn't support 
the Expires element - its silly to not support the element when it must 
support the feature behind the element.  Or said another way, its silly to 
allow someone to imply a value of PT0S but then fault them when they try 
to be explicit about it.  We should remove sentences like:
If the event source does not support the wse:Expires element being present 
in a Subscribe request message then a wse:ExpiresNotSupported fault MUST 
be generated.
And if people don't want to support anything but indefinite expiry times 
then they should only allow Subscribes (or Renews) with either no Expires 
element or an Expires element with a value of PT0S.  This is related to 
the issue I opened earlier today [1].  If we remove the above sentence and 
tweak the policy then we can remove the wse:ExpiresNotSupported fault too.

I don't think this would change the semantics of the spec at all and would 
clear up any inconsistency around this point.  Its also consistent with 
the Member Submission too which didn't allow an Event Source to reject a 
Subscribe solely due to the presence of the Expires element.

[1] http://www.w3.org/Bugs/Public/show_bug.cgi?id=10960

STSM |  Standards Architect  |  IBM Software Group
(919) 254-6905  |  IBM 444-6905  |  dug@us.ibm.com
The more I'm around some people, the more I like my dog.

Gilbert Pilz <gilbert.pilz@oracle.com> 
Sent by: public-ws-resource-access-request@w3.org
09/30/2010 02:59 PM

Doug Davis/Raleigh/IBM@IBMUS
"public-ws-resource-access@w3.org" <public-ws-resource-access@w3.org>
Re: WS-Eventing optionality analysis

I don't know if this point has ever been discussed before, but it seems to 
me that there is an inconsistency in the optionality of elements and 
operations in WS-Eventing. Specifically Event Sources/Subscription 
Managers are not required to support subscription expiration, yet 
Subscription Managers are required to support the Renew operation. Since 
the function of the Renew operation is to update the expiration for a 
subscription, by definition this operation has to be a no-op for 
implementations that don't support any form of expiration.

Did we have a reason for doing this, or are we just stupid?

~ gp

On 9/27/2010 7:03 AM, Doug Davis wrote: 

Nice catch on the Expires issue.  Seems to me that it would be good for 
the spec to mandate that whatever choice the event source makes that it be 
consistent across all operations.  Sounds like a new issues to me. 

STSM |  Standards Architect  |  IBM Software Group
(919) 254-6905  |  IBM 444-6905  |  dug@us.ibm.com
The more I'm around some people, the more I like my dog. 

Gilbert Pilz <gilbert.pilz@oracle.com> 
Sent by: public-ws-resource-access-request@w3.org 
09/21/2010 06:45 PM 

"public-ws-resource-access@w3.org" <public-ws-resource-access@w3.org> 

WS-Eventing optionality analysis

Attached is an analysis of the optionality of the various 
operations/messages and features in WS-Eventing. I'm not sure if this 
format is the best for displaying this information. I tried to color code 
things: black is required, blue is required for one party but not another, 
red is optional for both parties. Sub-elements/sub-features are scoped to 
the optionality of there containing element/feature. For example, event 
sources are required to support expiration values using xs:duration iff 
they support wse:Expires, but subscribers may elect to use xs:dateTime 
values - so xs:duration is blue (required for event source, optional for 
subscriber) scoped by a red element/feature (wse:Expires).

If anyone has a better suggestion on how to display this info, please 
speak up.

One issue that writing this analysis brought up is the granularity of 
options. In the case of WS-Eventing this only impacts subscription 
expiration, but it might impact the other spec differently. For 
WS-Eventing the question is, "If you are an event source that supports 
wse:Subscribe/wse:Expires are your subscription manager therefor required 
to support wse:Renew/wse:Expires?" Put another way, "Can I have a 
subscription manager that supports wse:Renew/wse:Expires even though my 
event source doesn't support wse:Subscribe/wse:Expires?"

~ gp[attachment "ws-eventing-optionality-analysis.odt" deleted by Doug 
Received on Friday, 1 October 2010 18:36:55 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:34:56 UTC