[
https://issues.apache.org/jira/browse/QPID-7605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16017397#comment-16017397
]
Lorenz Quack commented on QPID-7605:
------------------------------------
After reading through the above comments I'll try to summarise what is
currently needed:
* On Connection#receiveOpen check for 'sole-connection-for-container' desired
capability and always set it on offeredCapabilities
* if capability present look up remoteContainerId
** If it does not exist register this connection with that id
** If it does exist
*** on the response Open set
**** the containerId to the empty string
**** add the EMPTY_CONTAINER_ID_ON_OPEN_FAILS offered capability
**** the property Symbol("amqp:connection-establishment-failed") to
Boolean(True)
*** immediately close the connection. The Close should have key/value of
Symbol("invalid-field")/"container-id" in its info map.
* when connection closes and is currently registered remove the
remoteContainerId from registration
There are a couple of points that are unclear to me:
* 'sole-connection-for-container' capability is not defined in the bindmap spec
* EMPTY_CONTAINER_ID_ON_OPEN_FAILS and the semantics of an empty container-id
is not defined anywhere
* details on how to set the error reason in the info map is not defined in the
bindmap spec
* Are the above gaps in the spec already JIRAed?
* If a connection with 'sole-connection-for-container' is established and
subsequently a connection without the capability is attempted, what should
happen? allow?
* If a connection without 'sole-connection-for-container' is established and
subsequently a connection with the capability is attempted, what should happen?
allow?
* Is the scope of this feature VH or Broker?
> [Java Broker] [AMQP1.0] Container id uniqueness
> -----------------------------------------------
>
> Key: QPID-7605
> URL: https://issues.apache.org/jira/browse/QPID-7605
> Project: Qpid
> Issue Type: Improvement
> Components: Java Broker
> Reporter: Keith Wall
> Fix For: qpid-java-broker-7.0.0
>
>
> The AMQP 1.0 protocol layer implementation must ensure that the AMQP Open
> performative container-id is unique amongst existing established connections.
> As the JMS client id maps to the container-id, so this will fulfil the JMS
> requirement.
> https://docs.oracle.com/javaee/7/api/javax/jms/Connection.html#setClientID-java.lang.String-
> Note that the Qpid JMS Client requires the Close performative with an Error
> containing a hint to generate to correct JMS exception. How will the Qpid
> Broker know to do this?
> org.apache.qpid.jms.integration.FailedConnectionsIntegrationTest#testConnectWithInvalidClientIdThrowsICIDEWhenInvalidContainerHintPresent
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]