ZooKeeper-trunk-WinVS2008 - Build # 2445 - Still Failing

2017-03-24 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper-trunk-WinVS2008/2445/

###
## LAST 60 LINES OF THE CONSOLE 
###
Started by an SCM change
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
[EnvInject] - Loading node environment variables.
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
Building remotely on windows-2012-2 (Windows) in workspace 
f:\jenkins\jenkins-slave\workspace\ZooKeeper-trunk-WinVS2008
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git://git.apache.org/zookeeper.git # timeout=10
Cleaning workspace
 > git rev-parse --verify HEAD # timeout=10
Resetting working tree
 > git reset --hard # timeout=10
 > git clean -fdx # timeout=10
Fetching upstream changes from git://git.apache.org/zookeeper.git
 > git --version # timeout=10
 > git fetch --tags --progress git://git.apache.org/zookeeper.git 
 > +refs/heads/*:refs/remotes/origin/*
 > git rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
 > git rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
Checking out Revision 54c7f6b472ed7bb10fd86cb3c28262fa4f7351d9 
(refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 54c7f6b472ed7bb10fd86cb3c28262fa4f7351d9
 > git rev-list 54c7f6b472ed7bb10fd86cb3c28262fa4f7351d9 # timeout=10
No emails were triggered.
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
[ZooKeeper-trunk-WinVS2008] $ cmd.exe /C 
"F:\jenkins\tools\ant\latest\bin\ant.bat -Dtest.output=yes 
-Dtest.junit.output.format=xml clean compile_jute && exit %%ERRORLEVEL%%"
java.lang.UnsupportedClassVersionError: org/apache/tools/ant/launch/Launcher : 
Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main" Build step 'Invoke Ant' marked build as failure
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found



###
## FAILED TESTS (if any) 
##
No tests ran.

ZooKeeper-trunk-WinVS2008 - Build # 2444 - Still Failing

2017-03-24 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper-trunk-WinVS2008/2444/

###
## LAST 60 LINES OF THE CONSOLE 
###
Started by timer
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
[EnvInject] - Loading node environment variables.
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
Building remotely on windows-2012-2 (Windows) in workspace 
f:\jenkins\jenkins-slave\workspace\ZooKeeper-trunk-WinVS2008
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git://git.apache.org/zookeeper.git # timeout=10
Cleaning workspace
 > git rev-parse --verify HEAD # timeout=10
Resetting working tree
 > git reset --hard # timeout=10
 > git clean -fdx # timeout=10
Fetching upstream changes from git://git.apache.org/zookeeper.git
 > git --version # timeout=10
 > git fetch --tags --progress git://git.apache.org/zookeeper.git 
 > +refs/heads/*:refs/remotes/origin/*
 > git rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
 > git rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
Checking out Revision 54c7f6b472ed7bb10fd86cb3c28262fa4f7351d9 
(refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 54c7f6b472ed7bb10fd86cb3c28262fa4f7351d9
 > git rev-list 0313a0e0b6c47b316271533165e5830d1ca04478 # timeout=10
No emails were triggered.
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
[ZooKeeper-trunk-WinVS2008] $ cmd.exe /C 
"F:\jenkins\tools\ant\latest\bin\ant.bat -Dtest.output=yes 
-Dtest.junit.output.format=xml clean compile_jute && exit %%ERRORLEVEL%%"
java.lang.UnsupportedClassVersionError: org/apache/tools/ant/launch/Launcher : 
Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main" Build step 'Invoke Ant' marked build as failure
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found
No JDK named ‘JDK 1.8 (unlimited security) 64-bit Windows only’ found



###
## FAILED TESTS (if any) 
##
No tests ran.

[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/208#discussion_r108028137
  
--- Diff: src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java ---
@@ -100,11 +101,15 @@ public void close() {
 + Long.toHexString(sessionId));
 }
 
-synchronized (factory.ipMap) {
-Set s =
-factory.ipMap.get(((InetSocketAddress)channel
-.getRemoteAddress()).getAddress());
-s.remove(this);
+InetAddress address = ((InetSocketAddress) 
channel.getRemoteAddress()).getAddress();
+Set s = factory.ipMap.get(address);
+if (s != null) {
+synchronized (s) {
--- End diff --

Do you need the synchronized here if you're using 
Collections.synchronizedSet already?


> 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)


[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/208#discussion_r108028293
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java ---
@@ -109,6 +110,20 @@ public void channelConnected(ChannelHandlerContext ctx,
 zkServer, NettyServerCnxnFactory.this);
 ctx.setAttachment(cnxn);
 
+InetAddress addr = 
((InetSocketAddress)cnxn.channel.getRemoteAddress()).getAddress();
+Set s = ipMap.get(addr);
+if (s != null) {
+synchronized (s) {
--- End diff --

Same here - check if synchronized is needed


> 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)


[GitHub] zookeeper pull request #208: ZOOKEEPER-2280: NettyServerCnxnFactory doesn't ...

2017-03-24 Thread vincentpoon
Github user vincentpoon commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/208#discussion_r108028137
  
--- Diff: src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java ---
@@ -100,11 +101,15 @@ public void close() {
 + Long.toHexString(sessionId));
 }
 
-synchronized (factory.ipMap) {
-Set s =
-factory.ipMap.get(((InetSocketAddress)channel
-.getRemoteAddress()).getAddress());
-s.remove(this);
+InetAddress address = ((InetSocketAddress) 
channel.getRemoteAddress()).getAddress();
+Set s = factory.ipMap.get(address);
+if (s != null) {
+synchronized (s) {
--- End diff --

Do you need the synchronized here if you're using 
Collections.synchronizedSet already?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #208: ZOOKEEPER-2280: NettyServerCnxnFactory doesn't ...

2017-03-24 Thread vincentpoon
Github user vincentpoon commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/208#discussion_r108028293
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java ---
@@ -109,6 +110,20 @@ public void channelConnected(ChannelHandlerContext ctx,
 zkServer, NettyServerCnxnFactory.this);
 ctx.setAttachment(cnxn);
 
+InetAddress addr = 
((InetSocketAddress)cnxn.channel.getRemoteAddress()).getAddress();
+Set s = ipMap.get(addr);
+if (s != null) {
+synchronized (s) {
--- End diff --

Same here - check if synchronized is needed


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread Hadoop QA (JIRA)

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

Hadoop QA commented on ZOOKEEPER-2280:
--

-1 overall.  GitHub Pull Request  Build
  

+1 @author.  The patch does not contain any @author tags.

+1 tests included.  The patch appears to include 3 new or modified tests.

+1 javadoc.  The javadoc tool did not generate any warning messages.

+1 javac.  The applied patch does not increase the total number of javac 
compiler warnings.

+1 findbugs.  The patch does not introduce any new Findbugs (version 3.0.1) 
warnings.

+1 release audit.  The applied patch does not increase the total number of 
release audit warnings.

-1 core tests.  The patch failed core unit tests.

+1 contrib tests.  The patch passed contrib unit tests.

Test results: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/481//testReport/
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/481//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Console output: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/481//console

This message is automatically generated.

> 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)


Failed: ZOOKEEPER- PreCommit Build #481

2017-03-24 Thread Apache Jenkins Server
Build: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/481/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 68.97 MB...]
 [exec] 
 [exec] +1 javadoc.  The javadoc tool did not generate any warning 
messages.
 [exec] 
 [exec] +1 javac.  The applied patch does not increase the total number 
of javac compiler warnings.
 [exec] 
 [exec] +1 findbugs.  The patch does not introduce any new Findbugs 
(version 3.0.1) warnings.
 [exec] 
 [exec] +1 release audit.  The applied patch does not increase the 
total number of release audit warnings.
 [exec] 
 [exec] -1 core tests.  The patch failed core unit tests.
 [exec] 
 [exec] +1 contrib tests.  The patch passed contrib unit tests.
 [exec] 
 [exec] Test results: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/481//testReport/
 [exec] Findbugs warnings: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/481//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
 [exec] Console output: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/481//console
 [exec] 
 [exec] This message is automatically generated.
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Adding comment to Jira.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] Comment added.
 [exec] a6e1e3ad9e9cfdf97d2a91f5f0869fe4bc975bbf logged out
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Finished build.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] mv: 
'/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess'
 and 
'/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess'
 are the same file

BUILD FAILED
/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/build.xml:1642:
 exec returned: 1

Total time: 13 minutes 55 seconds
Build step 'Execute shell' marked build as failure
Archiving artifacts
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Compressed 578.90 KB of artifacts by 49.7% relative to #480
Recording test results
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
[description-setter] Description set: ZOOKEEPER-2280
Putting comment on the pull request
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7



###
## FAILED TESTS (if any) 
##
3 tests failed.
FAILED:  
org.apache.zookeeper.server.NettyServerCnxnTest.testMaxClientConnectionsReached

Error Message:
test timed out after 3 milliseconds

Stack Trace:
org.junit.runners.model.TestTimedOutException: test timed out after 3 
milliseconds
at 
java.util.Collections$SynchronizedCollection.size(Collections.java:1616)
at 
org.apache.zookeeper.server.NettyServerCnxnTest.createAndTestConnections(NettyServerCnxnTest.java:168)
at 
org.apache.zookeeper.server.NettyServerCnxnTest.testMaxClientConnectionsReached(NettyServerCnxnTest.java:106)
at 
org.apache.zookeeper.JUnit4ZKTestRunner$LoggedInvokeMethod.evaluate(JUnit4ZKTestRunner.java:79)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.lang.Thread.run(Thread.java:745)


FAILED:  
org.apache.zookeeper.server.quorum.ReconfigDuringLeaderSyncTest.testDuringLeaderSync

Error Message:
zoo.cfg.dynamic.next is not deleted.

Stack Trace:
junit.framework.AssertionFailedError: zoo.cfg.dynamic.next is not deleted.
at 
org.apache.zookeeper.server.quorum.ReconfigDuringLeaderSyncTest.testDuringLeaderSync(ReconfigDuringLeaderSyncTest.java:165)
at 
org.apache.zookeeper.JUnit4ZKTestRunner$LoggedInvokeMethod.evaluate(JUnit4ZKTestRunner.java:79)


FAILED:  
org.apache.zookeeper.test.WatchEventWhenAutoResetTest.testNodeDa

[jira] [Comment Edited] (ZOOKEEPER-2739) maxClientCnxns not working in NettyServerCnxnFactory

2017-03-24 Thread Edward Ribeiro (JIRA)

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

Edward Ribeiro edited comment on ZOOKEEPER-2739 at 3/25/17 4:34 AM:


Hi [~vincentpoon], I have created a new PR for ZOOKEEPER-2280 and rebased it to 
current master. It also applies to branch-3.5, btw. The jira issue has the 
updated link now.

There are two review comments by [~fpj] yet to be addressed (I commented on new 
PR) and further review/tests. Gonna do that next, so that we can get this patch 
in asap. Any comment on PR is welcome in the meantime. :)


was (Author: eribeiro):
Hi [~vincentpoon], I have created a new PR and rebased it to current master. It 
also applies to branch-3.5. There are two review comments by [~fpj] yet to be 
addressed (I commented on new PR) and further review/tests. Gonna do that next. 
Any comment on PR is welcome in the meantime. :)

> maxClientCnxns not working in NettyServerCnxnFactory
> 
>
> Key: ZOOKEEPER-2739
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2739
> Project: ZooKeeper
>  Issue Type: Bug
>Affects Versions: 3.4.9, 3.5.0, 3.6.0
>Reporter: Vincent Poon
> Attachments: MaxNettyCnxnsTest.patch
>
>
> The maxClientCnxns field isn't being used in NettyServerCnxnFactory, and 
> therefore the connection limit isn't observed.
> See attached test



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


[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread Hadoop QA (JIRA)

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

Hadoop QA commented on ZOOKEEPER-2280:
--

+1 overall.  GitHub Pull Request  Build
  

+1 @author.  The patch does not contain any @author tags.

+1 tests included.  The patch appears to include 3 new or modified tests.

+1 javadoc.  The javadoc tool did not generate any warning messages.

+1 javac.  The applied patch does not increase the total number of javac 
compiler warnings.

+1 findbugs.  The patch does not introduce any new Findbugs (version 3.0.1) 
warnings.

+1 release audit.  The applied patch does not increase the total number of 
release audit warnings.

+1 core tests.  The patch passed core unit tests.

+1 contrib tests.  The patch passed contrib unit tests.

Test results: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/480//testReport/
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/480//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Console output: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/480//console

This message is automatically generated.

> 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)


[jira] [Commented] (ZOOKEEPER-2739) maxClientCnxns not working in NettyServerCnxnFactory

2017-03-24 Thread Edward Ribeiro (JIRA)

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

Edward Ribeiro commented on ZOOKEEPER-2739:
---

Hi [~vincentpoon], I have created a new PR and rebased it to current master. It 
also applies to branch-3.5. There are two review comments by [~fpj] yet to be 
addressed (I commented on new PR) and further review/tests. Gonna do that next. 
Any comment on PR is welcome in the meantime. :)

> maxClientCnxns not working in NettyServerCnxnFactory
> 
>
> Key: ZOOKEEPER-2739
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2739
> Project: ZooKeeper
>  Issue Type: Bug
>Affects Versions: 3.4.9, 3.5.0, 3.6.0
>Reporter: Vincent Poon
> Attachments: MaxNettyCnxnsTest.patch
>
>
> The maxClientCnxns field isn't being used in NettyServerCnxnFactory, and 
> therefore the connection limit isn't observed.
> See attached test



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


Success: ZOOKEEPER- PreCommit Build #480

2017-03-24 Thread Apache Jenkins Server
Build: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/480/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 68.81 MB...]
 [exec] 
 [exec] +1 @author.  The patch does not contain any @author tags.
 [exec] 
 [exec] +1 tests included.  The patch appears to include 3 new or 
modified tests.
 [exec] 
 [exec] +1 javadoc.  The javadoc tool did not generate any warning 
messages.
 [exec] 
 [exec] +1 javac.  The applied patch does not increase the total number 
of javac compiler warnings.
 [exec] 
 [exec] +1 findbugs.  The patch does not introduce any new Findbugs 
(version 3.0.1) warnings.
 [exec] 
 [exec] +1 release audit.  The applied patch does not increase the 
total number of release audit warnings.
 [exec] 
 [exec] +1 core tests.  The patch passed core unit tests.
 [exec] 
 [exec] +1 contrib tests.  The patch passed contrib unit tests.
 [exec] 
 [exec] Test results: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/480//testReport/
 [exec] Findbugs warnings: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/480//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
 [exec] Console output: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/480//console
 [exec] 
 [exec] This message is automatically generated.
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Adding comment to Jira.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] Comment added.
 [exec] a224741cee626539fae8e29f09a45b29de4e5051 logged out
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Finished build.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] mv: 
'/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess'
 and 
'/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess'
 are the same file

BUILD SUCCESSFUL
Total time: 18 minutes 43 seconds
Archiving artifacts
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Recording test results
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
[description-setter] Description set: ZOOKEEPER-2280
Putting comment on the pull request
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Email was triggered for: Success
Sending email for trigger: Success
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7



###
## FAILED TESTS (if any) 
##
All tests passed

[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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_r108027802
  
--- Diff: src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java ---
@@ -100,11 +101,15 @@ public void close() {
 + Long.toHexString(sessionId));
 }
 
-synchronized (factory.ipMap) {
-Set s =
-factory.ipMap.get(((InetSocketAddress)channel
-.getRemoteAddress()).getAddress());
-s.remove(this);
+InetAddress address = ((InetSocketAddress) 
channel.getRemoteAddress()).getAddress();
+Set s = factory.ipMap.get(address);
--- End diff --

TODO: "This management of the ipMap looks like something that should be 
done by the factory, not the connection. should we move this logic to the 
factory?"


> 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)


[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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_r108027783
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java ---
@@ -109,6 +110,20 @@ public void channelConnected(ChannelHandlerContext ctx,
 zkServer, NettyServerCnxnFactory.this);
 ctx.setAttachment(cnxn);
 
+InetAddress addr = 
((InetSocketAddress)cnxn.channel.getRemoteAddress()).getAddress();
+Set s = ipMap.get(addr);
+if (s != null) {
+synchronized (s) {
+int cnxncount = s.size();
+if (maxClientCnxns > 0 && cnxncount >= maxClientCnxns) 
{
+LOG.warn("Closed new connection from address {} 
({} connections established) - max is {}",
+addr, cnxncount, maxClientCnxns);
+cnxn.close();
+ctx.getChannel().close().awaitUninterruptibly();
--- End diff --

TODO: double-check that this is the right order of closing cnxn and channel


> 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)


[GitHub] zookeeper pull request #208: ZOOKEEPER-2280: NettyServerCnxnFactory doesn't ...

2017-03-24 Thread eribeiro
Github user eribeiro commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/208#discussion_r108027802
  
--- Diff: src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java ---
@@ -100,11 +101,15 @@ public void close() {
 + Long.toHexString(sessionId));
 }
 
-synchronized (factory.ipMap) {
-Set s =
-factory.ipMap.get(((InetSocketAddress)channel
-.getRemoteAddress()).getAddress());
-s.remove(this);
+InetAddress address = ((InetSocketAddress) 
channel.getRemoteAddress()).getAddress();
+Set s = factory.ipMap.get(address);
--- End diff --

TODO: "This management of the ipMap looks like something that should be 
done by the factory, not the connection. should we move this logic to the 
factory?"


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #208: ZOOKEEPER-2280: NettyServerCnxnFactory doesn't ...

2017-03-24 Thread eribeiro
Github user eribeiro commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/208#discussion_r108027783
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java ---
@@ -109,6 +110,20 @@ public void channelConnected(ChannelHandlerContext ctx,
 zkServer, NettyServerCnxnFactory.this);
 ctx.setAttachment(cnxn);
 
+InetAddress addr = 
((InetSocketAddress)cnxn.channel.getRemoteAddress()).getAddress();
+Set s = ipMap.get(addr);
+if (s != null) {
+synchronized (s) {
+int cnxncount = s.size();
+if (maxClientCnxns > 0 && cnxncount >= maxClientCnxns) 
{
+LOG.warn("Closed new connection from address {} 
({} connections established) - max is {}",
+addr, cnxncount, maxClientCnxns);
+cnxn.close();
+ctx.getChannel().close().awaitUninterruptibly();
--- End diff --

TODO: double-check that this is the right order of closing cnxn and channel


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

Github user eribeiro commented on the issue:

https://github.com/apache/zookeeper/pull/77
  
Closing this PR as the patch has moved to 
https://github.com/apache/zookeeper/pull/208 (still needs to address review 
comments tough). 


> 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)


[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

Github user eribeiro closed the pull request at:

https://github.com/apache/zookeeper/pull/77


> 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)


[GitHub] zookeeper pull request #77: ZOOKEEPER-2280: NettyServerCnxnFactory doesn't i...

2017-03-24 Thread eribeiro
Github user eribeiro closed the pull request at:

https://github.com/apache/zookeeper/pull/77


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper issue #77: ZOOKEEPER-2280: NettyServerCnxnFactory doesn't implemen...

2017-03-24 Thread eribeiro
Github user eribeiro commented on the issue:

https://github.com/apache/zookeeper/pull/77
  
Closing this PR as the patch has moved to 
https://github.com/apache/zookeeper/pull/208 (still needs to address review 
comments tough). 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (ZOOKEEPER-2280) NettyServerCnxnFactory doesn't honor maxClientCnxns param

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

GitHub user eribeiro opened a pull request:

https://github.com/apache/zookeeper/pull/208

ZOOKEEPER-2280: NettyServerCnxnFactory doesn't implement maxClientCnxns



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/eribeiro/zookeeper ZOOKEEPER-2280

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/zookeeper/pull/208.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #208


commit ceaa5a2f0cf851620a6e61a84e597d30d42da131
Author: Edward Ribeiro 
Date:   2017-03-25T03:59:12Z

ZOOKEEPER-2280: NettyServerCnxnFactory doesn't implement maxClientCnxns




> 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)


[GitHub] zookeeper pull request #208: ZOOKEEPER-2280: NettyServerCnxnFactory doesn't ...

2017-03-24 Thread eribeiro
GitHub user eribeiro opened a pull request:

https://github.com/apache/zookeeper/pull/208

ZOOKEEPER-2280: NettyServerCnxnFactory doesn't implement maxClientCnxns



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/eribeiro/zookeeper ZOOKEEPER-2280

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/zookeeper/pull/208.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #208


commit ceaa5a2f0cf851620a6e61a84e597d30d42da131
Author: Edward Ribeiro 
Date:   2017-03-25T03:59:12Z

ZOOKEEPER-2280: NettyServerCnxnFactory doesn't implement maxClientCnxns




---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (ZOOKEEPER-2739) maxClientCnxns not working in NettyServerCnxnFactory

2017-03-24 Thread Vincent Poon (JIRA)

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

Vincent Poon commented on ZOOKEEPER-2739:
-

[~eribeiro] Looks like you had a working patch and just needed a rebase!

If you can get that in, I can put in the rate limiter in ZOOKEEPER-2736 on top. 
 And thanks for your review on that btw, still working on the revision.

> maxClientCnxns not working in NettyServerCnxnFactory
> 
>
> Key: ZOOKEEPER-2739
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2739
> Project: ZooKeeper
>  Issue Type: Bug
>Affects Versions: 3.4.9, 3.5.0, 3.6.0
>Reporter: Vincent Poon
> Attachments: MaxNettyCnxnsTest.patch
>
>
> The maxClientCnxns field isn't being used in NettyServerCnxnFactory, and 
> therefore the connection limit isn't observed.
> See attached test



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


[jira] [Comment Edited] (ZOOKEEPER-2659) Use log4j2 as a logging framework as log4j 1.X is now deprecated

2017-03-24 Thread Edward Ribeiro (JIRA)

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

Edward Ribeiro edited comment on ZOOKEEPER-2659 at 3/25/17 2:49 AM:


Hey [~praste],

I am no committer, but I see that you have invested *a lot* of work on this. 
This has been the subject of a previous and unfinished JIRA issue, 
ZOOKEEPER-2342, so definitely there is an interest on this matter. Wouldn't you 
like to reopen this jira issue and the PR you made, so that others in the 
community can take a look?

I will take the liberty to ping some ZK committers -- [~arshadmohammad], 
[~hanm] so that they can take a look when/if they have a spare cycles. I hope 
you don't mind guys! I know you are pretty busy, but migrating to newer 
versions of log4j is a must have for future ZK versions, imo.

Cheers!



was (Author: eribeiro):
Hey [~praste],

I am no committer, but I see that you have invested *a lot* of work on this. 
This has been the subject of a previous and unfinished JIRA issue, 
ZOOKEEPER-2342, so definitely there is an interest on this matter. Wouldn't you 
like to reopen the PR you made, so that others in the community can take a look?

I will take the liberty to ping some ZK committers -- [~arshadmohammad], 
[~hanm] so that they can take a look when/if they have a spare cycles. I hope 
you don't mind guys! I know you are pretty busy, but migrating to newer 
versions of log4j is a must have for future ZK versions, imo.

Cheers!


> Use log4j2 as a logging framework as log4j 1.X is now deprecated
> 
>
> Key: ZOOKEEPER-2659
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2659
> Project: ZooKeeper
>  Issue Type: Wish
>Reporter: Pushkar Raste
>Assignee: Pushkar Raste
>Priority: Minor
> Attachments: zk_log4j2_migration.patch
>
>
> Zookeeper currently uses {{log4j 1.X}} as the default logging framework. 
> {{log4j 1.X}} is now deprecated http://logging.apache.org/log4j/1.2/
> This ticket is to track efforts to move zookeeper to {{log4j2}}



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


[jira] [Commented] (ZOOKEEPER-2659) Use log4j2 as a logging framework as log4j 1.X is now deprecated

2017-03-24 Thread Matt Sicker (JIRA)

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

Matt Sicker commented on ZOOKEEPER-2659:


Mikael and I are developers on log4j2, and we're here to help as well!

> Use log4j2 as a logging framework as log4j 1.X is now deprecated
> 
>
> Key: ZOOKEEPER-2659
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2659
> Project: ZooKeeper
>  Issue Type: Wish
>Reporter: Pushkar Raste
>Assignee: Pushkar Raste
>Priority: Minor
> Attachments: zk_log4j2_migration.patch
>
>
> Zookeeper currently uses {{log4j 1.X}} as the default logging framework. 
> {{log4j 1.X}} is now deprecated http://logging.apache.org/log4j/1.2/
> This ticket is to track efforts to move zookeeper to {{log4j2}}



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


[jira] [Commented] (ZOOKEEPER-2659) Use log4j2 as a logging framework as log4j 1.X is now deprecated

2017-03-24 Thread Edward Ribeiro (JIRA)

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

Edward Ribeiro commented on ZOOKEEPER-2659:
---

Hey [~praste],

I am no committer, but I see that you have invested *a lot* of work on this. 
This has been the subject of a previous and unfinished JIRA issue, 
ZOOKEEPER-2342, so definitely there is an interest on this matter. Wouldn't you 
like to reopen the PR you made, so that others in the community can take a look?

I will take the liberty to ping some ZK committers -- [~arshadmohammad], 
[~hanm] so that they can take a look when/if they have a spare cycles. I hope 
you don't mind guys! I know you are pretty busy, but migrating to newer 
versions of log4j is a must have for future ZK versions, imo.

Cheers!


> Use log4j2 as a logging framework as log4j 1.X is now deprecated
> 
>
> Key: ZOOKEEPER-2659
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2659
> Project: ZooKeeper
>  Issue Type: Wish
>Reporter: Pushkar Raste
>Assignee: Pushkar Raste
>Priority: Minor
> Attachments: zk_log4j2_migration.patch
>
>
> Zookeeper currently uses {{log4j 1.X}} as the default logging framework. 
> {{log4j 1.X}} is now deprecated http://logging.apache.org/log4j/1.2/
> This ticket is to track efforts to move zookeeper to {{log4j2}}



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


[jira] [Commented] (ZOOKEEPER-2739) maxClientCnxns not working in NettyServerCnxnFactory

2017-03-24 Thread Edward Ribeiro (JIRA)

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

Edward Ribeiro commented on ZOOKEEPER-2739:
---

Hi [~vincentpoon],

I started working on this exact same issue long before, but got side tracked by 
other commitments. Let's chat! ;)

> maxClientCnxns not working in NettyServerCnxnFactory
> 
>
> Key: ZOOKEEPER-2739
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2739
> Project: ZooKeeper
>  Issue Type: Bug
>Affects Versions: 3.4.9, 3.5.0, 3.6.0
>Reporter: Vincent Poon
> Attachments: MaxNettyCnxnsTest.patch
>
>
> The maxClientCnxns field isn't being used in NettyServerCnxnFactory, and 
> therefore the connection limit isn't observed.
> See attached test



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


[jira] [Updated] (ZOOKEEPER-2739) maxClientCnxns not working in NettyServerCnxnFactory

2017-03-24 Thread Vincent Poon (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2739?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vincent Poon updated ZOOKEEPER-2739:

Attachment: MaxNettyCnxnsTest.patch

> maxClientCnxns not working in NettyServerCnxnFactory
> 
>
> Key: ZOOKEEPER-2739
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2739
> Project: ZooKeeper
>  Issue Type: Bug
>Affects Versions: 3.4.9, 3.5.0, 3.6.0
>Reporter: Vincent Poon
> Attachments: MaxNettyCnxnsTest.patch
>
>
> The maxClientCnxns field isn't being used in NettyServerCnxnFactory, and 
> therefore the connection limit isn't observed.
> See attached test



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


[jira] [Created] (ZOOKEEPER-2739) maxClientCnxns not working in NettyServerCnxnFactory

2017-03-24 Thread Vincent Poon (JIRA)
Vincent Poon created ZOOKEEPER-2739:
---

 Summary: maxClientCnxns not working in NettyServerCnxnFactory
 Key: ZOOKEEPER-2739
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2739
 Project: ZooKeeper
  Issue Type: Bug
Affects Versions: 3.5.0, 3.4.9, 3.6.0
Reporter: Vincent Poon
 Attachments: MaxNettyCnxnsTest.patch

The maxClientCnxns field isn't being used in NettyServerCnxnFactory, and 
therefore the connection limit isn't observed.

See attached test



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


[jira] [Updated] (ZOOKEEPER-2738) maxClientCnxns not limiting concurrent connections properly

2017-03-24 Thread Vincent Poon (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2738?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vincent Poon updated ZOOKEEPER-2738:

Attachment: MaxCnxnsTest.patch

> maxClientCnxns not limiting concurrent connections properly
> ---
>
> Key: ZOOKEEPER-2738
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2738
> Project: ZooKeeper
>  Issue Type: Bug
>Affects Versions: 3.5.2, 3.6.0
>Reporter: Vincent Poon
> Attachments: MaxCnxnsTest.patch
>
>
> The test MaxCnxnsTest is incorrect as it only creates up the maxCnxns number 
> of threads, whereas it should create more.  See attached patch
> When the test is fixed, it fails on master and 3.5, where ZOOKEEPER-1504 
> removed some synchronization.



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


[jira] [Created] (ZOOKEEPER-2738) maxClientCnxns not limiting concurrent connections properly

2017-03-24 Thread Vincent Poon (JIRA)
Vincent Poon created ZOOKEEPER-2738:
---

 Summary: maxClientCnxns not limiting concurrent connections 
properly
 Key: ZOOKEEPER-2738
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2738
 Project: ZooKeeper
  Issue Type: Bug
Affects Versions: 3.5.2, 3.6.0
Reporter: Vincent Poon


The test MaxCnxnsTest is incorrect as it only creates up the maxCnxns number of 
threads, whereas it should create more.  See attached patch

When the test is fixed, it fails on master and 3.5, where ZOOKEEPER-1504 
removed some synchronization.




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


Re: [VOTE] Apache ZooKeeper release 3.4.10 candidate 1

2017-03-24 Thread Abraham Fine
+1 non-binding

- Checked md5sum and pgp signature on tarball and jar
- Built from source with java 6 and 7
- ran unit tests
- manually verified functionality on small 3 node ensemble

On Thu, Mar 23, 2017, at 05:40, Rakesh Radhakrishnan wrote:
> This is the second release candidate for 3.4.10. This candidate fixed the
> MiniKDC authentication test case failures reported in the previous
> candidate.
> 
> This is a bug fix release candidate for 3.4.10. It fixes 43 issues,
> including
> security feature QuorumPeer mutual authentication via SASL and other
> potential bugs.
> 
> The full release notes are available at:
> 
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310801&version=12338036
> 
> *** Please download, test and vote by March 29th 2017, 23:59 UTC+0. ***
> 
> Source files:
> http://people.apache.org/~rakeshr/zookeeper-3.4.10-candidate-1/
> 
> Maven staging repo:
> https://repository.apache.org/content/groups/staging/org/apache/zookeeper/zookeeper/3.4.10/
> 
> The release candidate tag in git to be voted upon: release-3.4.10-rc1
> https://github.com/apache/zookeeper/tree/release-3.4.10-rc1
> 
> ZooKeeper's KEYS file containing PGP keys we use to sign the release:
> http://www.apache.org/dist/zookeeper/KEYS
> 
> Should we release this candidate?
> 
> 
> Rakesh


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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_r108010303
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
+refill();
+long current = tokens.get();
+while (current > 0) {
+if (tokens.compareAndSet(current, current - 1)) {
+return true;
+}
+current = tokens.get();
+}
+return false;
+}
+
+private void refill() {
+long currentTime = System.nanoTime();
+if (currentTime >= nextRefillTime) {
+synchronized (this) {
+if (currentTime >= nextRefillTime) {
+long elapsedNanos = currentTime - nextRefillTime + 
refreshPeriodNanos;
+long elapsedPeriods = elapsedNanos / 
refreshPeriodNanos;
+long newTokens = elapsedPeriods * tokensPerPeriod;
+tokens.set(Math.min(capacity, tokens.get() + 
newTokens));
+nextRefillTime = currentTime + refreshPeriodNanos - 
(elapsedNanos % refreshPeriodNanos);
+}
+}
+}
+}
+
+// VisibleForTesting
+long getTokenCount() {
--- End diff --

+1.


> 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)


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread eribeiro
Github user eribeiro commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r108010303
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
+refill();
+long current = tokens.get();
+while (current > 0) {
+if (tokens.compareAndSet(current, current - 1)) {
+return true;
+}
+current = tokens.get();
+}
+return false;
+}
+
+private void refill() {
+long currentTime = System.nanoTime();
+if (currentTime >= nextRefillTime) {
+synchronized (this) {
+if (currentTime >= nextRefillTime) {
+long elapsedNanos = currentTime - nextRefillTime + 
refreshPeriodNanos;
+long elapsedPeriods = elapsedNanos / 
refreshPeriodNanos;
+long newTokens = elapsedPeriods * tokensPerPeriod;
+tokens.set(Math.min(capacity, tokens.get() + 
newTokens));
+nextRefillTime = currentTime + refreshPeriodNanos - 
(elapsedNanos % refreshPeriodNanos);
+}
+}
+}
+}
+
+// VisibleForTesting
+long getTokenCount() {
--- End diff --

+1.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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_r108009883
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
--- End diff --

+1.


> 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)


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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_r108009773
  
--- Diff: src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml ---
@@ -845,6 +845,40 @@ server.3=zoo3:2888:3888

 

+rateLimiterImpl
+
+  (No Java system property)
+
+  Specifies an implementation of
+  org.apache.zookeeper.common.RateLimiter to use to limit the 
rate
+  at which a single client, identified by IP address, can make
+  connections to a single member of the ZooKeeper 
ensemble.
+
+   
+
+   
+maxClientCnxnRate
--- End diff --

+1 on that. :+1: 


> 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)


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread eribeiro
Github user eribeiro commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r108009883
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
--- End diff --

+1.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread eribeiro
Github user eribeiro commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r108009773
  
--- Diff: src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml ---
@@ -845,6 +845,40 @@ server.3=zoo3:2888:3888

 

+rateLimiterImpl
+
+  (No Java system property)
+
+  Specifies an implementation of
+  org.apache.zookeeper.common.RateLimiter to use to limit the 
rate
+  at which a single client, identified by IP address, can make
+  connections to a single member of the ZooKeeper 
ensemble.
+
+   
+
+   
+maxClientCnxnRate
--- End diff --

+1 on that. :+1: 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (ZOOKEEPER-236) SSL Support for Atomic Broadcast protocol

2017-03-24 Thread Abraham Fine (JIRA)

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

Abraham Fine commented on ZOOKEEPER-236:


I found that org.apache.httpcomponents.httpclient has 
org.apache.http.conn.ssl.DefaultHostnameVerifier which should serve our 
purposes well.

> SSL Support for Atomic Broadcast protocol
> -
>
> Key: ZOOKEEPER-236
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-236
> Project: ZooKeeper
>  Issue Type: New Feature
>  Components: quorum, server
>Reporter: Benjamin Reed
>Assignee: Abraham Fine
>Priority: Minor
>
> We should have the ability to use SSL to authenticate and encrypt the traffic 
> between ZooKeeper servers. For the most part this is a very easy change. We 
> would probably only want to support this for TCP based leader elections.



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


Failed: ZOOKEEPER- PreCommit Build #479

2017-03-24 Thread Apache Jenkins Server
Build: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/479/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 3.15 KB...]
 [exec] Pull request id: 184  % Total% Received % Xferd  Average Speed  
 TimeTime Time  Current
 [exec] 
 [exec] Pull request title: ZOOKEEPER-236: SSL Support for Atomic Broadcast 
protocol [DO NOT MERGE]
 [exec] Defect number: ZOOKEEPER-236
 [exec] - Parsed args, going to checkout -
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Testing patch for pull request 184.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] 
 [exec]  Dload  Upload   Total   Spent
Left  Speed
 [exec] 
 [exec]   0 00 00 0  0  0 --:--:-- --:--:-- 
--:--:-- 0100   1410   1410 0321  0 --:--:-- --:--:-- 
--:--:--   321
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec]  Pre-build trunk to verify trunk stability and javac warnings
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] /home/jenkins/tools/ant/apache-ant-1.9.9/bin/ant  
-Djavac.args=-Xlint -Xmaxwarns 1000 
-Djava5.home=/home/jenkins/tools/java5/latest 
-Dforrest.home=/home/jenkins/tools/forrest/latest -DZookeeperPatchProcess= 
clean tar > 
/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess/trunkJavacWarnings.txt
 2>&1
 [exec] Trunk compilation is broken?
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Finished build.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec]   0 00 00 0  0  0 --:--:-- --:--:-- 
--:--:-- 0  0 00 625550 0  53915  0 --:--:--  0:00:01 
--:--:--  374kmv: 
‘/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess’
 and 
‘/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess’
 are the same file

BUILD FAILED
/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/build.xml:1642:
 exec returned: 1

Total time: 21 seconds
Build step 'Execute shell' marked build as failure
Archiving artifacts
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Recording test results
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
ERROR: Step ‘Publish JUnit test result report’ failed: No test report files 
were found. Configuration error?
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
[description-setter] Description set: ZOOKEEPER-236
Putting comment on the pull request
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7



###
## FAILED TESTS (if any) 
##
No tests ran.

[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/205#discussion_r107973008
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
+refill();
+long current = tokens.get();
+while (current > 0) {
+if (tokens.compareAndSet(current, current - 1)) {
+return true;
+}
+current = tokens.get();
+}
+return false;
+}
+
+private void refill() {
+long currentTime = System.nanoTime();
+if (currentTime >= nextRefillTime) {
+synchronized (this) {
+if (currentTime >= nextRefillTime) {
+long elapsedNanos = currentTime - nextRefillTime + 
refreshPeriodNanos;
+long elapsedPeriods = elapsedNanos / 
refreshPeriodNanos;
+long newTokens = elapsedPeriods * tokensPerPeriod;
+tokens.set(Math.min(capacity, tokens.get() + 
newTokens));
+nextRefillTime = currentTime + refreshPeriodNanos - 
(elapsedNanos % refreshPeriodNanos);
+}
+}
+}
+}
+
+// VisibleForTesting
+long getTokenCount() {
--- End diff --

nit: I think we generally prefer to explicitly state the access modifiers.


> 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)


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/205#discussion_r107965500
  
--- Diff: src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml ---
@@ -845,6 +845,40 @@ server.3=zoo3:2888:3888

 

+rateLimiterImpl
+
+  (No Java system property)
+
+  Specifies an implementation of
+  org.apache.zookeeper.common.RateLimiter to use to limit the 
rate
+  at which a single client, identified by IP address, can make
+  connections to a single member of the ZooKeeper 
ensemble.
+
+   
+
+   
+maxClientCnxnRate
--- End diff --

Would it make sense to tie this configuration to the implementation that is 
being used, rather than specifying at the top level what configuration is 
needed for the rate limiter?


> 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)


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/205#discussion_r107976351
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
--- End diff --

would things be easier if we just made this synchronized?


> 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)


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/205#discussion_r107974422
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
--- End diff --

nit: do we need nano seconds? can we just use 
org.apache.zookeeper.common.Time.currentElapsedTime() ?


> 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)


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/205#discussion_r107973811
  
--- Diff: src/java/main/org/apache/zookeeper/common/RateLimiter.java ---
@@ -0,0 +1,99 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.zookeeper.common;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A connection rate limiter.
+ *
+ */
+public interface RateLimiter {
+
+/**
+ * If maxClientCnxnRate or maxClientCnxnBurst is set to this value, 
rate is
+ * not limited
+ */
+public static int BYPASS = -1;
+
+/**
+ * A {@code RateLimiter} that does not do any rate limiting
+ */
+public static RateLimiter BYPASS_RATE_LIMITER = new RateLimiter() {
+@Override
+public boolean tryAquire() {
+return true;
+}
+
+@Override
+public void configure(int maxClientCnxnRate, int 
maxClientCnxnBurst) {
+//not needed
+}
+};
+
+/**
+ * Attempts to acquire a permit
+ *
+ * @return true if a permit was acquired, false otherwise
+ */
+public boolean tryAquire();
+
+/**
+ * @param maxClientCnxnRate the max client connection rate
+ * @param maxClientCnxnBurst the max client connection burst
+ */
+public void configure(int maxClientCnxnRate, int maxClientCnxnBurst);
+
+public static class Factory {
+
+private static final Logger LOG = 
LoggerFactory.getLogger(RateLimiter.Factory.class);
+
+/**
+ * Creates a {@code RateLimiter} with a stable average throughput 
of
+ * {@code averageRate} and a maximum burst size of {@code 
burstRate}
+ *
+ * @param rateLimiterImplClass the {@code RateLimiter} 
implementation to use
+ * @param burstSize
+ *The maximum burst size - i.e. max number of permits 
that
+ *can be acquired in a second
+ * @param averageRate
+ *The stable average rate in permits per second
+ * @return the {@code RateLimiter}
+ */
+public static RateLimiter create(String rateLimiterImplClass, int 
burstSize,
+int averageRate) {
+if (burstSize == BYPASS || averageRate == BYPASS) {
+return BYPASS_RATE_LIMITER;
+}
+if (rateLimiterImplClass == null) {
+rateLimiterImplClass = TokenBucket.class.getName();
+}
+try {
+RateLimiter limiter = (RateLimiter) 
Class.forName(rateLimiterImplClass).newInstance();
--- End diff --

it would be great to log which ratelimiter has been chosen


> 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)


[jira] [Commented] (ZOOKEEPER-2736) Add a connection rate limiter

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/205#discussion_r107974911
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java ---
@@ -39,6 +39,8 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.LinkedBlockingQueue;
 
+import org.apache.zookeeper.common.RateLimiter;
--- End diff --

+1 to this


> 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)


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r107973811
  
--- Diff: src/java/main/org/apache/zookeeper/common/RateLimiter.java ---
@@ -0,0 +1,99 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.zookeeper.common;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A connection rate limiter.
+ *
+ */
+public interface RateLimiter {
+
+/**
+ * If maxClientCnxnRate or maxClientCnxnBurst is set to this value, 
rate is
+ * not limited
+ */
+public static int BYPASS = -1;
+
+/**
+ * A {@code RateLimiter} that does not do any rate limiting
+ */
+public static RateLimiter BYPASS_RATE_LIMITER = new RateLimiter() {
+@Override
+public boolean tryAquire() {
+return true;
+}
+
+@Override
+public void configure(int maxClientCnxnRate, int 
maxClientCnxnBurst) {
+//not needed
+}
+};
+
+/**
+ * Attempts to acquire a permit
+ *
+ * @return true if a permit was acquired, false otherwise
+ */
+public boolean tryAquire();
+
+/**
+ * @param maxClientCnxnRate the max client connection rate
+ * @param maxClientCnxnBurst the max client connection burst
+ */
+public void configure(int maxClientCnxnRate, int maxClientCnxnBurst);
+
+public static class Factory {
+
+private static final Logger LOG = 
LoggerFactory.getLogger(RateLimiter.Factory.class);
+
+/**
+ * Creates a {@code RateLimiter} with a stable average throughput 
of
+ * {@code averageRate} and a maximum burst size of {@code 
burstRate}
+ *
+ * @param rateLimiterImplClass the {@code RateLimiter} 
implementation to use
+ * @param burstSize
+ *The maximum burst size - i.e. max number of permits 
that
+ *can be acquired in a second
+ * @param averageRate
+ *The stable average rate in permits per second
+ * @return the {@code RateLimiter}
+ */
+public static RateLimiter create(String rateLimiterImplClass, int 
burstSize,
+int averageRate) {
+if (burstSize == BYPASS || averageRate == BYPASS) {
+return BYPASS_RATE_LIMITER;
+}
+if (rateLimiterImplClass == null) {
+rateLimiterImplClass = TokenBucket.class.getName();
+}
+try {
+RateLimiter limiter = (RateLimiter) 
Class.forName(rateLimiterImplClass).newInstance();
--- End diff --

it would be great to log which ratelimiter has been chosen


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r107965500
  
--- Diff: src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml ---
@@ -845,6 +845,40 @@ server.3=zoo3:2888:3888

 

+rateLimiterImpl
+
+  (No Java system property)
+
+  Specifies an implementation of
+  org.apache.zookeeper.common.RateLimiter to use to limit the 
rate
+  at which a single client, identified by IP address, can make
+  connections to a single member of the ZooKeeper 
ensemble.
+
+   
+
+   
+maxClientCnxnRate
--- End diff --

Would it make sense to tie this configuration to the implementation that is 
being used, rather than specifying at the top level what configuration is 
needed for the rate limiter?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r107973008
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
+refill();
+long current = tokens.get();
+while (current > 0) {
+if (tokens.compareAndSet(current, current - 1)) {
+return true;
+}
+current = tokens.get();
+}
+return false;
+}
+
+private void refill() {
+long currentTime = System.nanoTime();
+if (currentTime >= nextRefillTime) {
+synchronized (this) {
+if (currentTime >= nextRefillTime) {
+long elapsedNanos = currentTime - nextRefillTime + 
refreshPeriodNanos;
+long elapsedPeriods = elapsedNanos / 
refreshPeriodNanos;
+long newTokens = elapsedPeriods * tokensPerPeriod;
+tokens.set(Math.min(capacity, tokens.get() + 
newTokens));
+nextRefillTime = currentTime + refreshPeriodNanos - 
(elapsedNanos % refreshPeriodNanos);
+}
+}
+}
+}
+
+// VisibleForTesting
+long getTokenCount() {
--- End diff --

nit: I think we generally prefer to explicitly state the access modifiers.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r107976351
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
+}
+
+@Override
+public boolean tryAquire() {
--- End diff --

would things be easier if we just made this synchronized?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r107974422
  
--- Diff: src/java/main/org/apache/zookeeper/common/TokenBucket.java ---
@@ -0,0 +1,88 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.zookeeper.common;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Simple rate limiter based on a token bucket.
+  */
+public class TokenBucket implements RateLimiter {
+
+// VisibleForTesting
+long refreshPeriodNanos = TimeUnit.SECONDS.toNanos(1L);
+// VisibleForTesting
+volatile long nextRefillTime;
+private AtomicLong tokens;
+private long capacity;
+private long tokensPerPeriod;
+
+public TokenBucket() { }
+
+// VisibleForTesting
+public TokenBucket(long capacity, long tokensPerSecond, long 
initialTokens) {
+this.tokens = new AtomicLong(initialTokens);
+this.capacity = Math.max(capacity, tokensPerSecond);
+this.tokensPerPeriod = tokensPerSecond;
+this.nextRefillTime = System.nanoTime() + refreshPeriodNanos;
--- End diff --

nit: do we need nano seconds? can we just use 
org.apache.zookeeper.common.Time.currentElapsedTime() ?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] zookeeper pull request #205: ZOOKEEPER-2736 Add a connection rate limiter

2017-03-24 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/205#discussion_r107974911
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/NIOServerCnxnFactory.java ---
@@ -39,6 +39,8 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.LinkedBlockingQueue;
 
+import org.apache.zookeeper.common.RateLimiter;
--- End diff --

+1 to this


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (ZOOKEEPER-900) FLE implementation should be improved to use non-blocking sockets

2017-03-24 Thread Atri Sharma (JIRA)

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

Atri Sharma commented on ZOOKEEPER-900:
---

Could you please reassign it to me/ point me to another JIRA is this umbrella?

> FLE implementation should be improved to use non-blocking sockets
> -
>
> Key: ZOOKEEPER-900
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-900
> Project: ZooKeeper
>  Issue Type: Bug
>Reporter: Vishal Kher
>Assignee: Martin Kuchta
>Priority: Critical
> Fix For: 3.5.4, 3.6.0
>
> Attachments: ZOOKEEPER-900-part2.patch, ZOOKEEPER-900.patch, 
> ZOOKEEPER-900.patch1, ZOOKEEPER-900.patch2
>
>
> From earlier email exchanges:
> 1. Blocking connects and accepts:
> a) The first problem is in manager.toSend(). This invokes connectOne(), which 
> does a blocking connect. While testing, I changed the code so that 
> connectOne() starts a new thread called AsyncConnct(). AsyncConnect.run() 
> does a socketChannel.connect(). After starting AsyncConnect, connectOne 
> starts a timer. connectOne continues with normal operations if the connection 
> is established before the timer expires, otherwise, when the timer expires it 
> interrupts AsyncConnect() thread and returns. In this way, I can have an 
> upper bound on the amount of time we need to wait for connect to succeed. Of 
> course, this was a quick fix for my testing. Ideally, we should use Selector 
> to do non-blocking connects/accepts. I am planning to do that later once we 
> at least have a quick fix for the problem and consensus from others for the 
> real fix (this problem is big blocker for us). Note that it is OK to do 
> blocking IO in SenderWorker and RecvWorker threads since they block IO to the 
> respective peer.
> b) The blocking IO problem is not just restricted to connectOne(), but also 
> in receiveConnection(). The Listener thread calls receiveConnection() for 
> each incoming connection request. receiveConnection does blocking IO to get 
> peer's info (s.read(msgBuffer)). Worse, it invokes connectOne() back to the 
> peer that had sent the connection request. All of this is happening from the 
> Listener. In short, if a peer fails after initiating a connection, the 
> Listener thread won't be able to accept connections from other peers, because 
> it would be stuck in read() or connetOne(). Also the code has an inherent 
> cycle. initiateConnection() and receiveConnection() will have to be very 
> carefully synchronized otherwise, we could run into deadlocks. This code is 
> going to be difficult to maintain/modify.
> Also see: https://issues.apache.org/jira/browse/ZOOKEEPER-822



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


[jira] [Commented] (ZOOKEEPER-2737) NettyServerCnxFactory leaks connection if exception happens while writing to a channel.

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

Github user enixon commented on the issue:

https://github.com/apache/zookeeper/pull/207
  
good catch!


> NettyServerCnxFactory leaks connection if exception happens while writing to 
> a channel.
> ---
>
> Key: ZOOKEEPER-2737
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2737
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: server
>Affects Versions: 3.5.2
>Reporter: Michael Han
>Assignee: Michael Han
>Priority: Critical
>  Labels: connection, netty, server
>
> Found this while debugging occasionally failed unit tests. Currently we do 
> this if exception occurs during writing to a channel with Netty:
> {code}
> @Override
> public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent 
> e)
> throws Exception
> {
> LOG.warn("Exception caught " + e, e.getCause());
> NettyServerCnxn cnxn = (NettyServerCnxn) ctx.getAttachment();
> if (cnxn != null) {
> if (LOG.isDebugEnabled()) {
> LOG.debug("Closing " + cnxn);
> cnxn.close();
> }
> }
> }
> {code}
> So the connection is only closed when debug mode is enabled. This is 
> problematic as lots of clean up code is abstracted inside the close and 
> without proper close the connection we are leaking resources.
> [Commit 
> log|https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java#L147]
>  indicates the issue exists since day 1 with ZOOKEEPER-733. Note the original 
> patch uploaded to ZOOKEEPER-733 has this close call in right place, and the 
> call gets moved around during iteration of the patches w/o gets noticed.



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


[GitHub] zookeeper issue #207: ZOOKEEPER-2737: close netty connection when exceptions...

2017-03-24 Thread enixon
Github user enixon commented on the issue:

https://github.com/apache/zookeeper/pull/207
  
good catch!


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


Success: ZOOKEEPER- PreCommit Build #478

2017-03-24 Thread Apache Jenkins Server
Build: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/478/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 65.79 MB...]
 [exec] 
 [exec] +1 @author.  The patch does not contain any @author tags.
 [exec] 
 [exec] +0 tests included.  The patch appears to be a documentation 
patch that doesn't require tests.
 [exec] 
 [exec] +1 javadoc.  The javadoc tool did not generate any warning 
messages.
 [exec] 
 [exec] +1 javac.  The applied patch does not increase the total number 
of javac compiler warnings.
 [exec] 
 [exec] +1 findbugs.  The patch does not introduce any new Findbugs 
(version 3.0.1) warnings.
 [exec] 
 [exec] +1 release audit.  The applied patch does not increase the 
total number of release audit warnings.
 [exec] 
 [exec] +1 core tests.  The patch passed core unit tests.
 [exec] 
 [exec] +1 contrib tests.  The patch passed contrib unit tests.
 [exec] 
 [exec] Test results: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/478//testReport/
 [exec] Findbugs warnings: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/478//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
 [exec] Console output: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/478//console
 [exec] 
 [exec] This message is automatically generated.
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Adding comment to Jira.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] Comment added.
 [exec] d1edd36e3030004a1b73167e2a699483006fb181 logged out
 [exec] 
 [exec] 
 [exec] 
==
 [exec] 
==
 [exec] Finished build.
 [exec] 
==
 [exec] 
==
 [exec] 
 [exec] 
 [exec] mv: 
'/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess'
 and 
'/home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build/patchprocess'
 are the same file

BUILD SUCCESSFUL
Total time: 18 minutes 38 seconds
Archiving artifacts
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Recording test results
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
[description-setter] Description set: ZOOKEEPER-2737
Putting comment on the pull request
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Email was triggered for: Success
Sending email for trigger: Success
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7
Setting JDK_1_7_LATEST__HOME=/home/jenkins/tools/java/latest1.7



###
## FAILED TESTS (if any) 
##
All tests passed

[jira] [Commented] (ZOOKEEPER-2737) NettyServerCnxFactory leaks connection if exception happens while writing to a channel.

2017-03-24 Thread Hadoop QA (JIRA)

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

Hadoop QA commented on ZOOKEEPER-2737:
--

+1 overall.  GitHub Pull Request  Build
  

+1 @author.  The patch does not contain any @author tags.

+0 tests included.  The patch appears to be a documentation patch that 
doesn't require tests.

+1 javadoc.  The javadoc tool did not generate any warning messages.

+1 javac.  The applied patch does not increase the total number of javac 
compiler warnings.

+1 findbugs.  The patch does not introduce any new Findbugs (version 3.0.1) 
warnings.

+1 release audit.  The applied patch does not increase the total number of 
release audit warnings.

+1 core tests.  The patch passed core unit tests.

+1 contrib tests.  The patch passed contrib unit tests.

Test results: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/478//testReport/
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/478//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Console output: 
https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/478//console

This message is automatically generated.

> NettyServerCnxFactory leaks connection if exception happens while writing to 
> a channel.
> ---
>
> Key: ZOOKEEPER-2737
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2737
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: server
>Affects Versions: 3.5.2
>Reporter: Michael Han
>Assignee: Michael Han
>Priority: Critical
>  Labels: connection, netty, server
>
> Found this while debugging occasionally failed unit tests. Currently we do 
> this if exception occurs during writing to a channel with Netty:
> {code}
> @Override
> public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent 
> e)
> throws Exception
> {
> LOG.warn("Exception caught " + e, e.getCause());
> NettyServerCnxn cnxn = (NettyServerCnxn) ctx.getAttachment();
> if (cnxn != null) {
> if (LOG.isDebugEnabled()) {
> LOG.debug("Closing " + cnxn);
> cnxn.close();
> }
> }
> }
> {code}
> So the connection is only closed when debug mode is enabled. This is 
> problematic as lots of clean up code is abstracted inside the close and 
> without proper close the connection we are leaking resources.
> [Commit 
> log|https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java#L147]
>  indicates the issue exists since day 1 with ZOOKEEPER-733. Note the original 
> patch uploaded to ZOOKEEPER-733 has this close call in right place, and the 
> call gets moved around during iteration of the patches w/o gets noticed.



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


[jira] [Commented] (ZOOKEEPER-900) FLE implementation should be improved to use non-blocking sockets

2017-03-24 Thread Michael Han (JIRA)

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

Michael Han commented on ZOOKEEPER-900:
---

You could ping the current assignee [~makuchta] but it looks to me this issue 
is not being worked on given no progress indicator here since last may. 

> FLE implementation should be improved to use non-blocking sockets
> -
>
> Key: ZOOKEEPER-900
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-900
> Project: ZooKeeper
>  Issue Type: Bug
>Reporter: Vishal Kher
>Assignee: Martin Kuchta
>Priority: Critical
> Fix For: 3.5.4, 3.6.0
>
> Attachments: ZOOKEEPER-900-part2.patch, ZOOKEEPER-900.patch, 
> ZOOKEEPER-900.patch1, ZOOKEEPER-900.patch2
>
>
> From earlier email exchanges:
> 1. Blocking connects and accepts:
> a) The first problem is in manager.toSend(). This invokes connectOne(), which 
> does a blocking connect. While testing, I changed the code so that 
> connectOne() starts a new thread called AsyncConnct(). AsyncConnect.run() 
> does a socketChannel.connect(). After starting AsyncConnect, connectOne 
> starts a timer. connectOne continues with normal operations if the connection 
> is established before the timer expires, otherwise, when the timer expires it 
> interrupts AsyncConnect() thread and returns. In this way, I can have an 
> upper bound on the amount of time we need to wait for connect to succeed. Of 
> course, this was a quick fix for my testing. Ideally, we should use Selector 
> to do non-blocking connects/accepts. I am planning to do that later once we 
> at least have a quick fix for the problem and consensus from others for the 
> real fix (this problem is big blocker for us). Note that it is OK to do 
> blocking IO in SenderWorker and RecvWorker threads since they block IO to the 
> respective peer.
> b) The blocking IO problem is not just restricted to connectOne(), but also 
> in receiveConnection(). The Listener thread calls receiveConnection() for 
> each incoming connection request. receiveConnection does blocking IO to get 
> peer's info (s.read(msgBuffer)). Worse, it invokes connectOne() back to the 
> peer that had sent the connection request. All of this is happening from the 
> Listener. In short, if a peer fails after initiating a connection, the 
> Listener thread won't be able to accept connections from other peers, because 
> it would be stuck in read() or connetOne(). Also the code has an inherent 
> cycle. initiateConnection() and receiveConnection() will have to be very 
> carefully synchronized otherwise, we could run into deadlocks. This code is 
> going to be difficult to maintain/modify.
> Also see: https://issues.apache.org/jira/browse/ZOOKEEPER-822



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


[jira] [Commented] (ZOOKEEPER-2737) NettyServerCnxFactory leaks connection if exception happens while writing to a channel.

2017-03-24 Thread ASF GitHub Bot (JIRA)

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

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

GitHub user hanm opened a pull request:

https://github.com/apache/zookeeper/pull/207

ZOOKEEPER-2737: close netty connection when exceptions occur during w…

…rite to channel to prevent resource leak.

I am OK to add some contrived test case to test this but I'd like to do 
that later if needed, so this fix can get in upcoming releases..

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/hanm/zookeeper ZOOKEEPER-2737

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/zookeeper/pull/207.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #207


commit ad3b98418b6739d14003753f913a894dc0868fc1
Author: Michael Han 
Date:   2017-03-24T17:49:09Z

ZOOKEEPER-2737: close netty connection when exceptions occur during write 
to channel.
To prevent resource leak.




> NettyServerCnxFactory leaks connection if exception happens while writing to 
> a channel.
> ---
>
> Key: ZOOKEEPER-2737
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2737
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: server
>Affects Versions: 3.5.2
>Reporter: Michael Han
>Assignee: Michael Han
>Priority: Critical
>  Labels: connection, netty, server
>
> Found this while debugging occasionally failed unit tests. Currently we do 
> this if exception occurs during writing to a channel with Netty:
> {code}
> @Override
> public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent 
> e)
> throws Exception
> {
> LOG.warn("Exception caught " + e, e.getCause());
> NettyServerCnxn cnxn = (NettyServerCnxn) ctx.getAttachment();
> if (cnxn != null) {
> if (LOG.isDebugEnabled()) {
> LOG.debug("Closing " + cnxn);
> cnxn.close();
> }
> }
> }
> {code}
> So the connection is only closed when debug mode is enabled. This is 
> problematic as lots of clean up code is abstracted inside the close and 
> without proper close the connection we are leaking resources.
> [Commit 
> log|https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java#L147]
>  indicates the issue exists since day 1 with ZOOKEEPER-733. Note the original 
> patch uploaded to ZOOKEEPER-733 has this close call in right place, and the 
> call gets moved around during iteration of the patches w/o gets noticed.



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


[GitHub] zookeeper pull request #207: ZOOKEEPER-2737: close netty connection when exc...

2017-03-24 Thread hanm
GitHub user hanm opened a pull request:

https://github.com/apache/zookeeper/pull/207

ZOOKEEPER-2737: close netty connection when exceptions occur during w…

…rite to channel to prevent resource leak.

I am OK to add some contrived test case to test this but I'd like to do 
that later if needed, so this fix can get in upcoming releases..

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/hanm/zookeeper ZOOKEEPER-2737

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/zookeeper/pull/207.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #207


commit ad3b98418b6739d14003753f913a894dc0868fc1
Author: Michael Han 
Date:   2017-03-24T17:49:09Z

ZOOKEEPER-2737: close netty connection when exceptions occur during write 
to channel.
To prevent resource leak.




---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Comment Edited] (ZOOKEEPER-2707) Fix "Unexpected bean exists!" issue in WatcherTests

