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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ws-tx message

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


Subject: Re: [ws-tx] Issue 007 - WS-C: Make Register/RegisterResponse retriable



Mark - Couple of comments...

Mark Little <mark.little@arjuna.com> wrote on 12/13/2005 05:04:36 AM:

> Doug, I think we can state whatever we like about wsa:MessageID
> semantics in the case of timeouts and retries. We did that in the
> interoperability scenario documents.

I believe it would be up to WSA to define wsa:MessageID's semantics
not WSTX.  The interop[1] did not say anything about messageID aside from
when it needed to be there, per WSA rules.  Nothing about what it
looked like on retries.  Nor do the Tx specs.

[1] http://wsi.alphaworks.ibm.com:8080/interop/index.html

> The only issue with wsa:MessageID being used in this case is that,
> without requiring persistent structures, it isn't going to work in the
> case of crash failures. So if we assume that the scenario outlined in
> the original issue (registration response message is lost because the
> receiver has crashed, subsequently comes back and can't re-register) is
> valid, using wsa:MessageID won't help.
>
> So we have at least two classifications of failure scenario:
>
> transient failures: wsa:MessageID would work and I believe it's the
> right mechanism to use.
>
> crash failures: wsa:MessageID won't work unless we mandate that
> implementations persist their message structures, which isn't a good
> idea IMO. Adding a unique participant identification to the registration
> message, as Peter suggests in a different issue, would solve this, but
> there are other solutions too. The advantage of Peter's option is that
> it may be needed to resolve another issue.
>
> In general, all of our messages are going to have to cope with transient
> failures. So I'd prefer to use wsa:MessageID across the board for that.

It all depends on who initiated the retry.  If its a transport level thing,
then sure.  But if its some layer on top of WSA (like Tx might be implemented
by some) then you can't count on that kind of control.

> For crash failures, at least in this case, I'd like to suggest we take a
> look at what we did in WS-CAF with the WS-Coordination Framework
> specification. There's a recoverParticipant operation that essentially
> lets you replace one registered EPR with another EPR and returns the
> protocol-specific EPR that you'd get from register. I think if we're
> going to tolerate crash failures, and by that I mean try to prevent them
> from aborting/cancelling inflight transactions unnecessarily, we need
> such a mechanism in general. Of course that could be the scope of a
> different issue, but I'd rather not solve the crash failure case here in
> an ad hoc manner if we agree that it's something we need to solve more
> generally.
>
> Mark.
>
>
> Doug Davis wrote:
>
> >
> > One thing that concerns me about using the wsa:MessagID is the assumption
> > that you'll use the same messageID on each retry.  Can the Tx spec really
> > require this?  Other specs (like WSA) which are infrastructural can
> > probably make
> > this kind of requirement (if they need to), but I always viewed Tx as
> > sitting on top
> > of these infrastructural layers and not so much as being part of them.
> >  Implementations
> > will vary on this view but I wouldn't think Tx would want to mandate
> > this kind of choice.
> > thanks,
> > -Doug
> >
> >
> >
> > *Kevin Conner <Kevin.Conner@jboss.com>*
> >
> > 12/12/2005 06:29 PM
> >
> >    
> > To
> >    Christopher B Ferris/Waltham/IBM@IBMUS
> > cc
> >    Mark Little <mark.little@arjuna.com>, ws-tx@lists.oasis-open.org
> > Subject
> >    Re: [ws-tx] Issue 007 - WS-C: Make Register/RegisterResponse retriable
> >
> >
> >
> >    
> >
> >
> >
> >
> >
> > Christopher B Ferris wrote:
> > > I'm not sure that using ws-a messageId is the easiest... it means that
> > > impls need to remember messageId
> > > which can get onerous.
> >
> > Something extra will have to be remembered in any case.  The advantage
> > of the messageId is that it already has comparison rules which an EPR
> > does not.  That is not to say that they can't be compared (see below).
> >
> > > The WS-A WG avoided the issue of EPR equivalence mostly because of
> > issues
> > > related to use of
> > > EPRs to identify something. IMO, in that spirit, EPR comparison becomes
> > > one of comparing the
> > > <Address> element which comes down to URI equivalence issues which
> > can go
> > > in a number of
> > > directions... the namespace URI approach (straight string
> > comparison) or
> > > the approach which normalizes the URI
> > > first before comparing.
> >
> > The identity associated with an EPR is more than just the address
> > element though, a comparison will tell you that it uses the same
> > endpoint but not that the EPRs are identical.  For example, we add an
> > instance identifier element which is used by the endpoint to identify
> > the respective instance and multiplex accordingly.
> >
> > As far as the current register message is concerned there are three
> > identifying elements.
> >  - The From (or ReplyTo) EPR
> >  - The ParticipantProtocolService EPR
> >  - The messageID
> >
> > The From (or ReplyTo) EPR is unlikely to be unique enough to identify
> > the participant but, even if it was, this would require storing more
> > than a message id.  It would also require rules for EPR comparison.
> >
> > The ParticipantProtocolService EPR will uniquely identify the
> > participant but, once again, requires rules for EPR comparison.
> >
> > The message ID should uniquely identify the message exchange but within
> > what context?
> >
> > The August 2005 WS-Addressing spec does not define a means of comparing
> > EPRs but it does not prevent it.  We have the option to define EPR
> > structure and/or rules for comparison within WS-C.
> >
> > The spec also states that the message ID should be 'an absolute URI that
> > uniquely identifies the message'.  What it doesn't state is the context
> > within which this holds true, whether this is intended to be global or
> > within the context of the sender.
> >
> > After all this there appear to be three choices
> >  - use the message ID as the identifier and require it to be
> >    globally unique (comparison rules already exist).
> >  - define a structure for the EPRs to make them globally unique
> >    and rules to make them comparable.
> >  - Change the request so that it includes a unique identifier associated
> >    with the EPR.
> >
> > My initial opinion was that the message ID already does the job so why
> > do we need another mechanism?  We could easily use this to handle
> > retransmission issues.
> >
> > Having clarified my thoughts while writing this response I now believe
> > that the second or third choice would be preferable.  The only question
> > now would be whether the EPR should remain totally opaque (the last
> > choice) or whether we should have a mechanism to associate an EPR with a
> > participant (the second choice).
> >
> >                 Kev
> >


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