[jbossts-issues] [JBoss JIRA] (JBTM-2977) Participants should not be told to compensate after completion
Nicola Ferraro (JIRA)
issues at jboss.org
Fri Dec 22 04:07:01 EST 2017
[ https://issues.jboss.org/browse/JBTM-2977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nicola Ferraro updated JBTM-2977:
---------------------------------
Steps to Reproduce:
{code}
# # Shell 1: listen for connections (does not reply) and print output
nc -kl 8888
# Shell 2: create a saga and close it
COORDINATOR_URL=http://localhost:8080/lra-coordinator
echo "Creating new LRA"
LRA_URL=$(curl -X POST $COORDINATOR_URL/start | sed "s/\"//g")
echo "Joining LRA"
curl -X PUT $LRA_URL -d http://localhost:8888
echo "Close LRA"
curl -X PUT $LRA_URL/close
# Output of shell 1
PUT /complete HTTP/1.1
Accept-Encoding: gzip, deflate
Content-Type: application/json
Long-Running-Action: http://localhost:8080/lra-coordinator/0_ffff0a2140b4_-14db9cf6_5a3bdf77_241
Long-Running-Action-Recovery: http://localhost:8080/lra-recovery-coordinator/http%3A%2F%2Flocalhost%3A8080%2Flra-coordinator%2F0_ffff0a2140b4_-14db9cf6_5a3bdf77_241/0_ffff0a2140b4_-14db9cf6_5a3bdf77_24e
Content-Length: 0
Host: localhost:8888
Connection: Keep-Alive
###### After some seconds, when periodic recovery starts ######
PUT /compensate HTTP/1.1
Accept-Encoding: gzip, deflate
Content-Type: application/json
Long-Running-Action: http://localhost:8080/lra-coordinator/0_ffff0a2140b4_-14db9cf6_5a3bdf77_241
Long-Running-Action-Recovery: http://localhost:8080/lra-recovery-coordinator/http%3A%2F%2Flocalhost%3A8080%2Flra-coordinator%2F0_ffff0a2140b4_-14db9cf6_5a3bdf77_241/0_ffff0a2140b4_-14db9cf6_5a3bdf77_24e
Content-Length: 0
Host: localhost:8888
Connection: Keep-Alive
{code}
was:
{code}
# # Shell 1: listen for connections (does not reply) and print output
nc -kl 8888
# Shell 2: create a saga and close it
COORDINATOR_URL=http://localhost:8080/lra-coordinator
echo "Creating new LRA"
LRA_URL=$(curl -X POST $COORDINATOR_URL/start | sed "s/\"//g")
echo "Joining LRA"
curl -X PUT $LRA_URL -d http://localhost:8888
echo "Close LRA"
curl -X PUT $LRA_URL/close
# Output of shell 1
PUT /compensate HTTP/1.1
Accept-Encoding: gzip, deflate
Content-Type: application/json
Long-Running-Action: http://localhost:8080/lra-coordinator/0_ffff0a2140b4_-14db9cf6_5a3bdf77_241
Long-Running-Action-Recovery: http://localhost:8080/lra-recovery-coordinator/http%3A%2F%2Flocalhost%3A8080%2Flra-coordinator%2F0_ffff0a2140b4_-14db9cf6_5a3bdf77_241/0_ffff0a2140b4_-14db9cf6_5a3bdf77_24e
Content-Length: 0
Host: localhost:8888
Connection: Keep-Alive
###### After some seconds, when periodic recovery starts ######
PUT /compensate HTTP/1.1
Accept-Encoding: gzip, deflate
Content-Type: application/json
Long-Running-Action: http://localhost:8080/lra-coordinator/0_ffff0a2140b4_-14db9cf6_5a3bdf77_241
Long-Running-Action-Recovery: http://localhost:8080/lra-recovery-coordinator/http%3A%2F%2Flocalhost%3A8080%2Flra-coordinator%2F0_ffff0a2140b4_-14db9cf6_5a3bdf77_241/0_ffff0a2140b4_-14db9cf6_5a3bdf77_24e
Content-Length: 0
Host: localhost:8888
Connection: Keep-Alive
{code}
> Participants should not be told to compensate after completion
> --------------------------------------------------------------
>
> Key: JBTM-2977
> URL: https://issues.jboss.org/browse/JBTM-2977
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Components: LRA
> Affects Versions: 5.7.1.Final
> Reporter: Nicola Ferraro
> Assignee: Michael Musgrove
>
> When a LRA is closed the coordinator behaves incorrectly if a participant is slow to respond.
> While the call to "/complete" is still ongoing, the coordinator (recovery module) may issue a second call to "/compensate", making it impossible for the participant to determine when a LRA is really closed.
> The LRA coordinator must choose a single outcome for the LRA and be consistent with that (retrying until all participants are in status complete/failedtocomplete in this case).
> A second minor problem is that the call to "/close" is synchronous, and the caller is kept attached forever if the participant does not respond to "/complete". It would be better to establish a timeout and return a "Completing" status if not all participant are done in time.
> I attach few simple steps to reproduce it with shell commands.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jbossts-issues
mailing list