zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param
Date Mon, 27 Mar 2017 18:22:42 GMT

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

ASF GitHub Bot commented on ZOOKEEPER-2280:
-------------------------------------------

Github user eribeiro commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/208#discussion_r108242965
  
    --- Diff: src/java/test/org/apache/zookeeper/server/NettyServerCnxnTest.java ---
    @@ -84,4 +98,78 @@ public void testSendCloseSession() throws Exception {
                 zk.close();
             }
         }
    +
    +    @Test(timeout = 30000)
    +    public void testMaxClientConnectionsReached() throws Exception {
    +        final int maxClientCnxns = 4;
    +        final int numClients = 10;
    +        createAndTestConnections(numClients, maxClientCnxns, maxClientCnxns);
    +    }
    +
    +    @Test(timeout = 30000)
    +    public void testMaxClientConnectionsDisabled() throws Exception {
    +        final int maxClientCnxns = 0; // disabled cnxns limit
    +        final int numClients = 10;
    +        createAndTestConnections(numClients, maxClientCnxns, numClients);
    +    }
    +
    +    private void createAndTestConnections(int numClients, int maxClientCnxns, int cnxnsAccepted)
throws Exception {
    +
    +        File tmpDir = ClientBase.createTmpDir();
    +        final int CLIENT_PORT = PortAssignment.unique();
    +
    +        ZooKeeperServer zks = new ZooKeeperServer(tmpDir, tmpDir, 3000);
    +        ServerCnxnFactory scf = ServerCnxnFactory.createFactory(CLIENT_PORT, maxClientCnxns);
    +        scf.startup(zks);
    +
    +        try {
    +            assertTrue("waiting for server being up",
    +                    ClientBase.waitForServerUp("127.0.0.1:" + CLIENT_PORT, CONNECTION_TIMEOUT));
    +            assertTrue("Didn't instantiate ServerCnxnFactory with NettyServerCnxnFactory!",
    +                    scf instanceof NettyServerCnxnFactory);
    +
    +            assertEquals(0, scf.getNumAliveConnections());
    +
    +            assertTrue(cnxnsAccepted <= numClients);
    +
    +            final CountDownLatch countDownLatch = new CountDownLatch(cnxnsAccepted);
    +
    +            TestableZooKeeper[] clients = new TestableZooKeeper[numClients];
    +            for (int i = 0; i < numClients; i++) {
    +                clients[i] = new TestableZooKeeper("127.0.0.1:" + CLIENT_PORT, 3000,
new Watcher() {
    +                    @Override
    +                    public void process(WatchedEvent event)
    +                    {
    +                        if (event.getState() == Event.KeeperState.SyncConnected) {
    +                           countDownLatch.countDown();
    +                        }
    +                    }
    +                });
    +            }
    +
    +            countDownLatch.await();
    +
    +            assertEquals(cnxnsAccepted, scf.getNumAliveConnections());
    +
    +            ConcurrentMap<InetAddress, Set<NettyServerCnxn>> ipMap = ((NettyServerCnxnFactory)
scf).ipMap;
    +            assertEquals(1, ipMap.size());
    +            Set<NettyServerCnxn> set = ipMap.get(ipMap.keySet().toArray()[0]);
    +            assertEquals(cnxnsAccepted, set.size());
    +
    +            int connected = 0;
    +            for (int i = 0; i < numClients; i++) {
    +                if (clients[i].getState().isConnected()) connected++;
    --- End diff --
    
    Oops, indeed! +1.


> NettyServerCnxnFactory doesn't honor maxClientCnxns param
> ---------------------------------------------------------
>
>                 Key: ZOOKEEPER-2280
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2280
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.4.6, 3.5.0, 3.5.1
>            Reporter: Edward Ribeiro
>            Assignee: Edward Ribeiro
>             Fix For: 3.5.4, 3.6.0
>
>         Attachments: ZOOKEEPER-2280.2.patch, ZOOKEEPER-2280.patch
>
>
> Even though NettyServerCnxnFactory has maxClientCnxns (default to 60) it doesn't enforce
this limit in the code.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message