2017-03-24 Thread Michael Han (JIRA)

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

Michael Han edited comment on ZOOKEEPER-2707 at 3/24/17 5:37 PM:
-

This should (hopefully) be fixed with ZOOKEEPER-2737. The "unexpected beans" 
were leaked connection beans caused by ZOOKEEPER-2737 and the connection only 
leaks when we write to a channel but for some reasons, the exception happens 
while we are writing. Because of ZOOKEEPER-2737 we did not close the 
connection, the connection bean associated with the netty connection will not 
be deregistered which causes the the assertion fails here.

On a side note, this is a good example that our unit test catches an important 
issue that left unnoticed for years (probably also because not many people 
using Netty). It's also good that in ZOOKEEPER-1858 that [~fpj] pointed out to 
stick with the original semantic of the bean checks to ensure no bean leak 
otherwise we would not notice this issue while debugging watcher test here.

For reference here is how the leak is identified:
* I noticed that no matter how hard I tried, these watcher test can't be 
reproduced stand alone. It is only reproducible with the rest of test suite. 
* I set up Jenkins jobs to stress test the entire suite. When I am lucky, I get 
the failures of watchers.
* Identify the leaked bean, which contains the session id.
* Mine entire log, find where the session id is created.
* Continuing mine the log, find all references where this session id is 
referenced.
* I find a consistent pattern that around this session id, there is an 
exception thrown inside channel.write.
* Check the code that references channel.write and spotted the connection leak.

