[
https://issues.apache.org/jira/browse/ZOOKEEPER-2736?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15939612#comment-15939612
]
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_r107825507
--- 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 --
Please, make cnxnSet final.
> 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)