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)