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] Interop scenario doc - scenario 5.1


Ian,

The suggested changes look fine.

If there are no further comments, I will go ahead and make the changes
to the interop document. Thanks.

-----Original Message-----
From: Ian Robinson [mailto:ian_robinson@uk.ibm.com] 
Sent: Wednesday, June 28, 2006 7:40 AM
To: Ram Jeyaraman
Cc: Doug Davis; ws-tx@lists.oasis-open.org
Subject: RE: [ws-tx] Interop scenario doc - scenario 5.1

The need for the 2nd resource - discussed at the Dublin F2F - was for
the scenario "RetryPreparedCommit" (was scenario 5.3 before the F2F;
currently scenario 5.2). The purpose of the 2nd resource was to allow
the 1st resource to send a duplicate 2PC:Prepared before the 1st
resource sent its 2PC:Prepared (thus forcing the Coordinator to consume
a 2nd 2PC:Prepared while in PreparedSucess state). At present this
scenario says that the first 2PC:Prepared message should not be
delivered to CS but this does not then accomplish the goal of tesing the
CS behaviour (state=PreparedSucces; msg=2PC:Prepared). I believe we need
to modify this scenario to be closer to the intent discussed at the F2F.
That intent was for the participant to fail/recover while in
PreparedSuccess state.

I think this scenario should actually be:
   CS sends Durable2PC::Prepare to PS1
   CS sends Durable2PC::Prepare to PS2
   PS1 sends Durable2PC::Prepared to CS
   (PS1 fails and recovers)
   PS1 sends Durable2PC::Prepared to CS   // Retry!
   PS2 sends Durable2PC::Prepared to CS
   CS sends Durable2PC:Commit to PS1
   PS1 sends Durable2PC::Committed to CS
   CS sends Durable2PC::Commit to PS2
   PS2 sends Durable2PC::Committed to CS



For the "ReplayCommit" scenario (5.1) mentioned by Doug below, I don't
think we need the 2nd resource that has been added and agree we could
remove PS1.
This scenario would then be:
   CS sends Durable2PC::Prepare to PS
   PS sends Durable2PC::Prepared to CS
   CS sends Durable2PC::Commit to PS
   (PS suffers from internal failure)
   (PA prevents any resent Commit from reaching PS - simulating failure)
   Upon recovery, PS sends 2PC::Prepared to CS
   CS re-sends Durable2PC::Commit to PS
   PS2 sends Durable2PC::Committed to CS


   The text "(CS commits the transaction)" is not really meaningful in
this
      scenario.


The distinction between these 2 scenarios is the state that CS is in
when it receives 2PC:Prepared. In "ReplayCommit" (scenario 5.1) the CS
is in state Committing; in "RetryPreparedCommit" (scenario 5.2) it is in
state PreparedSuccess.

The other 5.x scenarios look fine.

Ian




 

             "Ram Jeyaraman"

             <Ram.Jeyaraman@mi

             crosoft.com>
To 
                                       "Doug Davis" <dug@us.ibm.com>,

             28/06/2006 01:23          <ws-tx@lists.oasis-open.org>

 
cc 
 

 
Subject 
                                       RE: [ws-tx] Interop scenario doc
-  
                                       scenario 5.1

 

 

 

 

 

 





Doug,

The changes you note below seems quite reasonable and correct.

If there are no objections, I will update the scenarios doc to reflect
the changes below.

On why PS1 is used: During the last F2F one of the members mentioned
that there be at least 2 participants in this scenario.

Thank you.

From: Doug Davis [mailto:dug@us.ibm.com]
Sent: Tuesday, June 27, 2006 2:05 PM
To: ws-tx@lists.oasis-open.org
Subject: [ws-tx] Interop scenario doc - scenario 5.1


For scenario 5.1 ReplayCommit it current shows this flow:


Initialization


IA sends an application message tns:ReplayCommit request to PA
containing CoordinationContext.
PA registers PS1 and PS2 with CS for a Durable2PC protocol.
PA responds with an application reply tns:Response.


Message Exchange


        (IA initiates Commit)
   1. CS sends Durable2PC::Prepare to PS1
   2. PS1 sends Durable2PC::Prepared to CS
   3. CS sends Durable2PC::Prepare to PS2
   4. PS2 sends Durable2PC::Prepared to CS
   5. CS sends Durable2PC:Commit to PS1
   6. PS1 sends Durable2PC::Committed to CS
   7. CS sends Durable2PC::Commit to PS2
      (CS commits the transaction. PS2 suffers from internal failure)
   8. Upon recovery, PS2 sends 2PC::Prepared to CS
   9. CS re-sends Durable2PC::Commit to PS2
   10.      PS2 sends Durable2PC::Committed to CS

I believe this is wrong.
1 - The "(CS commits the transaction)" should come after step 10 -
meaning the Coordinator should not exit the "Committing" stage until it
receives Committed from all of the participants
2 - Something should block resent "Commit" messages from the Coordinator
(if any) until PS2 has a chance to resend its "Prepared" message - since
the point of the test is how the Coordinator deals with extra Prepared
messages while in the Committing stage.

Not sure who has the pen but i think we should update the doc to correct
this - something like:
   1. CS sends Durable2PC::Prepare to PS1
   2. PS1 sends Durable2PC::Prepared to CS
   3. CS sends Durable2PC::Prepare to PS2
   4. PS2 sends Durable2PC::Prepared to CS
   5. CS sends Durable2PC:Commit to PS1
   6. PS1 sends Durable2PC::Committed to CS
   7. CS sends Durable2PC::Commit to PS2
      (PS2 suffers from internal failure)
      (PA prevents any resent Commit from reaching PS2 - simulating
      failure)
   8. Upon recovery, PS2 sends 2PC::Prepared to CS
   9. CS re-sends Durable2PC::Commit to PS2
   10.      PS2 sends Durable2PC::Committed to CS
      (CS commits the transaction)

Not sure what the purpose of PS1 is (and would prefer to remove it) but
oh well  :-)

thanks
-Doug



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