You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Alexander Shraer (JIRA)" <ji...@apache.org> on 2013/10/13 07:51:41 UTC

[jira] [Commented] (ZOOKEEPER-1790) Deal with special ObserverId in QuorumCnxManager.receiveConnection

    [ 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)