Note I haven't been able to identify exactly what cause the write exception. 
Another consistent pattern is when the exception occurs, we are usually inside 
one of the dynamic reconfig tests. This could be something to follow up (and we 
should really clean up LOG.info calls to make log mining easier).


was (Author: hanm):
This should (hopefully) be fixed with ZOOKEEPER-2737. The "unexpected beans" 
were leaked connection beans caused by ZOOKEEPER-2737 and the connection only 
leaks when we write to a channel but for some reasons, the exception happens 
while we are writing. Because of ZOOKEEPER-2737 we did not close the 
connection, the connection bean associated with the netty connection will not 
be deregistered which causes the the assertion fails here.

On a side note, this is a good example that our unit test catches an important 
issue that left unnoticed for years (probably also because not many people 
using Netty). It's also good that in ZOOKEEPER-1858 that [~fpj] pointed out to 
stick with the original semantic of the bean checks to ensure no bean leak 
otherwise we would not notice this issue while debugging watcher test here.

For reference here is how the leak is identified:
* I noticed that no matter how hard I tried, these watcher test can't be 
reproduced stand alone. It is only reproducible with the rest of test suite. 
* I set up Jenkins jobs to stress test the entire suite. When I am lucky, I get 
the failures of watchers.
* Identify the leaked bean, which contains the session id.
* Mine entire log, find where the session id is created.
* Continuing mine the log, find all references where this session id is 
referenced.
* I find a consistent pattern that around this session id, there is an 
exception thrown inside channel.write.
* Check the code that references channel.write and spotted the connection leak.

