[ https://issues.apache.org/jira/browse/ZOOKEEPER-2736?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15939600#comment-15939600 ]
ASF GitHub Bot commented on ZOOKEEPER-2736: ------------------------------------------- Github user eribeiro commented on a diff in the pull request: https://github.com/apache/zookeeper/pull/205#discussion_r107822018 --- Diff: src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java --- @@ -607,9 +618,28 @@ public static ByteBuffer getDirectBuffer() { // sessionMap is used by closeSession() private final ConcurrentHashMap<Long, NIOServerCnxn> sessionMap = new ConcurrentHashMap<Long, NIOServerCnxn>(); - // ipMap is used to limit connections per IP - private final ConcurrentHashMap<InetAddress, Set<NIOServerCnxn>> ipMap = - new ConcurrentHashMap<InetAddress, Set<NIOServerCnxn>>( ); + // ipMap is used to limit connections and connection rate per IP + private final ConcurrentHashMap<InetAddress, IpCnxns> ipMap + = new ConcurrentHashMap<InetAddress, IpCnxns>(); + + // for each IP, we keep a RateLimiter to limit connection rate, + // as well as a set of connections to limit total number of connections + private static class IpCnxns { + private IpCnxns(RateLimiter rateLimiter) { + this.rateLimiter = rateLimiter; + } + + // in general we will see 1 connection from each + // host, setting the initial cap to 2 allows us + // to minimize mem usage in the common case + // of 1 entry -- we need to set the initial cap + // to 2 to avoid rehash when the first entry is added + // Construct a ConcurrentHashSet using a ConcurrentHashMap + private Set<NIOServerCnxn> cnxnSet = Collections --- End diff -- We put the fields before the constructor here, so these fields should be moved up. > Add a connection rate limiter > ----------------------------- > > Key: ZOOKEEPER-2736 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2736 > Project: ZooKeeper > Issue Type: Improvement > Components: server > Affects Versions: 3.4.9, 3.5.2 > Reporter: Vincent Poon > Attachments: ZOOKEEPER-2736.v1.patch > > > Currently the maxClientCnxns property only limits the aggregate number of > connections from a client, but not the rate at which connections can be > created. > This patch adds a configurable connection rate limiter which limits the rate > as well. -- This message was sent by Atlassian JIRA (v6.3.15#6346)