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

Reply via email to