> Fix "Unexpected bean exists!" issue in WatcherTests
> ---
>
> Key: ZOOKEEPER-2707
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2707
> Project: ZooKeeper
>  Issue Type: Sub-task
>  Components: tests
>Affects Versions: 3.4.10, 3.5.3
>Reporter: Abraham Fine
>Assignee: Michael Han
>
> All the WatcherTests occasionally fail with: 
> {code}
> Error Message:
> Unexpected bean exists! expected:<0> but was:<1>
> Stack Trace:
> junit.framework.AssertionFailedError: Unexpected bean exists! expected:<0> 
> but was:<1>
>   at 
> org.apache.zookeeper.test.ClientBase.verifyUnexpectedBeans(ClientBase.java:498)
>   at org.apache.zookeeper.test.ClientBase.startServer(ClientBase.java:477)
>   at org.apache.zookeeper.test.ClientBase.setUp(ClientBase.java:460)
>   at org.apache.zookeeper.test.WatcherTest.setUp(WatcherTest.java:76)
> {code}
> Here is an example: 
> https://builds.apache.org/job/ZooKeeper_branch35_openjdk7/422/



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


[jira] [Comment Edited] (ZOOKEEPER-2707) Fix "Unexpected bean exists!" issue in WatcherTests

2017-03-24 Thread Michael Han (JIRA)

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

