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?
> > > >
> > > >
> > >
> >
>

Reply via email to