zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Raul Gutierrez Segales (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-1807) Observers spam each other creating connections to the election addr
Date Thu, 07 Nov 2013 17:33:18 GMT

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

Raul Gutierrez Segales commented on ZOOKEEPER-1807:
---------------------------------------------------

(could we get a reviewboard for this? some inline comments below)

For:

{noformat}
+        // start server 3 with new config
+        zk[2] = new ZooKeeper("127.0.0.1:" + ports[2][2], ClientBase.CONNECTION_TIMEOUT,
this);
{noformat}

I think the zk[2] assignment goes before the comment. 

For:

{noformat}

+        for (int i=2; i<3; i++) {
+            Assert.assertTrue("waiting for server "+ i + " being up",
+                ClientBase.waitForServerUp("127.0.0.1:" + ports[i][2],
+                        CONNECTION_TIMEOUT * 2));
+            ReconfigTest.testServerHasConfig(zk[i], allServersNext, null);  
+        }
{noformat}

i<= 3? Or no loop if you only want it to loop one time I guess.

Also the ports assignment loop and the currentQuorumCfgSection creation are repeated in testObserverConvertedToParticipantDuringFLE
and testCurrentObserverIsParticipantInNewConfig; mind DRY-ing this up a bit by putting those
in private methods? (i.e.: generatePorts() and generateInitialConfig() or such such). 



> 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
>             Fix For: 3.5.0
>
>         Attachments: ZOOKEEPER-1807-alex.patch, ZOOKEEPER-1807-ver2.patch, ZOOKEEPER-1807-ver3.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.1#6144)

Mime
View raw message