The following considerations should be taken into account while implementing this pattern:
- Time-out scenarios: An operation may not fail immediately but could block the operation. Time-outs must be considered while implementing this pattern.
- Idempotency: A work-step and its corresponding compensator should be idempotent which means that the compensator should not alter the state of work-step in a manner that it can be operated on again.
- Data sufficiency: A compensator should get sufficient data from the previous step to roll back the operation.
- Retries: Consider using retries in work-step before failing the operation.