Michael Han edited comment on ZOOKEEPER-2707 at 3/24/17 5:35 PM:
-

This should (hopefully) be fixed with ZOOKEEPER-2737. The "unexpected beans" 
were leaked connection beans caused by ZOOKEEPER-2737 and the connection only 
leaks when we write to a channel but for some reasons, the exception happens 
while we are writing. Because of ZOOKEEPER-2737 we did not close the 
connection, the connection bean associated with the netty connection will not 
be deregistered which causes the the assertion fails here.

On a side note, this is a good example that our unit test catches an important 
issue that left unnoticed for years (probably also because not many people 
using Netty). It's also good that in ZOOKEEPER-1858 that [~fpj] pointed out to 
stick with the original semantic of the bean checks to ensure no bean leak 
otherwise we would not notice this issue while debugging watcher test here.

For reference here is how the leak is identified:
* I noticed that no matter how hard I tried, these watcher test can't be 
reproduced stand alone. It is only reproducible with the rest of test suite. 
* I set up Jenkins jobs to stress test the entire suite. When I am lucky, I get 
the failures of watchers.
* Identify the leaked bean, which contains the session id.
* Mine entire log, find where the session id is created.
* Continuing mine the log, find all references where this session id is 
referenced.
* I find a consistent pattern that around this session id, there is an 
exception thrown inside channel.write.
* Check the code that references channel.write and spotted the connection leak.


