Details
-
Bug
-
Resolution: Won't Do
-
Major
-
None
-
5.9.5.Final
-
None
-
The coordinator is a REST resource and it expects compensators to return 202 Accepted if the resource update is still in progress.
Description
The specification states at https://github.com/eclipse/microprofile-lra/blob/master/spec/src/main/asciidoc/microprofile-lra-spec.adoc#326-eventual-compensations:
If the resource cannot perform a compensation activity immediately the @Compensate method SHOULD do one or more of the following: return ParticipantStatus.Compensating return a 202 Accepted HTTP status code mark the method as a JAX-RS asynchronous method (using the javax.ws.rs.container.Suspended annotation).
However, Narayana respects only the ACCEPTED status code: https://github.com/jbosstm/narayana/blob/master/rts/lra/lra-coordinator/src/main/java/io/narayana/lra/coordinator/domain/model/LRARecord.java#L323
The implementation should also cover two other variants.