[ 
https://issues.apache.org/jira/browse/DISPATCH-630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15853922#comment-15853922
 ] 

Robbie Gemmell commented on DISPATCH-630:
-----------------------------------------

{quote}I don't think we are actually saying different things at this point, 
just looking at it from different perspectives.

In practice:

    A server consisting of a single process should always check a new 
connection against existing connections with the same container id... If there 
exists a connection with the same container id, and either connection has the 
sole use capability, then

    if both connections desire the new connection to be refused, the new 
connection should be refused
    if both connections desire the existing connection to be terminated, the 
existing connection should be terminated
    if there is a mismatch between the desires of the old connection and the 
new connection, then the new connection should be refused

    In the case of a cluster/network server then cases 1 and 2 should be 
honoured to the best of its abilities, and the behaviour of case 3 is 
essentially undefined, though if both connections want some sort of uniqueness 
but the nature of the failure case is different we would expect the server to 
terminate one of the connections

I think implementation guidance should be given to the above effect, but that 
spec should be written to allow for network/clusters to be compliant for the 
case of well-behaved clients. Neither of us expects a network/cluster to be 
able to actually fully implement connection uniqueness in the face of "badly 
behaved" clients I think.
{quote}

Essentially, yes.

I think the main annoyance for me is that as originally outlined for the JMS 
mapping, if the server response indicated it supported this mechanism, it was 
expected (by me at least) that it was guaranteed to be enforced, and were we to 
ever implement bits needed to do so, a check by the client or application could 
enforce if it was, whereas the above allows for the server to say it supports 
the mechanism and yet there still to be cases the container might be used by 
another connection. However, I freely admit those are likely the same cases I 
wouldnt have expected the mechanism to be implemented at all, so the chance of 
the client getting what it wants likely increases, its just unfortunate the 
certainty around the actual behaviour decreases.

> Detecting connections with the same container-id
> ------------------------------------------------
>
>                 Key: DISPATCH-630
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-630
>             Project: Qpid Dispatch
>          Issue Type: Improvement
>            Reporter: Paolo Patierno
>            Priority: Minor
>
> Using the router in the EnMasse project and looking into the MQTT 
> specification we have the following problem on the current EnMasse 
> implemetation.
> The MQTT specification says the following ...
> Let's imagine that a client is connected to the broker with client id "1234" 
> and that another client tries to connect with same client id. The broker will 
> shut down the connection with first client opening the new one.
> Now with our MQTT support, the MQTT gateway can run as multiple instances 
> (multiple pods) so this check can't be executed by the gateway locally 
> because a client "1234" could connect to MQTT GW-1 and another client (always 
> "1234") could connect to the MQTT GW-2 and the gateways don't know about each 
> other. The common point they have is the router network inside EnMasse and 
> the fact that for each MQTT client a new AMQP connection is created on the 
> other side attaching a link with this name : $mqtt.to.<client-id> 
> The following idea came ...
> If during the connection we use a container-id that is equals to the 
> client-id, could the router have a feature for detecting connections with 
> same container-id and providing a way to close the previous ones ?
> It should be an information shared (and cached ?) by routers in their 
> inter-router protocol.
> If not at connection level, maybe at link attachment level ? (when two 
> clients attach to the same $mqtt.to.<client-id> link)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to