was (Author: hanm):
This should (hopefully) be fixed with ZOOKEEPER-2737.

> Fix "Unexpected bean exists!" issue in WatcherTests
> ---
>
> Key: ZOOKEEPER-2707
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2707
> Project: ZooKeeper
>  Issue Type: Sub-task
>  Components: tests
>Affects Versions: 3.4.10, 3.5.3
>Reporter: Abraham Fine
>Assignee: Michael Han
>
> All the WatcherTests occasionally fail with: 
> {code}
> Error Message:
> Unexpected bean exists! expected:<0> but was:<1>
> Stack Trace:
> junit.framework.AssertionFailedError: Unexpected bean exists! expected:<0> 
> but was:<1>
>   at 
> org.apache.zookeeper.test.ClientBase.verifyUnexpectedBeans(ClientBase.java:498)
>   at org.apache.zookeeper.test.ClientBase.startServer(ClientBase.java:477)
>   at org.apache.zookeeper.test.ClientBase.setUp(ClientBase.java:460)
>   at org.apache.zookeeper.test.WatcherTest.setUp(WatcherTest.java:76)
> {code}
> Here is an example: 
> https://builds.apache.org/job/ZooKeeper_branch35_openjdk7/422/



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


[jira] [Commented] (ZOOKEEPER-2707) Fix "Unexpected bean exists!" issue in WatcherTests

