[jira] [Comment Edited] (QPID-8079) [Broker-J] If the future associated with an AsyncCommand completes abnormally, the associated action is not rolled-back

2018-01-16 Thread Keith Wall (JIRA)

[ 
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:54 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.

In the non-HA case, if the underlying transaction fails, the Broker always 
fails, so again the net effect of the defect is 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. (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.  

 

 

 

> [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: Minor
>
> 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: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org



[jira] [Comment Edited] (QPID-8079) [Broker-J] If the future associated with an AsyncCommand completes abnormally, the associated action is not rolled-back

2018-01-16 Thread Keith Wall (JIRA)

[ 
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:54 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.

In the non-HA case, if the underlying transaction fails, the Broker always 
fails, so again the net effect of the defect is 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. (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.

In the non-HA case, if the underlying transaction fails, the Broker always 
fails, so again the net effect of the defect is 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.  

 

 

 

> [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: Minor
>
> 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: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org



[jira] [Comment Edited] (QPID-8079) [Broker-J] If the future associated with an AsyncCommand completes abnormally, the associated action is not rolled-back

2018-01-16 Thread Keith Wall (JIRA)

[ 
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: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org