[
https://issues.apache.org/jira/browse/QPID-8079?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16327037#comment-16327037
]
Keith Wall edited comment on QPID-8079 at 1/16/18 11:49 AM:
------------------------------------------------------------
{{ServerTransaction.EnqueueAction}} are used in three places:
{{QueueManagingVirtualHost.Transaction#move}} and
{{QueueManagingVirtualHost.Transaction#copy}} messages and the enqueue path
{{RoutingResult#send}} . The first two aren't affected as they are management
operations, use local transactions and don't thus use the async auto-commit
codes paths. I think the enqueue path could be a problem in the HA case. An
unfortunately timed loss of quorum whilst a message is being enqueued causing
the async auto commit transaction to fail could leak a message reference. (the
release within the rollback path of
org.apache.qpid.server.message.RoutingResult#send won't be called). However,
as in the HA case the loss of quorum results in a new master, I think the net
effect of the defect is currently nill.
I do think the {{AsyncCommand}} code should be correctly to call {{onRollback}}
so this defect cannot bite in future.
Separately, I notice that one of the AsyncAutoCommitTransaction#enqueue chains
a {{postCommit}} rather than a {{onRollback}}. This seems to a typo.
was (Author: k-wall):
{{ServerTransaction.EnqueueAction}} are used in three places:
{{QueueManagingVirtualHost.Transaction#move}} and
{{QueueManagingVirtualHost.Transaction#copy}} messages and the enqueue path
{{RoutingResult#send}} . The first two aren't affected as they are management
operations, use local transactions and don't thus use the async auto-commit
codes paths. I think the enqueue path could be a problem in the HA case. An
unfortunately timed loss of quorum whilst a message is being enqueued causing
the async auto commit transaction to fail could leak a message reference.
However, as in the HA case the loss of quorum results in a new master, I think
the net effect of the defect is currently nill.
I do think the {{AsyncCommand}} code should be correctly to call {{onRollback}}
so this defect cannot bite in future.
> [Broker-J] If the future associated with an AsyncCommand completes
> abnormally, the associated action is not rolled-back
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-8079
> URL: https://issues.apache.org/jira/browse/QPID-8079
> Project: Qpid
> Issue Type: Bug
> Components: Broker-J
> Reporter: Keith Wall
> Priority: Major
>
> The protocol layers currently use AsyncCommands to organise for work to be
> completed after an async auto-commit transaction competes. When
> {{AsyncCommand#complete}} is invoked, it awaits completion of the future then
> calls underlying action. The code currently fails to call \{{onRollback}} in
> the failure case.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]