-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/39561/
-----------------------------------------------------------

(Updated Oct. 23, 2015, 9:28 a.m.)


Review request for qpid, Alan Conway and Kenneth Giusti.


Changes
-------

Based on the clarification from Ken, that a call to clone() does not imply 
async completion in all cases, I have updated the patch to *always* record a 
pending accept whether or not that accept is then made synchronously or 
triggered by an asynchronous callback. The accepted() call now clears the 
epnding status when actually accepting, i.e. when sync=true. When sync=false, 
accepted() merely checks that the delivery is indeed pending before adding it 
to the completed set, which I think gives a clearer guarantee against the 
problem Alan raised.


Bugs: QPID-6790
    https://issues.apache.org/jira/browse/QPID-6790


Repository: qpid


Description
-------

This is an alterntaive fix that simply shortcircuits the asynchornous 
completion for deliveries whose link has already been freed. It does this by 
tracking deliveries for which asynchronous acceptance is pending, and on 
deleting links removes the records of any deliveries affected. On handling an 
asynchronous accept, the epnding set is consulted first and the accept only 
proceeds if it is found.


Diffs (updated)
-----

  trunk/qpid/cpp/src/qpid/broker/amqp/Incoming.cpp 1710066 
  trunk/qpid/cpp/src/qpid/broker/amqp/Session.h 1710066 
  trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp 1710066 

Diff: https://reviews.apache.org/r/39561/diff/


Testing
-------

Passes make test.


Thanks,

Gordon Sim

Reply via email to