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:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to