2017-03-24 Thread Michael Han (JIRA)

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

Michael Han commented on ZOOKEEPER-2707:


This should (hopefully) be fixed with ZOOKEEPER-2737.

> Fix "Unexpected bean exists!" issue in WatcherTests
> ---
>
> Key: ZOOKEEPER-2707
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2707
> Project: ZooKeeper
>  Issue Type: Sub-task
>  Components: tests
>Affects Versions: 3.4.10, 3.5.3
>Reporter: Abraham Fine
>Assignee: Michael Han
>
> All the WatcherTests occasionally fail with: 
> {code}
> Error Message:
> Unexpected bean exists! expected:<0> but was:<1>
> Stack Trace:
> junit.framework.AssertionFailedError: Unexpected bean exists! expected:<0> 
> but was:<1>
>   at 
> org.apache.zookeeper.test.ClientBase.verifyUnexpectedBeans(ClientBase.java:498)
>   at org.apache.zookeeper.test.ClientBase.startServer(ClientBase.java:477)
>   at org.apache.zookeeper.test.ClientBase.setUp(ClientBase.java:460)
>   at org.apache.zookeeper.test.WatcherTest.setUp(WatcherTest.java:76)
> {code}
> Here is an example: 
> https://builds.apache.org/job/ZooKeeper_branch35_openjdk7/422/



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


[jira] [Assigned] (ZOOKEEPER-2707) Fix "Unexpected bean exists!" issue in WatcherTests

2017-03-24 Thread Michael Han (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Han reassigned ZOOKEEPER-2707:
--

Assignee: Michael Han  (was: Abraham Fine)

> Fix "Unexpected bean exists!" issue in WatcherTests
> ---
>
> Key: ZOOKEEPER-2707
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2707
> Project: ZooKeeper
>  Issue Type: Sub-task
>  Components: tests
>Affects Versions: 3.4.10, 3.5.3
>Reporter: Abraham Fine
>Assignee: Michael Han
>
> All the WatcherTests occasionally fail with: 
> {code}
> Error Message:
> Unexpected bean exists! expected:<0> but was:<1>
> Stack Trace:
> junit.framework.AssertionFailedError: Unexpected bean exists! expected:<0> 
> but was:<1>
>   at 
> org.apache.zookeeper.test.ClientBase.verifyUnexpectedBeans(ClientBase.java:498)
>   at org.apache.zookeeper.test.ClientBase.startServer(ClientBase.java:477)
>   at org.apache.zookeeper.test.ClientBase.setUp(ClientBase.java:460)
>   at org.apache.zookeeper.test.WatcherTest.setUp(WatcherTest.java:76)
> {code}
> Here is an example: 
> https://builds.apache.org/job/ZooKeeper_branch35_openjdk7/422/



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


[jira] [Commented] (ZOOKEEPER-900) FLE implementation should be improved to use non-blocking sockets

2017-03-24 Thread Atri Sharma (JIRA)

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

Atri Sharma commented on ZOOKEEPER-900:
---

Hi Folks,

Is this still being worked on? I was thinking of taking this up.

Please let me know

> FLE implementation should be improved to use non-blocking sockets
> -
>
> Key: ZOOKEEPER-900
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-900
> Project: ZooKeeper
>  Issue Type: Bug
>Reporter: Vishal Kher
>Assignee: Martin Kuchta
>Priority: Critical
> Fix For: 3.5.4, 3.6.0
>
> Attachments: ZOOKEEPER-900-part2.patch, ZOOKEEPER-900.patch, 
> ZOOKEEPER-900.patch1, ZOOKEEPER-900.patch2
>
>
> From earlier email exchanges:
> 1. Blocking connects and accepts:
> a) The first problem is in manager.toSend(). This invokes connectOne(), which 
> does a blocking connect. While testing, I changed the code so that 
> connectOne() starts a new thread called AsyncConnct(). AsyncConnect.run() 
> does a socketChannel.connect(). After starting AsyncConnect, connectOne 
> starts a timer. connectOne continues with normal operations if the connection 
> is established before the timer expires, otherwise, when the timer expires it 
> interrupts AsyncConnect() thread and returns. In this way, I can have an 
> upper bound on the amount of time we need to wait for connect to succeed. Of 
> course, this was a quick fix for my testing. Ideally, we should use Selector 
> to do non-blocking connects/accepts. I am planning to do that later once we 
> at least have a quick fix for the problem and consensus from others for the 
> real fix (this problem is big blocker for us). Note that it is OK to do 
> blocking IO in SenderWorker and RecvWorker threads since they block IO to the 
> respective peer.
> b) The blocking IO problem is not just restricted to connectOne(), but also 
> in receiveConnection(). The Listener thread calls receiveConnection() for 
> each incoming connection request. receiveConnection does blocking IO to get 
> peer's info (s.read(msgBuffer)). Worse, it invokes connectOne() back to the 
> peer that had sent the connection request. All of this is happening from the 
> Listener. In short, if a peer fails after initiating a connection, the 
> Listener thread won't be able to accept connections from other peers, because 
> it would be stuck in read() or connetOne(). Also the code has an inherent 
> cycle. initiateConnection() and receiveConnection() will have to be very 
> carefully synchronized otherwise, we could run into deadlocks. This code is 
> going to be difficult to maintain/modify.
> Also see: https://issues.apache.org/jira/browse/ZOOKEEPER-822



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


[jira] [Assigned] (ZOOKEEPER-2686) Flaky Test: org.apache.zookeeper.test.WatcherTest.

2017-03-24 Thread Michael Han (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Han reassigned ZOOKEEPER-2686:
--

Assignee: Michael Han  (was: Abraham Fine)

> Flaky Test: org.apache.zookeeper.test.WatcherTest.
> --
>
> Key: ZOOKEEPER-2686
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2686
> Project: ZooKeeper
>  Issue Type: Test
>  Components: tests
>Affects Versions: 3.4.9, 3.5.2, 3.6.0
>Reporter: Michael Han
>Assignee: Michael Han
>  Labels: flaky-test
>
> Once in a while, these tests failed. 
> {noformat}
> org.apache.zookeeper.test.WatcherTest.testWatchAutoResetWithPending
> org.apache.zookeeper.test.WatcherTest.testWatcherCorrectness
> org.apache.zookeeper.test.WatcherTest.testWatcherAutoResetDisabledWithLocal
> org.apache.zookeeper.test.WatcherTest.testWatcherAutoResetWithGlobal
> org.apache.zookeeper.test.WatcherTest.testWatcherCount
> org.apache.zookeeper.test.WatcherTest.testWatcherAutoResetDisabledWithGlobal
> org.apache.zookeeper.test.WatcherTest.testWatcherAutoResetWithLocal
> {noformat}



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


[jira] [Created] (ZOOKEEPER-2737) NettyServerCnxFactory leaks connection if exception happens while writing to a channel.

2017-03-24 Thread Michael Han (JIRA)
Michael Han created ZOOKEEPER-2737:
--

 Summary: NettyServerCnxFactory leaks connection if exception 
happens while writing to a channel.
 Key: ZOOKEEPER-2737
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2737
 Project: ZooKeeper
  Issue Type: Bug
  Components: server
Affects Versions: 3.5.2
Reporter: Michael Han
Assignee: Michael Han
Priority: Critical


Found this while debugging occasionally failed unit tests. Currently we do this 
if exception occurs during writing to a channel with Netty:

{code}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
throws Exception
{
LOG.warn("Exception caught " + e, e.getCause());
NettyServerCnxn cnxn = (NettyServerCnxn) ctx.getAttachment();
if (cnxn != null) {
if (LOG.isDebugEnabled()) {
LOG.debug("Closing " + cnxn);
cnxn.close();
}
}
}
{code}

So the connection is only closed when debug mode is enabled. This is 
problematic as lots of clean up code is abstracted inside the close and without 
proper close the connection we are leaking resources.

[Commit 
log|https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/server/NettyServerCnxnFactory.java#L147]
 indicates the issue exists since day 1 with ZOOKEEPER-733. Note the original 
patch uploaded to ZOOKEEPER-733 has this close call in right place, and the 
call gets moved around during iteration of the patches w/o gets noticed.



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


[jira] [Commented] (ZOOKEEPER-2370) Can't access Znodes after adding ACL with SASL

2017-03-24 Thread Philippe Back (JIRA)

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

Philippe Back commented on ZOOKEEPER-2370:
--

I got this one too.

It turns out that the root cause is that the service is started with:

{code}authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=360
kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true
{code}

Not putting the server and the realm when doing the setAcl in zkCli is giving a 
match when accessing the node as the message is then gone.

But if one puts the realm in, one is just locking him or herself out.

To remove the znode, I guess the only way is to start ZK zithout ACL checks 
(not very practical in production) or user a super user.

Now, how is one logging in with such a user in ZK with zkCli.sh ?



> Can't access Znodes after adding ACL with SASL
> --
>
> Key: ZOOKEEPER-2370
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2370
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: java client
>Affects Versions: 3.4.5
>Reporter: Chao Sun
>
> (My apology if this is not a bug.)
> I'm trying to use a ZK client which has successfully authenticated with a 
> secure ZK server using principal {{me/hostn...@example.com}}. However, the 
> following simple commands failed:
> {code}
> [zk: hostname(CONNECTED) 0] create /zk-test "1"
> Created /zk-test
> [zk: hostname(CONNECTED) 1] setAcl /zk-test sasl:me/hostn...@example.com:cdrwa
> cZxid = 0x3e3b
> ctime = Mon Feb 22 23:10:36 PST 2016
> mZxid = 0x3e3b
> mtime = Mon Feb 22 23:10:36 PST 2016
> pZxid = 0x3e3b
> cversion = 0
> dataVersion = 0
> aclVersion = 1
> ephemeralOwner = 0x0
> dataLength = 3
> numChildren = 0
> [zk: hostname(CONNECTED) 2] getAcl /zk-test
> 'sasl,'me/hostn...@example.com
> : cdrwa
> [zk: hostname(CONNECTED) 3] ls /zk-test
> Authentication is not valid : /zk-test
> [zk: hostname(CONNECTED) 4] create /zk-test/c "2"
> Authentication is not valid : /zk-test/c
> {code}
> I wonder what I did wrong here, or is this behavior intentional? how can I 
> delete the znodes? Thanks.



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


ZooKeeper_branch35_jdk8 - Build # 468 - Failure

2017-03-24 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper_branch35_jdk8/468/

###
## LAST 60 LINES OF THE CONSOLE 
###
Started by timer
[EnvInject] - Loading node environment variables.
ERROR: SEVERE ERROR occurs
org.jenkinsci.lib.envinject.EnvInjectException: java.io.IOException: Remote 
call on ubuntu-eu3 failed
at 
org.jenkinsci.plugins.envinject.EnvInjectListener.loadEnvironmentVariablesNode(EnvInjectListener.java:86)
at 
org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironment(EnvInjectListener.java:42)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.createLauncher(AbstractBuild.java:572)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:492)
at hudson.model.Run.execute(Run.java:1728)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:404)
Caused by: java.io.IOException: Remote call on ubuntu-eu3 failed
at hudson.remoting.Channel.call(Channel.java:830)
at hudson.FilePath.act(FilePath.java:1080)
at 
org.jenkinsci.plugins.envinject.service.EnvInjectActionSetter.addEnvVarsToEnvInjectBuildAction(EnvInjectActionSetter.java:38)
at 
org.jenkinsci.plugins.envinject.EnvInjectListener.loadEnvironmentVariablesNode(EnvInjectListener.java:83)
... 7 more
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
ERROR: Step ‘Publish JUnit test result report’ failed: no workspace for 
ZooKeeper_branch35_jdk8 #468
[EnvInject] - [ERROR] - SEVERE ERROR occurs: Remote call on ubuntu-eu3 failed
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any



