servicecomb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] zhfeng commented on issue #173: [SCB-300] acceptance test for @Compensable event timeout
Date Tue, 17 Apr 2018 02:31:17 GMT
zhfeng commented on issue #173: [SCB-300] acceptance test for @Compensable event timeout
URL: https://github.com/apache/incubator-servicecomb-saga/pull/173#issuecomment-381811623
 
 
   what is the purpose of this test ? I think it would like to show the scenario that when
the saga transaction is timeout, the alpha server call the compensate method is failed and
will retry ?
   
   The booking service looks like the following steps:
   1) saga start
   2) call the car booking
   3) call the hotel booking
   4) postBooking wait 10s until the transaction timeout (injected by the byteman rules)
   5) return failure message with the information of timeout ( I think it is still an issue
when we are sending the SAGA_ENDED in the https://github.com/apache/incubator-servicecomb-saga/blob/master/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java#L45).
I think we should check the return value and throws the Exception if the transaction is timeout.
Also the alpha server handles the message in (https://github.com/apache/incubator-servicecomb-saga/blob/master/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java#L38),
currently it only check if the transaction is aborted and I think it should also check if
the transaction is timeout.
   
   For this test, if we want to simulate the alpha server retries the compensate method when
the transaction is timeout, I think it would like to use the byteman rule in the cancel method
of HotelBooking (https://github.com/apache/incubator-servicecomb-saga/blob/master/saga-demo/booking/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingService.java#L40)
   ```
   RULE create counter
   CLASS org.apache.servicecomb.saga.demo.pack.hotel.HotelBooking
   METHOD <init>
   IF TRUE
   DO createCountDown($0, 1)
   ENDRULE
   
   RULE throws the exception when calling the cancel method at the first time
   CLASS org.apache.servicecomb.saga.demo.pack.hotel.HotelBookingService
   MEHTOD cancel(HotelBooking)
   AT ENTRY
   IF !countDown($0)
   DO throw exception
   ENDRULE
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message