It doesn't make sense that we keep trying of the forward recovery.
+1 to send the abort event once the forward retry is abort, and remove
the -1 option of retries.

I just have one more question about retry timeout handling,  as there
are lots of TxStartEvent there.
How can alpha server tell the timeout of the TxStartEvent when the
forward recovering is enabled?



Willem Jiang

Twitter: willemjiang
Weibo: 姜宁willem

On Thu, Jan 2, 2020 at 1:42 AM Zhang Lei <coolbee...@gmail.com> wrote:
>
> Hi, Pack Team
>
> I recently looked at some forward compensation processing logic and have
> some questions
>
> 1. forward compensation will retry after the call fails until the maximum
> number of retries is exceeded. It calls the reverse compensate applyTo
> method with each retry. This will cause multiple TxStartedEvent and
> TxAbortEvent to be sent. Test case [1] proves this.
>
> For example, retries=2, the first failure and the second success, Alpha
> will receive the following events
>
> TxStartedEvent-tx1 (first)
> TxAbortEvent-tx1(This will trigger the compensation operation)
> TxStartedEvent-tx1 (second)
> TxEndedEvent-tx1 (tx1 will be submitted)
>
> I suggest sending the TxAbortEvent event only if the last forward retry
> failed. The modified event list looks as follows
>
> Example 1: retries=3 and retry all failed
>
> TxStartedEvent-tx1
> TxStartedEvent-tx1
> TxStartedEvent-tx1
> TxAbortEvent-tx1(Trigger compensation operation)
>
> Example 2: retries=3 and and last retry succeeded
>
> TxStartedEvent-tx1
> TxStartedEvent-tx1
> TxStartedEvent-tx1
> TxEndedEvent-tx1
>
> 2. I suggest remove retires is -1 option, reasonable use of parameters
> retries and retryDelayInMilliseconds can meet most scenarios
>
> [1]
> https://github.com/apache/servicecomb-pack/blob/133a2fa7247b2ba00a380762a38369849390560e/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java#L309
>
> [2]
> https://github.com/apache/servicecomb-pack/blob/a8b24100a59a8ec9c917f89b1aa6978cc81e10df/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java#L199
>
> [3]
> https://github.com/apache/servicecomb-pack/blob/133a2fa7247b2ba00a380762a38369849390560e/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java#L353
>
> Best regards,
> Lei Zhang

Reply via email to