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: 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]