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



My comments inline...

-----Original Message-----
From: Andrew Wilkinson3 [mailto:awilkinson@uk.ibm.com] 
Sent: Tuesday, December 20, 2005 5:56 AM
To: Sazi Temel
Cc: Alastair Green; Ian Robinson; Mark Little; Max Feingold; Peter
Furniss; ws-tx@lists.oasis-open.org
Subject: RE: [ws-tx] Issue 007 - WS-C: Make Register/RegisterResponse
retriable

Sazi,

In the case of coordinator-initiated completion, as in the example you 
cite below, the protocol can complete in success even in the event of
the 
coordinator having multiple registrations for the same participant. 

Sazi: The participant will continue, ignore the prepare messages but
this will yield failure not success - see below.

The state tables in the AT spec dictate that should a participant
recieve a 
prepare protocol message when it is already in preparing state then it 
should ignore the protocol message and simply continue with its
completion 
processing. 

Sazi>> +1

Assuming that the overall prepare vote was to commit this will allow the
transaction to complete successfully. 

Sazi: But participant by ignoring multiple prepare requests may let
coordinator to abort to transaction possibly because of timeout... Since
the prepare messages are ignored by the Participant - It only replies
once - unless the coordinator compares the Participants 'id' and decides
that the participant already responded/prepared, the transaction will
fail - which could be saved otherwise. If comparing the participant id
is needed for the coordinator to make right decision anyway, why would
one make this as early as possible? (P.S I am using the term id here
loosely, do not mean any particular form of id, since the discussion is
still continuing on that issue)

Having said that I do accept that point that, in the case of participant
initiated completion, not detecting duplicates can lead to the protocol
completing in failure - i.e. a BA being compensated/cancelled as
outlined in my earlier e-mail [1].

Sazi>> +1

The question here is whether or not we should make any attempt to
specify 
a mechanism by which we can avoid the mismatch in information regarding 
the coordinator and participant causing  "unnecessary" completion in
failure - as you say the addition of participant identifiers to provide
duplicate registration detection would be one such mechanism. 

Sazi>> +1 another approach that would yield success may be the
participant, instead of ignoring the prepare messages, will send prepare
for all the prepare requests - that will yield a success since then the
coordinator has all the votes, but it would be a costly success in some
cases. 

However, given that we can achieve a consistent outcome without any such
mechanism I would question its worth. 

Sazi>> Whether it is failure or success, it is an outcome. However it
seems to me it is creating a failure when it could easily create a
success in some cases. 

I accept that there are advantages in that it can address some corner
cases as described in Alastair's earlier mail [2] but it isn't necessary
to produce an interoperable implementation that provides consistent
outcomes, as such we shouldn't force an implementors hand by mandating
anything in the specs.

Sazi>> I agree with the general approach. However I don't see any more
forcing an implementer by this approach then by what is in the current
spec. 

Andy

[1] http://www.oasis-open.org/archives/ws-tx/200512/msg00198.html
[2] http://www.oasis-open.org/archives/ws-tx/200512/msg00202.html

"Sazi Temel" <sazi@bea.com> wrote on 19/12/2005 21:44:36:

> 
> Andrew,
> Yes the protocol will complete in both cases, even without a duplicate
> detection. However the question is not whether the protocol will
> complete or not but how could it complete without going through all
the
> steps until the prepare phase. 
> 
> Here is a scenario where not detecting the duplicates will yield
> unnecessary work to reach an outcome (a failure):
> 
> P sends a REGISTER to C
> C registers P once, and sends a REGISTER RESPONSE to P (the message
lost
> but C is not aware of it)
> P sends another REGISTER to C (for the same activity)
> C registers P second time and sends a REGISTER RESPONSE to P again
(this
> time message reached to P but P is not aware of second registration,
it
> thinks the first message is lost)
> 
> Now, C thinks there are two participants (and will prepare both) and P
> thinks it registered only once. So the outcome of this activity will
be
> a failure. However this unnecessary failure could be avoided if the
> duplicate is detected earlier. 
> 
> I think the real cause of this failure is not because a duplicate is
not
> detected but because both ends have wrong information about
> registration. In order to work efficiently both ends must have correct
> information. P must know how many times it is registered and C must
know
> how many Ps are registered. Detecting the duplicates might be one way
of
> going around - but there may be other ways too. I am not saying
> duplicates should not be allowed, but this info should be communicated
> back to other end (to P) and duplicate registration info closes the
gap.
> 
> .Sazi
> 
> 
> -----Original Message-----
> From: Andrew Wilkinson3 [mailto:awilkinson@uk.ibm.com] 
> Sent: Monday, December 19, 2005 5:17 AM
> To: Alastair Green
> Cc: Ian Robinson; Mark Little; 'Max Feingold'; Peter Furniss;
> ws-tx@lists.oasis-open.org
> Subject: Re: [ws-tx] Issue 007 - WS-C: Make Register/RegisterResponse
> retriable
> 
> Alastair,
> 
> > So, introducing participant identifiers will resolve both Issue 007 
> > and Issue 014. 
> > 
> > It is a more elegant approach that does not create forced 
> > implementation choices that are required to work around its absence 
> > for the duplicate registration problem. It is the only solution that
> > will make BA MixedOutcome or BA Participant Completion registration 
> > workable (at least, the only one thus far proposed).
> 
> I believe that it is possible to create an interoperable
implementation
> of 
> BA Participant Completion without being able to detect duplicate 
> registrations. In the event of a coordinator receiving two register 
> messages for the same participant, either because the register was
> retried 
> or the transport delivered the message twice, it will expect the
receipt
> 
> of two completed messages. Should one of these messages not be
> forthcoming 
> the coordinator may opt to complete in failure - sending cancel to the

> participant from which it has not received a completed message and 
> compensate to the one from which such a message has been received.
> 
> Assuming that the participant implementation has been coded such that
it
> 
> does not retry sending of a register message (and we could mandate
this
> in 
> the spec if needed) what we're coping with here is an error in the 
> transport and, as such, completing in failure is entirely appropriate.

> What's important is that the outcome is consistent and I believe that
> the 
> BA state table ensures that this will be the case.
> 
> Andy
> 




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