[ https://issues.apache.org/jira/browse/ZOOKEEPER-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13968664#comment-13968664 ]
Alexander Shraer commented on ZOOKEEPER-1807: --------------------------------------------- I think sending to just current config voters is good enough. I don't think Old->New notifications are needed: - if next config is not committed, no point in notifying them - we need the current config to come up anyway. - if next config is committed, they'll notify whoever's a voter in next config. Servers in current config only need to make sure they let all potential voters in current config know that they need their vote. I think the point is that observers will also execute sendNotifications, so they will talk with followers this way, just not with other observers. > Observers spam each other creating connections to the election addr > ------------------------------------------------------------------- > > Key: ZOOKEEPER-1807 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1807 > Project: ZooKeeper > Issue Type: Bug > Reporter: Raul Gutierrez Segales > Assignee: Alexander Shraer > Priority: Blocker > Fix For: 3.5.0 > > Attachments: ZOOKEEPER-1807-alex.patch, ZOOKEEPER-1807-ver2.patch, > ZOOKEEPER-1807-ver3.patch, ZOOKEEPER-1807-ver4.patch, > ZOOKEEPER-1807-ver5.patch, ZOOKEEPER-1807.patch, notifications-loop.png > > > Hey [~shralex], > I noticed today that my Observers are spamming each other trying to open > connections to the election port. I've got tons of these: > {noformat} > 2013-11-01 22:19:45,819 - DEBUG [WorkerSender[myid=13]] - There is a > connection already for server 9 > 2013-11-01 22:19:45,819 - DEBUG [WorkerSender[myid=13]] - There is a > connection already for server 10 > 2013-11-01 22:19:45,819 - DEBUG [WorkerSender[myid=13]] - There is a > connection already for server 6 > 2013-11-01 22:19:45,819 - DEBUG [WorkerSender[myid=13]] - There is a > connection already for server 12 > 2013-11-01 22:19:45,819 - DEBUG [WorkerSender[myid=13]] - There is a > connection already for server 14 > {noformat} > and so and so on ad nauseam. > Now, looking around I found this inside FastLeaderElection.java from when you > committed ZOOKEEPER-107: > {noformat} > private void sendNotifications() { > - for (QuorumServer server : self.getVotingView().values()) { > - long sid = server.id; > - > + for (long sid : self.getAllKnownServerIds()) { > + QuorumVerifier qv = self.getQuorumVerifier(); > {noformat} > Is that really desired? I suspect that is what's causing Observers to try to > connect to each other (as opposed as just connecting to participants). I'll > give it a try now and let you know. (Also, we use observer ids that are > 0, > and I saw some parts of the code that might not deal with that assumption - > so it could be that too..). -- This message was sent by Atlassian JIRA (v6.2#6252)