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

 


Help: OASIS Mailing Lists Help | MarkMail Help

business-transaction message

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


Subject: State tables


Long delayed, but here is the draft - one pdf from Excel of the tables, one
informalish explanation, to be expanded and completed later.


The delay was caused by trying to get them right. I have a program that
emulates the exchanges between two endpoints following the tables and
ensures that they don't get stuck, don't send each other messages the tables
don't allow and ensure that:

	both sides cancel OR
	both side confirm OR
	the superior records that there was a contradiction

The emulator includes the assumptions about the carrier included the text -
it will cause disruptions, lose messages etc.

The emulator does this by random walking, so it is possible there are still
some errors. One of the quirks of the tables is that there are lot more
things that can go wrong than right, so only about 1% of runs come to
confirm-confirm, and most of those are where the inferior chose to confirm
autonomously.

(actually there are some bugs - I got 3 failures in 30000 runs last time),
but I've had enough for now.



Peter

------------------------------------------
Peter Furniss
Technical Director, Choreology Ltd
email:  peter.furniss@choreology.com
phone:  +44 20 7670 1679
direct: +44 20 7670 1783
mobile: 07951 536168
13 Austin Friars, London EC2N 2JX


PS  Here are few of the runs from the program


trial 41
superior                                              inferior
I1 :B1  <-------------------------ENROLL/no-rsp-req <-- i1 :b1
                               decide to vote ready === b1 :e0
B1 :D0  === decide to prepare
                                   VOTE/ready/spont <-- e0 :e2
                     decide to confirm autonomously === e2 :h0
D0 :D1  --> PREPARE
D1 :E2  <-------------------VOTE/ready/spont
                   PREPARE----------------------------> h0 :h0
E2 :H1  <---------------------------------CONFIRMED <-- h0 :h1
H1 :H2  === decide to confirm
H2 :F1  --> CONFIRM-----------------------------------> h1 :z
F1 :F5  *** reply timeout
F5 :F6  --> SUP_STATUS/confirming/y-------------------> z  :m11
F6 :Z   <------------------------INF_STATUS/unknown <-- m11:z
+:+

trial 42
superior                                              inferior
I1 :A1  <----------------------------ENROLL/rsp-req <-- i1 :a1
A1 :B1  --> ENROLLED
B1 :G0  === decide to cancel
G0 :G1  --> CANCEL
                                      reply timeout *** a1 :a5
G1 :G11 <-----------------------INF_STATUS/active/y <-- a5 :a6
G11:G1  --> CANCEL
                                      reply timeout *** a6 :a5
G1 :Z   XXX disruption I
Z  :M11 <-----------------------INF_STATUS/active/y <-- a5 :a6
M11:Z   --> SUP_STATUS/unknown
                                      reply timeout *** a6 :a5
Z  :M11 <-----------------------INF_STATUS/active/y <-- a5 :a6
                   ENROLLED---------------------------> a6 :b1
                               decide to vote ready === b1 :e0
M11:Z   --> SUP_STATUS/unknown
                   CANCEL-----------------------------> e0 :g2
                         remove ready vote decision === g2 :g1
                   CANCEL-----------------------------> g1 :g1
                   SUP_STATUS/unknown-----------------> g1 :g1
                                          CANCELLED <-- g1 :z
                   SUP_STATUS/unknown-----------------> z  :z
Z  :Z   <--------------------------CANCELLED
-:

trial 43
superior                                              inferior
                                  ENROLL/no-rsp-req <-- i1 :b1
                               decide to vote ready === b1 :e0
I1 :B1  <------------------ENROLL/no-rsp-req
B1 :G0  === decide to cancel
G0 :G1  --> CANCEL
                                   VOTE/ready/spont <-- e0 :e2
                   CANCEL-----------------------------> e2 :g2
                         remove ready vote decision === g2 :g1
G1 :G1  <-------------------VOTE/ready/spont
G1 :G5  *** reply timeout
G5 :Z   <---------------------------------CANCELLED <-- g1 :z
-:

trial 44
superior                                              inferior
I1 :A1  <----------------------------ENROLL/rsp-req <-- i1 :a1
                                       disruption I XXX a1 :z
A1 :B1  --> ENROLLED
B1 :G0  === decide to cancel
                   ENROLLED---------------------------> z  :z
G0 :G1  --> CANCEL------------------------------------> z  :z
G1 :G5  *** reply timeout
G5 :G6  --> SUP_STATUS/cancelling/y-------------------> z  :m11
G6 :Z   <------------------------INF_STATUS/unknown <-- m11:z
-:

trial 45
superior                                              inferior
I1 :B1  <-------------------------ENROLL/no-rsp-req <-- i1 :b1
B1 :D0  === decide to prepare
                               decide to vote ready === b1 :e0
D0 :D1  --> PREPARE-----------------------------------> e0 :e1
D1 :G0  === decide to cancel
G0 :G1  --> CANCEL
G1 :G1  <--------------------------VOTE/ready/reply <-- e1 :e2
                     decide to confirm autonomously === e2 :h0
G1 :L0  <---------------------------------CONFIRMED <-- h0 :h1
L0 :L1  === record contradicted
                   CANCEL-----------------------------> h1 :l1
L1 :L1  XXX disruption III
L1 :Z   XXX disruption I
                                       disruption I XXX l1 :l5
Z  :M12 <-------------------------INF_STATUS/conf/y <-- l5 :l6
M12:M13 === record contradicted
M13:Z   --> CONTRADICTION-----------------------------> l6 :z
-!:+

btp_state.pdf

StateTablesExplanation.pdf



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


Powered by eList eXpress LLC