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

Alexander Shraer commented on ZOOKEEPER-1790:
---------------------------------------------

I misunderstood the code - there may not be a problem after all.

            if (sid == QuorumPeer.OBSERVER_ID) {
                /*
                 * Choose identifier at random. We need a value to identify
                 * the connection.
                 */
                
                sid = observerCounter--;
 
Where OBSERVER_ID = Long.MAX_VALUE and observerCounter is initially -1.
So seems that the first thing being sent is a positive number, whereas the 
newly introduced protocol numbers are negative, so everything seems ok.

Frankly I don't fully understand how these type of observers are connecting. I 
don't see any tests or any other code besides above using OBSERVER_ID.

Closing this for now, if anyone sees a problem please reopen.



> Deal with special ObserverId in QuorumCnxManager.receiveConnection
> ------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1790
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1790
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.4.6, 3.5.0
>            Reporter: Alexander Shraer
>            Assignee: Alexander Shraer
>             Fix For: 3.4.6, 3.5.0
>
>
> QuorumCnxManager.receiveConnection assumes that a negative sid means that 
> this is a 3.5.0 server, which has a different communication protocol. This 
> doesn't account for the fact that ObserverId = -1 is a special id that may be 
> used by observers and is also negative. 
> This requires a fix to trunk and a separate fix to 3.4 branch, where this 
> function is different (see ZOOKEEPER-1633)



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to