Bug 1254951

Summary: qpidd does not support limiting a container-id to a single connection (JMS ClientID enforcement)
Product: Red Hat Enterprise MRG Reporter: Robbie Gemmell <rgemmell>
Component: qpid-cppAssignee: messaging-bugs <messaging-bugs>
Status: NEW --- QA Contact: Messaging QE <messaging-qe-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 3.2CC: gsim, jross, messaging-bugs
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Known Issue
Doc Text:
In this release of the product, when using +qpidd+ as the broker, there can be more than one active connection with the same JMS `client-id`. This is because +qpidd+ does not recognise the connection capability requested by the JMS client over AMQP 1.0 which allows only a single connection with the same container ID. As a workaround, +qpidd+ does allow limiting connections by userid, which may satisfy some cases.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Robbie Gemmell 2015-08-19 10:05:31 UTC
The broker does not support restricting a ContainerID to having a single connection associated at a time. JMS clients depend on this to satisfy the requirement that a ClientID value is only in use by a single Connection at a time.

The JMS client uses a layered mechanism to request this by sending a desired-capability symbol of "sole-connection-for-container". If the broker supports the feature it should reply with the same as an offered-capability (the client may then choose whether it minds if the broker does this or not). If the broker does support the mechanism and the new connection is not the only one with the given container-id then it should close the connection. In order to hint to the client that the connection open has failed and the connection will actually be immediately closed, the Open response should contain a property of "amqp:connection-establishment-failed". The Close frame should then be sent with "illegal-argument" error condition. In order to convey in the Close frame that the container-id was the problem value (so the client cant tell it is a ClientID problem and throw the specific exception), the error info map should contain a map entry with symbol key "invalid-field" and symbol entry "container-id".