###
## FAILED TESTS (if any) 
##
No tests ran.

ZooKeeper-trunk-jdk8 - Build # 991 - Still Failing

2017-03-24 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper-trunk-jdk8/991/

###
## LAST 60 LINES OF THE CONSOLE 
###
Started by timer
[EnvInject] - Loading node environment variables.
ERROR: SEVERE ERROR occurs
org.jenkinsci.lib.envinject.EnvInjectException: java.io.IOException: Remote 
call on ubuntu-eu3 failed
at 
org.jenkinsci.plugins.envinject.EnvInjectListener.loadEnvironmentVariablesNode(EnvInjectListener.java:86)
at 
org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironment(EnvInjectListener.java:42)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.createLauncher(AbstractBuild.java:572)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:492)
at hudson.model.Run.execute(Run.java:1728)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:404)
Caused by: java.io.IOException: Remote call on ubuntu-eu3 failed
at hudson.remoting.Channel.call(Channel.java:830)
at hudson.FilePath.act(FilePath.java:1080)
at 
org.jenkinsci.plugins.envinject.service.EnvInjectActionSetter.addEnvVarsToEnvInjectBuildAction(EnvInjectActionSetter.java:38)
at 
org.jenkinsci.plugins.envinject.EnvInjectListener.loadEnvironmentVariablesNode(EnvInjectListener.java:83)
... 7 more
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
ERROR: Step ‘Scan for compiler warnings’ failed: no workspace for 
ZooKeeper-trunk-jdk8 #991
ERROR: Step ‘Publish JUnit test result report’ failed: no workspace for 
ZooKeeper-trunk-jdk8 #991
[EnvInject] - [ERROR] - SEVERE ERROR occurs: Remote call on ubuntu-eu3 failed
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any



###
## FAILED TESTS (if any) 
##
No tests ran.

Failed: ZOOKEEPER- PreCommit Build #477

2017-03-24 Thread Apache Jenkins Server
Build: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/477/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 19.17 KB...]
warning: Cannot merge binary files: docs/zookeeperOver.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/zookeeperObservers.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/zookeeperJMX.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/zookeeperInternals.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/zookeeperHierarchicalQuorums.pdf (HEAD 
vs. cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/zookeeperAdmin.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/recipes.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/linkmap.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/javaExample.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)
warning: Cannot merge binary files: docs/index.pdf (HEAD vs. 
cc2ea49262d0f9eae7ef697e00ea9210516052c1)

at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1793)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1766)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1762)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1409)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl$3.execute(CliGitAPIImpl.java:588)
at 
org.jenkinsci.plugins.gitclient.AbstractGitAPIImpl.merge(AbstractGitAPIImpl.java:86)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.merge(CliGitAPIImpl.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at 
hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:894)
at 
hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:869)
at 
hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:828)
at hudson.remoting.UserRequest.perform(UserRequest.java:153)
at hudson.remoting.UserRequest.perform(UserRequest.java:50)
at hudson.remoting.Request$2.run(Request.java:336)
at 
hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
at ..remote call to H7(Native Method)
at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1537)
at hudson.remoting.UserResponse.retrieve(UserRequest.java:253)
at hudson.remoting.Channel.call(Channel.java:822)
at 
hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:256)
at com.sun.proxy.$Proxy96.merge(Unknown Source)
at 
org.jenkinsci.plugins.gitclient.RemoteGitImpl.merge(RemoteGitImpl.java:435)
at 
com.cloudbees.jenkins.plugins.git.vmerge.BuildChooserImpl.getCandidateRevisions(BuildChooserImpl.java:107)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:995)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1102)
at hudson.scm.SCM.checkout(SCM.java:495)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
at hudson.model.Run.execute(Run.java:1728)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:404)
Archiving artifacts
Recording test results
ERROR: Step ?Publish JUnit test result report? failed: No test report files 
were found. Configuration error?
[description-setter] Could not determine description.
Putting comment on the pull request
Email was triggered for: Failure - Any
Sending email f

[GitHub] zookeeper pull request #206: Branch 3.5

2017-03-24 Thread dengyunlong
GitHub user dengyunlong opened a pull request:

https://github.com/apache/zookeeper/pull/206

Branch 3.5



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/apache/zookeeper branch-3.5

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/zookeeper/pull/206.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #206


commit 2797dd9c68620990bc8d7c0a21b3efb7fa64b62c
Author: Rakesh Radhakrishnan 
Date:   2014-09-29T17:17:02Z

ZOOKEEPER-1948 Enable JMX remote monitoring (Biju Nair via rakeshr)

git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1628226 
13f79535-47bb-0310-9956-ffa450edef68

commit 8f4d6206b195fd7d81be20c234771ce7090b60c0
Author: Rakesh Radhakrishnan 
Date:   2014-10-13T03:12:50Z

ZOOKEEPER-1917 Apache Zookeeper logs cleartext admin passwords (michim via 
rakeshr)

git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1631278 
13f79535-47bb-0310-9956-ffa450edef68

commit a07df7313254a262f3d0276375206a62f284a9cd
Author: Michi Mutsuzaki 
Date:   2014-10-16T04:51:49Z

ZOOKEEPER-2049 Yosemite build failure: htonll conflict (Till Toenshoff via 
michim)


git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1632211 
13f79535-47bb-0310-9956-ffa450edef68

commit 53b0644f1c1e6cc70ea9847a4dfde5e8d42dd69a
Author: Rakesh Radhakrishnan 
Date:   2014-10-28T04:37:55Z

ZOOKEEPER-2052 Unable to delete a node when the node has no children 
(Hongchao Deng and Yip Ng via rakeshr)

git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1634778 
13f79535-47bb-0310-9956-ffa450edef68

commit c30e857e135fff41af403ba754de8d6e3d1636c0
Author: Michi Mutsuzaki 
Date:   2014-11-17T06:48:15Z

ZOOKEEPER-2079 Stop daemon with "kill" rather than "kill -9" (Guillaume 
ALAUX via michim)


git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1640070 
13f79535-47bb-0310-9956-ffa450edef68

commit 609c7a7f8f14390154212f1c3bbfc92fbac967f5
Author: Flavio Paiva Junqueira 
Date:   2014-11-19T22:38:28Z

ZOOKEEPER-2060 Trace bug in NettyServerCnxnFactory (Ian via fpj)



git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1640636 
13f79535-47bb-0310-9956-ffa450edef68

commit cb21aee521d3169e5449203f4069ae3d249e4dc6
Author: Flavio Paiva Junqueira 
Date:   2014-11-29T15:54:58Z

ZOOKEEPER-2064 Prevent resource leak in various classes (Ted Yu via fpj)



git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1642440 
13f79535-47bb-0310-9956-ffa450edef68

commit 8a1b38308455f5321c9524c8cb0f18b223328063
Author: Flavio Paiva Junqueira 
Date:   2014-12-17T22:00:44Z

ZOOKEEPER-1963 Make JDK 7 the minimum requirement for Zookeeper 
(Hongchao via fpj)



git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1646346 
13f79535-47bb-0310-9956-ffa450edef68

commit a0434213b9f8a04a733486fb449bde5325d9587c
Author: Flavio Paiva Junqueira 
Date:   2014-12-20T14:31:47Z

ZOOKEEPER-2069 Netty Support for ClientCnxnSocket (Hongchao via fpj)



git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1646990 
13f79535-47bb-0310-9956-ffa450edef68

commit 382c1a051f46c3028332af0dda92fd45f2130637
Author: Rakesh Radhakrishnan 
Date:   2015-01-27T16:29:34Z

ZOOKEEPER-2110 Typo fixes in the ZK documentation. (Jeffrey Schroeder via 
rakeshr)

git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1655085 
13f79535-47bb-0310-9956-ffa450edef68

commit 98974902997aa371e37d5e6147304b86fa5ecb86
Author: Rakesh Radhakrishnan 
Date:   2015-01-30T02:25:05Z

ZOOKEEPER-2072 Netty Server Should Configure Child Channel Pipeline By 
Specifying ChannelPipelineFactory(Hongchao via rakeshr)

git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1655911 
13f79535-47bb-0310-9956-ffa450edef68

commit 9cf838200acf291ac130282fc98fca47be77392b
Author: Rakesh Radhakrishnan 
Date:   2015-01-31T07:08:20Z

ZOOKEEPER-2111 Not isAlive states should be synchronized in ClientCnxn 
(Hongchao via rakeshr)

git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1656168 
13f79535-47bb-0310-9956-ffa450edef68

commit 1e71c47b02292d6f25ca88ee7343d276fdc4b809
Author: Michi Mutsuzaki 
Date:   2015-02-06T05:18:30Z

ZOOKEEPER-1366 Zookeeper should be tolerant of clock adjustments (Hongchao 
Deng via michim)


git-svn-id: 
https://svn.apache.org/repos/asf/zookeeper/branches/branch-3.5@1657746 
13f79535-47bb-0310-9956-ffa450edef68

commit 6d8b0cbe57e1b5dd4a88af68ac7def68d48defc0
Author: Michi Mutsuzaki 
Date:   2015-02-09T05:38:21Z

ZOOKEEPE