FYI I just created a JIRA SCB-803[1] for it. [1]https://issues.apache.org/jira/browse/SCB-803
Willem Jiang Twitter: willemjiang Weibo: 姜宁willem On Fri, Aug 3, 2018 at 4:05 PM, Zheng Feng <[email protected]> wrote: > It looks like an useful feature, can you raise the JIRA for more > investigating ? > > Thanks > > 2018-08-02 7:47 GMT+08:00 Willem Jiang <[email protected]>: > > > If the Service C is called from Service B, we can find it out from the > > parentTxID. > > But if the Service C and Service B are called by ServiceA, we cannot > > guarantee the order in current solution. > > > > May be we can introduce the hop id which could be increased once the > > invocation is called to let the Alpha know the calling order. > > > > Any though? > > > > > > Willem Jiang > > > > Twitter: willemjiang > > Weibo: 姜宁willem > > > > On Wed, Aug 1, 2018 at 9:58 PM, Zheng Feng <[email protected]> wrote: > > > > > I think we are talking about the order of the compensations. By > checking > > > the codes of EventScanner.java, it seems that it calls the compensate > > > method with the omegaCallback by the order of the commands saving in > the > > > database. So I think in the situation of > > > ------------------------------------- > > > | B Start | A Start | A End | B End | Aborted > > > ------------------------------------- > > > > > > The Compensate B will happen before the Compensate A and we can > > > not guarantee the order of the compensations as we expect A before B. > > > > > > Amos > > > > > > 2018-08-01 21:30 GMT+08:00 Willem Jiang <[email protected]>: > > > > > > > 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? > > > > > > > > > > > > > > > > > > > >
