Robbie Gemmell created PROTON-965:
Summary: [proton-j] freed receiver link may cause a removal from
the wrong collection in the session
Project: Qpid Proton
Issue Type: Bug
Affects Versions: 0.9.1
Reporter: Robbie Gemmell
Assignee: Robbie Gemmell
Fix For: 0.10
The changes for PROTON-853 contained a defect, as it left an old method call in
place that should have been removed.
When a receiver link object is free'd, the parent session is informed and
removes the link from a collection. Following PROTON-853 there are two such
collections, an existing map of current reciever links and a new list of old
stale links, of which the given object may be in one. The intent of the
SessionImpl#freeReceiver() method is to remove a receiver from the appropriate
list, however the old single-line "_receivers.remove(receiver.getName());"
implementation from before PRTON-853 was somehow left in place meaning it is
always called before the new implementation follows which understands the dual
collections. As a result, a link object may be removed from the map incorrectly
in certain cases (if it happened to have the same name, but was a different
object, from the freed object).
This message was sent by Atlassian JIRA