Hi, You just bring up an very interesting topic here. Once Alpha get the Aborted event, it means it should call the compensation method of all the succeed method. When the EventScanner check the event, it will find out all the succeed events (with the start and end events), even the events are not in the right order.
Willem Jiang Twitter: willemjiang Weibo: 姜宁willem On Wed, Aug 1, 2018 at 6:46 PM, 黎 先生 <[email protected]> wrote: > Suppose there are two processes A and B. A process calls an interface > provided by B. When the TxAbortEvent is thrown, the compensation of B > (CompB) is supposed to be executed prior to the compensation of A(CompB). > > ------------ ------------ > | Alpha | | Omega | > ------------ <- ------------ > | | |Process B | > ------------ ------------ > ^ ^ > | | > ------------ | call > | Omega | | > ------------ --------- > |Process A | > ------------ > > At alpha, the tracing queue is expected to be > > Expected > ------------------------------------- > | A Start | A End | B Start | B End | Aborted > ------------------------------------- > > For some reason(e.g. network problem), however, the actual tracing queue > looks like this. > > Actual: > ------------------------------------- > | B Start | A Start | A End | B End | Aborted > ------------------------------------- > > In such situation, is CompA executed prior to CompB? > >
