ZooKeeper-trunk-openjdk7 - Build # 1820 - Still Failing

2018-03-02 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper-trunk-openjdk7/1820/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 62.26 KB...]
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.083 sec, Thread: 6, Class: org.apache.zookeeper.test.SaslClientTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.793 sec, Thread: 3, Class: org.apache.zookeeper.test.SaslAuthFailTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.676 sec, Thread: 5, Class: 
org.apache.zookeeper.test.SaslAuthMissingClientConfigTest
[junit] Running org.apache.zookeeper.test.SaslSuperUserTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.659 sec, Thread: 6, Class: org.apache.zookeeper.test.SaslSuperUserTest
[junit] Running org.apache.zookeeper.test.ServerCnxnTest in thread 3
[junit] Running org.apache.zookeeper.test.SessionInvalidationTest in thread 
5
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.654 sec, Thread: 5, Class: org.apache.zookeeper.test.SessionInvalidationTest
[junit] Running org.apache.zookeeper.test.SessionTest in thread 6
[junit] Running org.apache.zookeeper.test.SessionTrackerCheckTest in thread 
5
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.104 sec, Thread: 5, Class: org.apache.zookeeper.test.SessionTrackerCheckTest
[junit] Running org.apache.zookeeper.test.SessionUpgradeTest in thread 5
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
3.706 sec, Thread: 3, Class: org.apache.zookeeper.test.ServerCnxnTest
[junit] Running org.apache.zookeeper.test.StandaloneTest in thread 3
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
2.559 sec, Thread: 3, Class: org.apache.zookeeper.test.StandaloneTest
[junit] Running org.apache.zookeeper.test.StatTest in thread 3
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.743 sec, Thread: 3, Class: org.apache.zookeeper.test.StatTest
[junit] Running org.apache.zookeeper.test.StaticHostProviderTest in thread 3
[junit] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
3.255 sec, Thread: 3, Class: org.apache.zookeeper.test.StaticHostProviderTest
[junit] Running org.apache.zookeeper.test.StringUtilTest in thread 3
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.078 sec, Thread: 3, Class: org.apache.zookeeper.test.StringUtilTest
[junit] Running org.apache.zookeeper.test.SyncCallTest in thread 3
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.886 sec, Thread: 3, Class: org.apache.zookeeper.test.SyncCallTest
[junit] Running org.apache.zookeeper.test.TruncateTest in thread 3
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
69.979 sec, Thread: 4, Class: org.apache.zookeeper.test.QuorumZxidSyncTest
[junit] Running org.apache.zookeeper.test.WatchEventWhenAutoResetTest in 
thread 4
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
4.826 sec, Thread: 3, Class: org.apache.zookeeper.test.TruncateTest
[junit] Running org.apache.zookeeper.test.WatchedEventTest in thread 3
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.09 sec, Thread: 3, Class: org.apache.zookeeper.test.WatchedEventTest
[junit] Running org.apache.zookeeper.test.WatcherFuncTest in thread 3
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.045 sec, Thread: 3, Class: org.apache.zookeeper.test.WatcherFuncTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
20.861 sec, Thread: 5, Class: org.apache.zookeeper.test.SessionUpgradeTest
[junit] Running org.apache.zookeeper.test.WatcherTest in thread 3
[junit] Running org.apache.zookeeper.test.X509AuthTest in thread 5
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.11 sec, Thread: 5, Class: org.apache.zookeeper.test.X509AuthTest
[junit] Running org.apache.zookeeper.test.ZkDatabaseCorruptionTest in 
thread 5
[junit] Tests run: 14, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 
85.179 sec, Thread: 7, Class: org.apache.zookeeper.test.QuorumTest
[junit] Running org.apache.zookeeper.test.ZooKeeperQuotaTest in thread 7
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
2.871 sec, Thread: 7, Class: org.apache.zookeeper.test.ZooKeeperQuotaTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
6.728 sec, Thread: 5, Class: org.apache.zookeeper.test.ZkDatabaseCorruptionTest
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
35.414 sec, Thread: 6, Class: org.apache.zookeeper.test.SessionTest

ZooKeeper_branch35_jdk8 - Build # 871 - Still Failing

2018-03-02 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper_branch35_jdk8/871/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 60.52 KB...]
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.098 sec, Thread: 3, Class: org.apache.zookeeper.test.SaslClientTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.954 sec, Thread: 2, Class: 
org.apache.zookeeper.test.SaslAuthMissingClientConfigTest
[junit] Running org.apache.zookeeper.test.SaslSuperUserTest in thread 3
[junit] Running org.apache.zookeeper.test.ServerCnxnTest in thread 2
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.105 sec, Thread: 3, Class: org.apache.zookeeper.test.SaslSuperUserTest
[junit] Running org.apache.zookeeper.test.SessionInvalidationTest in thread 
3
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.415 sec, Thread: 3, Class: org.apache.zookeeper.test.SessionInvalidationTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
3.558 sec, Thread: 2, Class: org.apache.zookeeper.test.ServerCnxnTest
[junit] Running org.apache.zookeeper.test.SessionTest in thread 3
[junit] Running org.apache.zookeeper.test.SessionTrackerCheckTest in thread 
2
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.12 sec, Thread: 2, Class: org.apache.zookeeper.test.SessionTrackerCheckTest
[junit] Running org.apache.zookeeper.test.SessionUpgradeTest in thread 2
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
102.293 sec, Thread: 6, Class: org.apache.zookeeper.test.RecoveryTest
[junit] Running org.apache.zookeeper.test.StandaloneTest in thread 6
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
2.771 sec, Thread: 6, Class: org.apache.zookeeper.test.StandaloneTest
[junit] Running org.apache.zookeeper.test.StatTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
62.556 sec, Thread: 7, Class: org.apache.zookeeper.test.RestoreCommittedLogTest
[junit] Running org.apache.zookeeper.test.StaticHostProviderTest in thread 7
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.766 sec, Thread: 6, Class: org.apache.zookeeper.test.StatTest
[junit] Running org.apache.zookeeper.test.StringUtilTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.087 sec, Thread: 6, Class: org.apache.zookeeper.test.StringUtilTest
[junit] Running org.apache.zookeeper.test.SyncCallTest in thread 6
[junit] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
2.186 sec, Thread: 7, Class: org.apache.zookeeper.test.StaticHostProviderTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.045 sec, Thread: 6, Class: org.apache.zookeeper.test.SyncCallTest
[junit] Running org.apache.zookeeper.test.TruncateTest in thread 7
[junit] Running org.apache.zookeeper.test.WatchEventWhenAutoResetTest in 
thread 6
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
24.14 sec, Thread: 2, Class: org.apache.zookeeper.test.SessionUpgradeTest
[junit] Running org.apache.zookeeper.test.WatchedEventTest in thread 2
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.212 sec, Thread: 2, Class: org.apache.zookeeper.test.WatchedEventTest
[junit] Running org.apache.zookeeper.test.WatcherFuncTest in thread 2
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
17.198 sec, Thread: 7, Class: org.apache.zookeeper.test.TruncateTest
[junit] Running org.apache.zookeeper.test.WatcherTest in thread 7
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
4.304 sec, Thread: 2, Class: org.apache.zookeeper.test.WatcherFuncTest
[junit] Running org.apache.zookeeper.test.X509AuthTest in thread 2
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.142 sec, Thread: 2, Class: org.apache.zookeeper.test.X509AuthTest
[junit] Running org.apache.zookeeper.test.ZkDatabaseCorruptionTest in 
thread 2
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
35.458 sec, Thread: 3, Class: org.apache.zookeeper.test.SessionTest
[junit] Running org.apache.zookeeper.test.ZooKeeperQuotaTest in thread 3
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.436 sec, Thread: 3, Class: org.apache.zookeeper.test.ZooKeeperQuotaTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
24.136 sec, Thread: 6, Class: 
org.apache.zookeeper.test.WatchEventWhenAutoResetTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
20.485 sec, Thread: 2, Class: 

ZooKeeper-trunk - Build # 3748 - Failure

2018-03-02 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper-trunk/3748/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 11.24 KB...]
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Caused by: hudson.plugins.git.GitException: Command "git clean -fdx" returned 
status code 1:
stdout: 
stderr: warning: failed to remove 
build/test/tmp/test7299294491915492585.junit.dir/data/version-2/snapshot.0

at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1996)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1964)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1960)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1597)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1609)
at 
org.jenkinsci.plugins.gitclient.CliGitAPIImpl.clean(CliGitAPIImpl.java:787)
at hudson.plugins.git.GitAPI.clean(GitAPI.java:311)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:922)
at 
hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:896)
at 
hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:853)
at hudson.remoting.UserRequest.perform(UserRequest.java:207)
at hudson.remoting.UserRequest.perform(UserRequest.java:53)
at hudson.remoting.Request$2.run(Request.java:358)
at 
hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to 
H12
at 
hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693)
at hudson.remoting.UserResponse.retrieve(UserRequest.java:310)
at hudson.remoting.Channel.call(Channel.java:908)
at 
hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281)
at com.sun.proxy.$Proxy110.clean(Unknown Source)
at 
org.jenkinsci.plugins.gitclient.RemoteGitImpl.clean(RemoteGitImpl.java:450)
at 
hudson.plugins.git.extensions.impl.CleanBeforeCheckout.decorateFetchCommand(CleanBeforeCheckout.java:30)
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:858)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1129)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1160)
at hudson.scm.SCM.checkout(SCM.java:495)
at 
hudson.model.AbstractProject.checkout(AbstractProject.java:1202)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
at 
jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at 
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
at hudson.model.Run.execute(Run.java:1724)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at 
hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
ERROR: Error fetching remote repo 'origin'
[FINDBUGS] Skipping publisher since build result is FAILURE
[WARNINGS] Skipping publisher since build result is FAILURE
Archiving artifacts
Recording fingerprints
Recording test results
ERROR: Step ?Publish JUnit test result report? failed: No test report files 
were found. Configuration error?
Publishing Javadoc
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any



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

Re: 3.4.12

2018-03-02 Thread Abraham Fine
I am very much interested in taking a turn as a RM and I think it is a great 
time to do a release (now that 2967, 2249, and 2960 arge merged in).

I agree that ZOOKEEPER-2184 can be pushed again and I don't think there is 
anything else that we need to merge in before cutting a release.

Abe

On Thu, Mar 1, 2018, at 21:52, Patrick Hunt wrote:
> There are 19 resolved issues http://bit.ly/2oK9aTx
> and 14 unresolved http://bit.ly/2oFWywS
> ZOOKEEPER-2184 is the only unresolved blocker, however that's not a
> regression and was pushed from 3.4.11, we could do so again given it's
> still being worked on.
> 
> Abe are you interested in taking a turn as RM?
> 
> Patrick
> 
> On Thu, Mar 1, 2018 at 4:38 PM, Andor Molnar  wrote:
> 
> > Hi dev,
> >
> > User has recently run into the regression of 3.4.11 (ZOOKEEPER-2960
> > ) (again?)
> > Are we good to cut 3.4.12 soon or still waiting for something to be
> > committed?
> >
> > Andor
> >


[jira] [Commented] (ZOOKEEPER-2977) Concurrency for addAuth corrupts quorum packets

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/474#discussion_r171980950
  
--- Diff: src/java/test/org/apache/zookeeper/server/NIOServerCnxnTest.java 
---
@@ -103,4 +105,22 @@ public void testValidSelectionKey() throws Exception {
 zk.close();
 }
 }
+
+@Test(timeout = 3)
+public void testServerCnxnGetAuthInfoWithCopy() throws Exception {
+final ZooKeeper zk = createZKClient(hostPort, 3000);
+try {
+Iterable connections = 
serverFactory.getConnections();
+for (ServerCnxn serverCnxn : connections) {
+   List authInfo = serverCnxn.getAuthInfo();
+   Id id = new Id("testscheme", "test");
+   serverCnxn.addAuthInfo(id);
+   Assert.assertTrue(!authInfo.contains(id));
--- End diff --

nit: let's use assertFalse


> Concurrency for addAuth corrupts quorum packets
> ---
>
> Key: ZOOKEEPER-2977
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2977
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: quorum
>Affects Versions: 3.4.9
> Environment: Affects all version in 3.4.x
>Reporter: sumit agrawal
>Assignee: sumit agrawal
>Priority: Critical
> Fix For: 3.4.12
>
> Attachments: 2977.patch
>
>
> When client performs multiple times addAuth with different credential at 
> follower concurrently, the communication between follower gets corrupt. This 
> causes shutdown of Follower due to the failure.
> Analysis:
> In org.apache.zookeeper.server.quorum.QuorumPacket.serialize method,
>  * call a_.startVector(authinfo,"authinfo"); which write the length of 
> authinfo to packet (suppose it writes length 1)
>  * get length of authinfo to write all details in loop (here gets length as 2)
> <-- Here in concurrency scenario, buffer gets corrupt having extra bytes in 
> channel for additional authinfo.
>  
> So When Leader reads next quorum packet, it reads previous extra bytes 
> (incorrect) and possibly identify greater size of message (as corrupt byte 
> pattern) causes exception...
> Coordination > Unexpected exception causing shutdown while sock still open 
> (LearnerHandler.java:633)
>  java.io.IOException: Unreasonable length = 1885430131
>  
>  
> ServerCnxn.getAuthInfo returns Unmodifiable list, but while addAuthInfo, 
> there is no check. So this causes concurrency issue.
>  
>  
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] zookeeper pull request #474: ZOOKEEPER-2977: Concurrency for addAuth corrupt...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/474#discussion_r171980950
  
--- Diff: src/java/test/org/apache/zookeeper/server/NIOServerCnxnTest.java 
---
@@ -103,4 +105,22 @@ public void testValidSelectionKey() throws Exception {
 zk.close();
 }
 }
+
+@Test(timeout = 3)
+public void testServerCnxnGetAuthInfoWithCopy() throws Exception {
+final ZooKeeper zk = createZKClient(hostPort, 3000);
+try {
+Iterable connections = 
serverFactory.getConnections();
+for (ServerCnxn serverCnxn : connections) {
+   List authInfo = serverCnxn.getAuthInfo();
+   Id id = new Id("testscheme", "test");
+   serverCnxn.addAuthInfo(id);
+   Assert.assertTrue(!authInfo.contains(id));
--- End diff --

nit: let's use assertFalse


---


[jira] [Commented] (ZOOKEEPER-2936) Duplicate Keys in log4j.properties config files

2018-03-02 Thread Hudson (JIRA)

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

Hudson commented on ZOOKEEPER-2936:
---

SUCCESS: Integrated in Jenkins build ZooKeeper-trunk #3747 (See 
[https://builds.apache.org/job/ZooKeeper-trunk/3747/])
ZOOKEEPER-2936: Removed duplicate code (afine: rev 
ecb1162ec7f381963fb3263c7971a85fc35b27c8)
* (edit) src/contrib/rest/conf/log4j.properties


> Duplicate Keys in log4j.properties config files
> ---
>
> Key: ZOOKEEPER-2936
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2936
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: contrib, other
>Affects Versions: 3.4.8, 3.5.3, 3.6.0
> Environment: Apache ZooKeeper source tarball
>Reporter: Hari Sekhon
>Priority: Trivial
> Fix For: 3.5.4, 3.6.0, 3.4.12
>
>
> Recent versions of ZooKeeper have introduced the following duplicate keys in 
> to the contrib log4j.properties files.
> In this file:
> {code}
> ./zookeeper-3.4.8/contrib/rest/conf/log4j.properties
> {code}
> and this file:
> {code}
> ./zookeeper-3.4.8/src/contrib/rest/conf/log4j.properties
> {code}
> the following duplicate keys are found:
> {code}
> log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
> log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p 
> [%t:%C{1}@%L] - %m%n
> {code}
> This was discovered because I've written file validators for most major 
> formats which recurse all my github repos and this was failing my integration 
> tests when pulling ZooKeeper source code. I actually added --exclude and 
> --ignore-duplicate-keys switches to {code}validate_ini.py{code} to work 
> around this and fix my builds for now but just remembered to raise this to 
> you guys.
> The validator tools if you're interested can be found at:
> https://github.com/harisekhon/pytools
> Cheers
> Hari



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (ZOOKEEPER-2936) Duplicate Keys in log4j.properties config files

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

Github user afine commented on the issue:

https://github.com/apache/zookeeper/pull/473
  
Thanks @asutosh936!


> Duplicate Keys in log4j.properties config files
> ---
>
> Key: ZOOKEEPER-2936
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2936
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: contrib, other
>Affects Versions: 3.4.8, 3.5.3, 3.6.0
> Environment: Apache ZooKeeper source tarball
>Reporter: Hari Sekhon
>Priority: Trivial
> Fix For: 3.5.4, 3.6.0, 3.4.12
>
>
> Recent versions of ZooKeeper have introduced the following duplicate keys in 
> to the contrib log4j.properties files.
> In this file:
> {code}
> ./zookeeper-3.4.8/contrib/rest/conf/log4j.properties
> {code}
> and this file:
> {code}
> ./zookeeper-3.4.8/src/contrib/rest/conf/log4j.properties
> {code}
> the following duplicate keys are found:
> {code}
> log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
> log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p 
> [%t:%C{1}@%L] - %m%n
> {code}
> This was discovered because I've written file validators for most major 
> formats which recurse all my github repos and this was failing my integration 
> tests when pulling ZooKeeper source code. I actually added --exclude and 
> --ignore-duplicate-keys switches to {code}validate_ini.py{code} to work 
> around this and fix my builds for now but just remembered to raise this to 
> you guys.
> The validator tools if you're interested can be found at:
> https://github.com/harisekhon/pytools
> Cheers
> Hari



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] zookeeper issue #473: ZOOKEEPER-2936 - Removed duplicate code

2018-03-02 Thread afine
Github user afine commented on the issue:

https://github.com/apache/zookeeper/pull/473
  
Thanks @asutosh936!


---


[jira] [Resolved] (ZOOKEEPER-2936) Duplicate Keys in log4j.properties config files

2018-03-02 Thread Abraham Fine (JIRA)

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

Abraham Fine resolved ZOOKEEPER-2936.
-
   Resolution: Fixed
Fix Version/s: 3.5.4
   3.6.0
   3.4.12

Issue resolved by pull request 473
[https://github.com/apache/zookeeper/pull/473]

> Duplicate Keys in log4j.properties config files
> ---
>
> Key: ZOOKEEPER-2936
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2936
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: contrib, other
>Affects Versions: 3.4.8, 3.5.3, 3.6.0
> Environment: Apache ZooKeeper source tarball
>Reporter: Hari Sekhon
>Priority: Trivial
> Fix For: 3.4.12, 3.6.0, 3.5.4
>
>
> Recent versions of ZooKeeper have introduced the following duplicate keys in 
> to the contrib log4j.properties files.
> In this file:
> {code}
> ./zookeeper-3.4.8/contrib/rest/conf/log4j.properties
> {code}
> and this file:
> {code}
> ./zookeeper-3.4.8/src/contrib/rest/conf/log4j.properties
> {code}
> the following duplicate keys are found:
> {code}
> log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
> log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p 
> [%t:%C{1}@%L] - %m%n
> {code}
> This was discovered because I've written file validators for most major 
> formats which recurse all my github repos and this was failing my integration 
> tests when pulling ZooKeeper source code. I actually added --exclude and 
> --ignore-duplicate-keys switches to {code}validate_ini.py{code} to work 
> around this and fix my builds for now but just remembered to raise this to 
> you guys.
> The validator tools if you're interested can be found at:
> https://github.com/harisekhon/pytools
> Cheers
> Hari



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] zookeeper pull request #473: ZOOKEEPER-2936 - Removed duplicate code

2018-03-02 Thread asfgit
Github user asfgit closed the pull request at:

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


---


[jira] [Commented] (ZOOKEEPER-2936) Duplicate Keys in log4j.properties config files

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

Github user asfgit closed the pull request at:

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


> Duplicate Keys in log4j.properties config files
> ---
>
> Key: ZOOKEEPER-2936
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2936
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: contrib, other
>Affects Versions: 3.4.8, 3.5.3, 3.6.0
> Environment: Apache ZooKeeper source tarball
>Reporter: Hari Sekhon
>Priority: Trivial
>
> Recent versions of ZooKeeper have introduced the following duplicate keys in 
> to the contrib log4j.properties files.
> In this file:
> {code}
> ./zookeeper-3.4.8/contrib/rest/conf/log4j.properties
> {code}
> and this file:
> {code}
> ./zookeeper-3.4.8/src/contrib/rest/conf/log4j.properties
> {code}
> the following duplicate keys are found:
> {code}
> log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
> log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p 
> [%t:%C{1}@%L] - %m%n
> {code}
> This was discovered because I've written file validators for most major 
> formats which recurse all my github repos and this was failing my integration 
> tests when pulling ZooKeeper source code. I actually added --exclude and 
> --ignore-duplicate-keys switches to {code}validate_ini.py{code} to work 
> around this and fix my builds for now but just remembered to raise this to 
> you guys.
> The validator tools if you're interested can be found at:
> https://github.com/harisekhon/pytools
> Cheers
> Hari



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Updated] (ZOOKEEPER-2936) Duplicate Keys in log4j.properties config files

2018-03-02 Thread Abraham Fine (JIRA)

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

Abraham Fine updated ZOOKEEPER-2936:

Affects Version/s: 3.6.0
   3.5.3

> Duplicate Keys in log4j.properties config files
> ---
>
> Key: ZOOKEEPER-2936
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2936
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: contrib, other
>Affects Versions: 3.4.8, 3.5.3, 3.6.0
> Environment: Apache ZooKeeper source tarball
>Reporter: Hari Sekhon
>Priority: Trivial
>
> Recent versions of ZooKeeper have introduced the following duplicate keys in 
> to the contrib log4j.properties files.
> In this file:
> {code}
> ./zookeeper-3.4.8/contrib/rest/conf/log4j.properties
> {code}
> and this file:
> {code}
> ./zookeeper-3.4.8/src/contrib/rest/conf/log4j.properties
> {code}
> the following duplicate keys are found:
> {code}
> log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
> log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p 
> [%t:%C{1}@%L] - %m%n
> {code}
> This was discovered because I've written file validators for most major 
> formats which recurse all my github repos and this was failing my integration 
> tests when pulling ZooKeeper source code. I actually added --exclude and 
> --ignore-duplicate-keys switches to {code}validate_ini.py{code} to work 
> around this and fix my builds for now but just remembered to raise this to 
> you guys.
> The validator tools if you're interested can be found at:
> https://github.com/harisekhon/pytools
> Cheers
> Hari



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (ZOOKEEPER-2988) NPE triggered if server receives a vote for a server id not in their voting view

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/476#discussion_r171972228
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
+q2.shutdown();
+q3.shutdown();
+
+Assert.assertTrue("waiting for server 1 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP1,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 2 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP2,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP3,
+ClientBase.CONNECTION_TIMEOUT));
+
+} finally {
+qlogger.removeAppender(appender);
+}
+
+// Verify that Node 1 never threw an exception
+LineNumberReader r = new LineNumberReader(new 
StringReader(os.toString()));
+String line;
+boolean found = false;
+Pattern p = Pattern.compile(".*java.lang.NullPointerException.*");
+while ((line = r.readLine()) != null) {
  

[jira] [Commented] (ZOOKEEPER-2988) NPE triggered if server receives a vote for a server id not in their voting view

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/476#discussion_r171973588
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
+q2.shutdown();
+q3.shutdown();
+
+Assert.assertTrue("waiting for server 1 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP1,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 2 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP2,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP3,
+ClientBase.CONNECTION_TIMEOUT));
+
+} finally {
+qlogger.removeAppender(appender);
+}
+
+// Verify that Node 1 never threw an exception
+LineNumberReader r = new LineNumberReader(new 
StringReader(os.toString()));
+String line;
+boolean found = false;
+Pattern p = Pattern.compile(".*java.lang.NullPointerException.*");
--- End diff --

It would be great to have 

[jira] [Commented] (ZOOKEEPER-2988) NPE triggered if server receives a vote for a server id not in their voting view

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/476#discussion_r171972767
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java ---
@@ -1064,7 +1065,12 @@ else if 
(self.getCurrentAndNextConfigVoters().contains(n.sid)) {
 break;
 }
 } else {
-LOG.warn("Ignoring notification from non-cluster 
member " + n.sid);
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.leader)) {
+LOG.warn("Ignoring notification for non-cluster 
member sid {} from sid {}", n.leader, n.sid);
+}
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.sid)) {
+LOG.warn("Ignoring notification from non-cluster 
member sid {}", n.sid);
--- End diff --

nit: lets say "quorum" instead of "cluster"


> NPE triggered if server receives a vote for a server id not in their voting 
> view
> 
>
> Key: ZOOKEEPER-2988
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2988
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: leaderElection
>Affects Versions: 3.5.3, 3.4.11
>Reporter: Brian Nixon
>Priority: Minor
>
> We've observed the following behavior in elections when a node is lagging 
> behind the quorum in its view of the ensemble topology.
> - Node A is operating with node B in its voting view, but without view of 
> node C.
> - B votes for C.
> - A then switches its vote to C, but throws a NPE when attempting to connect.
> This causes the QuorumPeer to spin up a Follower only to immediately have it 
> shutdown by the exception.
> Ideally, A would not advertise a vote for a server that it will not follow.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (ZOOKEEPER-2988) NPE triggered if server receives a vote for a server id not in their voting view

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/476#discussion_r171964902
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java ---
@@ -1064,7 +1065,12 @@ else if 
(self.getCurrentAndNextConfigVoters().contains(n.sid)) {
 break;
 }
 } else {
-LOG.warn("Ignoring notification from non-cluster 
member " + n.sid);
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.leader)) {
+LOG.warn("Ignoring notification for non-cluster 
member sid {} from sid {}", n.leader, n.sid);
+}
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.sid)) {
+LOG.warn("Ignoring notification from non-cluster 
member sid {}", n.sid);
--- End diff --

lets log which member was voted for


> NPE triggered if server receives a vote for a server id not in their voting 
> view
> 
>
> Key: ZOOKEEPER-2988
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2988
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: leaderElection
>Affects Versions: 3.5.3, 3.4.11
>Reporter: Brian Nixon
>Priority: Minor
>
> We've observed the following behavior in elections when a node is lagging 
> behind the quorum in its view of the ensemble topology.
> - Node A is operating with node B in its voting view, but without view of 
> node C.
> - B votes for C.
> - A then switches its vote to C, but throws a NPE when attempting to connect.
> This causes the QuorumPeer to spin up a Follower only to immediately have it 
> shutdown by the exception.
> Ideally, A would not advertise a vote for a server that it will not follow.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (ZOOKEEPER-2988) NPE triggered if server receives a vote for a server id not in their voting view

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/476#discussion_r171972608
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
--- End diff --

is there a way we can use the existing tearDown code. So we make sure we 
never leave any servers running even if an assertion fails?


> NPE triggered if server receives a vote for a server id not in their voting 
> view
> 
>
> Key: ZOOKEEPER-2988
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2988
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: leaderElection
>Affects Versions: 3.5.3, 3.4.11
>Reporter: Brian Nixon
>Priority: Minor
>
> We've observed the following behavior in elections when a node is lagging 
> behind the quorum in its view of the ensemble topology.
> - Node A is operating with node B in its voting view, but without view of 
> node C.
> - B votes for C.
> - A then switches its vote to C, but throws a NPE when attempting to connect.
> This causes the QuorumPeer to spin up a Follower only to immediately have it 
> shutdown by the exception.
> Ideally, A would not advertise a vote for a server that it will not follow.



--
This 

[jira] [Commented] (ZOOKEEPER-2988) NPE triggered if server receives a vote for a server id not in their voting view

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/476#discussion_r171972029
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
+q2.shutdown();
+q3.shutdown();
+
+Assert.assertTrue("waiting for server 1 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP1,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 2 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP2,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP3,
+ClientBase.CONNECTION_TIMEOUT));
+
+} finally {
+qlogger.removeAppender(appender);
+}
+
+// Verify that Node 1 never threw an exception
+LineNumberReader r = new LineNumberReader(new 
StringReader(os.toString()));
+String line;
+boolean found = false;
+Pattern p = Pattern.compile(".*java.lang.NullPointerException.*");
+while ((line = r.readLine()) != null) {
  

[jira] [Commented] (ZOOKEEPER-2988) NPE triggered if server receives a vote for a server id not in their voting view

2018-03-02 Thread ASF GitHub Bot (JIRA)

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

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

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

https://github.com/apache/zookeeper/pull/476#discussion_r171970721
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
--- End diff --

It would be great if we did not specify the pattern as a literal. Take a 
look at some of the other tests and see if the way they get the patternlayout 
could apply here (`testElectionFraud` for example).


> NPE triggered if server receives a vote for a server id not in their voting 
> view
> 
>
> Key: ZOOKEEPER-2988
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2988
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: leaderElection
>Affects Versions: 3.5.3, 3.4.11
>Reporter: Brian Nixon
>Priority: Minor
>
> We've observed the following behavior in elections when a node is lagging 
> behind the quorum in its view of the ensemble topology.
> - Node A is operating with node B in its voting view, but without view of 
> node C.
> - B votes for C.
> - A then switches its vote to C, but throws a NPE when attempting to connect.
> This causes the QuorumPeer to spin up a Follower only to immediately have it 
> shutdown by the exception.
> Ideally, A would not advertise a vote for a server that it will not follow.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] zookeeper pull request #476: ZOOKEEPER-2988: NPE triggered if server receive...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/476#discussion_r171972767
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java ---
@@ -1064,7 +1065,12 @@ else if 
(self.getCurrentAndNextConfigVoters().contains(n.sid)) {
 break;
 }
 } else {
-LOG.warn("Ignoring notification from non-cluster 
member " + n.sid);
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.leader)) {
+LOG.warn("Ignoring notification for non-cluster 
member sid {} from sid {}", n.leader, n.sid);
+}
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.sid)) {
+LOG.warn("Ignoring notification from non-cluster 
member sid {}", n.sid);
--- End diff --

nit: lets say "quorum" instead of "cluster"


---


[GitHub] zookeeper pull request #476: ZOOKEEPER-2988: NPE triggered if server receive...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/476#discussion_r171970721
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
--- End diff --

It would be great if we did not specify the pattern as a literal. Take a 
look at some of the other tests and see if the way they get the patternlayout 
could apply here (`testElectionFraud` for example).


---


[GitHub] zookeeper pull request #476: ZOOKEEPER-2988: NPE triggered if server receive...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/476#discussion_r171972228
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
+q2.shutdown();
+q3.shutdown();
+
+Assert.assertTrue("waiting for server 1 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP1,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 2 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP2,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP3,
+ClientBase.CONNECTION_TIMEOUT));
+
+} finally {
+qlogger.removeAppender(appender);
+}
+
+// Verify that Node 1 never threw an exception
+LineNumberReader r = new LineNumberReader(new 
StringReader(os.toString()));
+String line;
+boolean found = false;
+Pattern p = Pattern.compile(".*java.lang.NullPointerException.*");
+while ((line = r.readLine()) != null) {
+found = p.matcher(line).matches();
+if (found) {
+break;
+}
+}
+
+Assert.assertFalse("Node should not attempt connection to out of 
view leader", found);
  

[GitHub] zookeeper pull request #476: ZOOKEEPER-2988: NPE triggered if server receive...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/476#discussion_r171972608
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
--- End diff --

is there a way we can use the existing tearDown code. So we make sure we 
never leave any servers running even if an assertion fails?


---


[GitHub] zookeeper pull request #476: ZOOKEEPER-2988: NPE triggered if server receive...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/476#discussion_r171964902
  
--- Diff: 
src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java ---
@@ -1064,7 +1065,12 @@ else if 
(self.getCurrentAndNextConfigVoters().contains(n.sid)) {
 break;
 }
 } else {
-LOG.warn("Ignoring notification from non-cluster 
member " + n.sid);
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.leader)) {
+LOG.warn("Ignoring notification for non-cluster 
member sid {} from sid {}", n.leader, n.sid);
+}
+if 
(!self.getCurrentAndNextConfigVoters().contains(n.sid)) {
+LOG.warn("Ignoring notification from non-cluster 
member sid {}", n.sid);
--- End diff --

lets log which member was voted for


---


[GitHub] zookeeper pull request #476: ZOOKEEPER-2988: NPE triggered if server receive...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/476#discussion_r171973588
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
+q2.shutdown();
+q3.shutdown();
+
+Assert.assertTrue("waiting for server 1 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP1,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 2 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP2,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP3,
+ClientBase.CONNECTION_TIMEOUT));
+
+} finally {
+qlogger.removeAppender(appender);
+}
+
+// Verify that Node 1 never threw an exception
+LineNumberReader r = new LineNumberReader(new 
StringReader(os.toString()));
+String line;
+boolean found = false;
+Pattern p = Pattern.compile(".*java.lang.NullPointerException.*");
--- End diff --

It would be great to have a more direct way of expressing that this member 
never enters the following state. Can we check the logs for `FOLLOWING` like in 
`testElectionFraud`?


---


[GitHub] zookeeper pull request #476: ZOOKEEPER-2988: NPE triggered if server receive...

2018-03-02 Thread afine
Github user afine commented on a diff in the pull request:

https://github.com/apache/zookeeper/pull/476#discussion_r171972029
  
--- Diff: 
src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java ---
@@ -1012,4 +1012,113 @@ public void testFailedTxnAsPartOfQuorumLoss() 
throws Exception {
 Assert.assertNull("server " + i + " should not have /zk" + 
leader, servers.zk[i].exists("/zk" + leader, false));
 }
 }
+
+/**
+ * Verify that a node without the leader in its view will not attempt 
to connect to the leader.
+ */
+@Test
+public void testLeaderOutOfView() throws Exception {
+ClientBase.setupTestEnv();
+
+Layout layout = new PatternLayout("%d{ISO8601} [,yid:%X{myid}] - 
%5p [%t:%C{1}@%L] - %m%n");
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+WriterAppender appender = new WriterAppender(layout, os);
+appender.setThreshold(Level.DEBUG);
+Logger qlogger = 
Logger.getLogger("org.apache.zookeeper.server.quorum");
+qlogger.addAppender(appender);
+
+try {
+final int CLIENT_PORT_QP1 = PortAssignment.unique();
+final int CLIENT_PORT_QP2 = PortAssignment.unique();
+final int CLIENT_PORT_QP3 = PortAssignment.unique();
+
+String quorumCfgIncomplete = getUniquePortCfgForId(1) + "\n" + 
getUniquePortCfgForId(2);
+String quorumCfgComplete = quorumCfgIncomplete + "\n" + 
getUniquePortCfgForId(3);
+
+// Node 1 is started without the leader (3) in its config view
+MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, 
quorumCfgIncomplete);
+MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, 
quorumCfgComplete);
+MainThread q3 = new MainThread(3, CLIENT_PORT_QP3, 
quorumCfgComplete);
+
+// Node 1 must be started first, before quorum is formed, to 
trigger the attempted invalid connection to 3
+q1.start();
+QuorumPeer quorumPeer1 = waitForQuorumPeer(q1, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer1.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 3 started second to avoid 1 and 2 forming a quorum 
before 3 starts up
+q3.start();
+QuorumPeer quorumPeer3 = waitForQuorumPeer(q3, 
CONNECTION_TIMEOUT);
+Assert.assertTrue(quorumPeer3.getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+
+// Node 2 started last, kicks off leader election
+q2.start();
+
+// Nodes 2 and 3 now form quorum and fully start. 1 attempts 
to vote for 3, fails, returns to LOOKING state
+Assert.assertTrue("waiting for server 2 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP2, CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 to start",
+ClientBase.waitForServerUp("127.0.0.1:" + 
CLIENT_PORT_QP3, CONNECTION_TIMEOUT));
+
+Assert.assertTrue(q1.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LOOKING);
+Assert.assertTrue(q2.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.FOLLOWING);
+Assert.assertTrue(q3.getQuorumPeer().getPeerState() == 
QuorumPeer.ServerState.LEADING);
+
+q1.shutdown();
+q2.shutdown();
+q3.shutdown();
+
+Assert.assertTrue("waiting for server 1 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP1,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 2 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP2,
+ClientBase.CONNECTION_TIMEOUT));
+Assert.assertTrue("waiting for server 3 down",
+ClientBase.waitForServerDown("127.0.0.1:" + 
CLIENT_PORT_QP3,
+ClientBase.CONNECTION_TIMEOUT));
+
+} finally {
+qlogger.removeAppender(appender);
+}
+
+// Verify that Node 1 never threw an exception
+LineNumberReader r = new LineNumberReader(new 
StringReader(os.toString()));
+String line;
+boolean found = false;
+Pattern p = Pattern.compile(".*java.lang.NullPointerException.*");
+while ((line = r.readLine()) != null) {
+found = p.matcher(line).matches();
+if (found) {
+break;
+}
+}
+
+Assert.assertFalse("Node should not attempt connection to out of 
view leader", found);
  

ZooKeeper-trunk-openjdk7 - Build # 1819 - Failure

2018-03-02 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper-trunk-openjdk7/1819/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 62.01 KB...]
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.093 sec, Thread: 4, Class: org.apache.zookeeper.test.SaslClientTest
[junit] Running org.apache.zookeeper.test.SaslSuperUserTest in thread 6
[junit] Running org.apache.zookeeper.test.ServerCnxnTest in thread 4
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.858 sec, Thread: 6, Class: org.apache.zookeeper.test.SaslSuperUserTest
[junit] Running org.apache.zookeeper.test.SessionInvalidationTest in thread 
6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.977 sec, Thread: 6, Class: org.apache.zookeeper.test.SessionInvalidationTest
[junit] Running org.apache.zookeeper.test.SessionTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
3.45 sec, Thread: 4, Class: org.apache.zookeeper.test.ServerCnxnTest
[junit] Running org.apache.zookeeper.test.SessionTrackerCheckTest in thread 
4
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.106 sec, Thread: 4, Class: org.apache.zookeeper.test.SessionTrackerCheckTest
[junit] Running org.apache.zookeeper.test.SessionUpgradeTest in thread 4
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
51.149 sec, Thread: 7, Class: org.apache.zookeeper.test.RecoveryTest
[junit] Running org.apache.zookeeper.test.StandaloneTest in thread 7
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
41.215 sec, Thread: 2, Class: org.apache.zookeeper.test.RestoreCommittedLogTest
[junit] Running org.apache.zookeeper.test.StatTest in thread 2
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
2.572 sec, Thread: 7, Class: org.apache.zookeeper.test.StandaloneTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.198 sec, Thread: 2, Class: org.apache.zookeeper.test.StatTest
[junit] Running org.apache.zookeeper.test.StaticHostProviderTest in thread 7
[junit] Running org.apache.zookeeper.test.StringUtilTest in thread 2
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.081 sec, Thread: 2, Class: org.apache.zookeeper.test.StringUtilTest
[junit] Running org.apache.zookeeper.test.SyncCallTest in thread 2
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.199 sec, Thread: 2, Class: org.apache.zookeeper.test.SyncCallTest
[junit] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
3.146 sec, Thread: 7, Class: org.apache.zookeeper.test.StaticHostProviderTest
[junit] Running org.apache.zookeeper.test.TruncateTest in thread 2
[junit] Running org.apache.zookeeper.test.WatchEventWhenAutoResetTest in 
thread 7
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
22.635 sec, Thread: 4, Class: org.apache.zookeeper.test.SessionUpgradeTest
[junit] Running org.apache.zookeeper.test.WatchedEventTest in thread 4
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.172 sec, Thread: 4, Class: org.apache.zookeeper.test.WatchedEventTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
10.453 sec, Thread: 2, Class: org.apache.zookeeper.test.TruncateTest
[junit] Running org.apache.zookeeper.test.WatcherFuncTest in thread 4
[junit] Running org.apache.zookeeper.test.WatcherTest in thread 2
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
2.472 sec, Thread: 4, Class: org.apache.zookeeper.test.WatcherFuncTest
[junit] Running org.apache.zookeeper.test.X509AuthTest in thread 4
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.165 sec, Thread: 4, Class: org.apache.zookeeper.test.X509AuthTest
[junit] Running org.apache.zookeeper.test.ZkDatabaseCorruptionTest in 
thread 4
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
34.219 sec, Thread: 6, Class: org.apache.zookeeper.test.SessionTest
[junit] Running org.apache.zookeeper.test.ZooKeeperQuotaTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.977 sec, Thread: 6, Class: org.apache.zookeeper.test.ZooKeeperQuotaTest
[junit] Tests run: 4, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 
23.484 sec, Thread: 7, Class: 
org.apache.zookeeper.test.WatchEventWhenAutoResetTest
[junit] Test org.apache.zookeeper.test.WatchEventWhenAutoResetTest FAILED
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
10.018 sec, Thread: 4, Class: org.apache.zookeeper.test.ZkDatabaseCorruptionTest
[junit] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time 

ZooKeeper_branch34_openjdk7 - Build # 1833 - Still Failing

2018-03-02 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper_branch34_openjdk7/1833/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 39.20 KB...]
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
19.999 sec
[junit] Running org.apache.zookeeper.test.SaslAuthDesignatedClientTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.75 sec
[junit] Running org.apache.zookeeper.test.SaslAuthDesignatedServerTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.733 sec
[junit] Running org.apache.zookeeper.test.SaslAuthFailDesignatedClientTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.846 sec
[junit] Running org.apache.zookeeper.test.SaslAuthFailNotifyTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.749 sec
[junit] Running org.apache.zookeeper.test.SaslAuthFailTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.899 sec
[junit] Running org.apache.zookeeper.test.SaslAuthMissingClientConfigTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.591 sec
[junit] Running org.apache.zookeeper.test.SaslClientTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.085 sec
[junit] Running org.apache.zookeeper.test.SessionInvalidationTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.713 sec
[junit] Running org.apache.zookeeper.test.SessionTest
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
34.454 sec
[junit] Running org.apache.zookeeper.test.StandaloneTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.904 sec
[junit] Running org.apache.zookeeper.test.StatTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.919 sec
[junit] Running org.apache.zookeeper.test.StaticHostProviderTest
[junit] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.25 sec
[junit] Running org.apache.zookeeper.test.SyncCallTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.648 sec
[junit] Running org.apache.zookeeper.test.TruncateTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
9.489 sec
[junit] Running org.apache.zookeeper.test.UpgradeTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.915 sec
[junit] Running org.apache.zookeeper.test.WatchedEventTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.136 sec
[junit] Running org.apache.zookeeper.test.WatcherFuncTest
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.754 sec
[junit] Running org.apache.zookeeper.test.WatcherTest
[junit] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
29.035 sec
[junit] Running org.apache.zookeeper.test.ZkDatabaseCorruptionTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
16.991 sec
[junit] Running org.apache.zookeeper.test.ZooKeeperQuotaTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.477 sec

fail.build.on.test.failure:

BUILD FAILED
/home/jenkins/jenkins-slave/workspace/ZooKeeper_branch34_openjdk7/build.xml:1382:
 The following error occurred while executing this line:
/home/jenkins/jenkins-slave/workspace/ZooKeeper_branch34_openjdk7/build.xml:1385:
 Tests failed!

Total time: 39 minutes 57 seconds
Build step 'Invoke Ant' marked build as failure
Archiving artifacts
Setting OPENJDK_7_ON_UBUNTU_ONLY__HOME=/usr/lib/jvm/java-7-openjdk-amd64/
Recording test results
Setting OPENJDK_7_ON_UBUNTU_ONLY__HOME=/usr/lib/jvm/java-7-openjdk-amd64/
Setting OPENJDK_7_ON_UBUNTU_ONLY__HOME=/usr/lib/jvm/java-7-openjdk-amd64/
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any
Setting OPENJDK_7_ON_UBUNTU_ONLY__HOME=/usr/lib/jvm/java-7-openjdk-amd64/
Setting OPENJDK_7_ON_UBUNTU_ONLY__HOME=/usr/lib/jvm/java-7-openjdk-amd64/



###
## FAILED TESTS (if any) 
##
1 tests failed.
FAILED:  
org.apache.zookeeper.test.FollowerResyncConcurrencyTest.testResyncBySnapThenDiffAfterFollowerCrashes

Error Message:
Forked Java VM exited abnormally. Please note the time in the report does not 
reflect the time until the VM exit.

Stack Trace:
junit.framework.AssertionFailedError: Forked Java VM exited abnormally. Please 
note the time in the report does not reflect the time until the VM exit.

[jira] [Commented] (ZOOKEEPER-2219) ZooKeeper server should better handle SessionMovedException.

2018-03-02 Thread Artyom Kravchenko (JIRA)

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

Artyom Kravchenko commented on ZOOKEEPER-2219:
--

Hi 

I have faced with similar issue. I use:

server: Zookeeper server 3.4.11 (need to make cluster of solr instances), Solr 
Server 7.2.1 

client: CloudSolrClient (org.apache.solr:solr-solrj:7.1.0 and 
org.apache.zookeeper:zookeeper:3.4.10) 

 

After some time of work client falls off.

Server logs:
{code:java}
2018-02-28 15:04:04,131 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@942] - Client 
attempting to establish new session at /10.100.53.1:52830
2018-02-28 15:04:04,133 [myid:2] - INFO  
[CommitProcessor:2:ZooKeeperServer@687] - Established session 0x261c838af810485 
with negotiated timeout 1 for client /10.100.48.1:52827
2018-02-28 15:04:04,135 [myid:2] - INFO  
[CommitProcessor:2:ZooKeeperServer@687] - Established session 0x261c838af810486 
with negotiated timeout 1 for client /10.100.80.1:52829
2018-02-28 15:04:04,136 [myid:2] - INFO  
[CommitProcessor:2:ZooKeeperServer@687] - Established session 0x261c838af810487 
with negotiated timeout 1 for client /10.100.53.1:52830
2018-02-28 15:04:08,085 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted 
socket connection from /127.0.0.1:52832
2018-02-28 15:04:08,085 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@883] - Processing ruok 
command from /127.0.0.1:52832
2018-02-28 15:04:08,086 [myid:2] - INFO  [Thread-281185:NIOServerCnxn@1044] - 
Closed socket connection for client /127.0.0.1:52832 (no session established 
for client)
--
--
at java.lang.Thread.run(Thread.java:748)
2018-02-28 15:04:23,955 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1044] - Closed socket 
connection for client /10.100.80.1:52829 which had sessionid 0x261c838af810486
2018-02-28 15:04:23,955 [myid:2] - WARN  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@368] - caught end of 
stream exception
EndOfStreamException: Unable to read additional data from client sessionid 
0x261c838af810487, likely client has closed socket
at 
org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:239)
at 
org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:203)
at java.lang.Thread.run(Thread.java:748)
--
--
at 
org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:239)
at 
org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:203)
at java.lang.Thread.run(Thread.java:748)
2018-02-28 15:04:23,956 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1044] - Closed socket 
connection for client /10.100.53.1:52830 which had sessionid 0x261c838af810487
2018-02-28 15:04:23,956 [myid:2] - WARN  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@368] - caught end of 
stream exception
EndOfStreamException: Unable to read additional data from client sessionid 
0x261c838af810485, likely client has closed socket
at 
org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:239)
--
--
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@942] - Client 
attempting to establish new session at /10.100.48.1:52840
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted 
socket connection from /10.100.80.1:52841
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted 
socket connection from /10.100.53.1:52842
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@935] - Client 
attempting to renew session 0x261c838af810487 at /10.100.80.1:52841
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:Learner@108] - Revalidating client: 
0x261c838af810487
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@935] - Client 
attempting to renew session 0x261c838af810486 at /10.100.53.1:52842
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:Learner@108] - Revalidating client: 
0x261c838af810486
--
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@935] - Client 
attempting to renew session 0x261c838af810486 at /10.100.53.1:52842
2018-02-28 15:04:36,586 [myid:2] - INFO  
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:Learner@108] - Revalidating client: 
0x261c838af810486
2018-02-28 15:04:36,587 [myid:2] - INFO  
[QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@680] - Invalid session 
0x261c838af810487 for client /10.100.80.1:52841, probably expired
2018-02-28 

ZooKeeper_branch35_jdk8 - Build # 870 - Still Failing

2018-03-02 Thread Apache Jenkins Server
See https://builds.apache.org/job/ZooKeeper_branch35_jdk8/870/

###
## LAST 60 LINES OF THE CONSOLE 
###
[...truncated 61.01 KB...]
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.546 sec, Thread: 6, Class: 
org.apache.zookeeper.test.SaslAuthMissingClientConfigTest
[junit] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
37.903 sec, Thread: 4, Class: org.apache.zookeeper.test.ReadOnlyModeTest
[junit] Running org.apache.zookeeper.test.SaslSuperUserTest in thread 1
[junit] Running org.apache.zookeeper.test.ServerCnxnTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.606 sec, Thread: 1, Class: org.apache.zookeeper.test.SaslSuperUserTest
[junit] Running org.apache.zookeeper.test.SessionInvalidationTest in thread 
4
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.515 sec, Thread: 4, Class: org.apache.zookeeper.test.SessionInvalidationTest
[junit] Running org.apache.zookeeper.test.SessionTest in thread 1
[junit] Running org.apache.zookeeper.test.SessionTrackerCheckTest in thread 
4
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.077 sec, Thread: 4, Class: org.apache.zookeeper.test.SessionTrackerCheckTest
[junit] Running org.apache.zookeeper.test.SessionUpgradeTest in thread 4
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
3.411 sec, Thread: 6, Class: org.apache.zookeeper.test.ServerCnxnTest
[junit] Running org.apache.zookeeper.test.StandaloneTest in thread 6
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
2.509 sec, Thread: 6, Class: org.apache.zookeeper.test.StandaloneTest
[junit] Running org.apache.zookeeper.test.StatTest in thread 6
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.632 sec, Thread: 6, Class: org.apache.zookeeper.test.StatTest
[junit] Running org.apache.zookeeper.test.StaticHostProviderTest in thread 6
[junit] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
1.761 sec, Thread: 6, Class: org.apache.zookeeper.test.StaticHostProviderTest
[junit] Running org.apache.zookeeper.test.StringUtilTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.058 sec, Thread: 6, Class: org.apache.zookeeper.test.StringUtilTest
[junit] Running org.apache.zookeeper.test.SyncCallTest in thread 6
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.527 sec, Thread: 6, Class: org.apache.zookeeper.test.SyncCallTest
[junit] Running org.apache.zookeeper.test.TruncateTest in thread 6
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
6.387 sec, Thread: 6, Class: org.apache.zookeeper.test.TruncateTest
[junit] Running org.apache.zookeeper.test.WatchEventWhenAutoResetTest in 
thread 6
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
20.752 sec, Thread: 4, Class: org.apache.zookeeper.test.SessionUpgradeTest
[junit] Running org.apache.zookeeper.test.WatchedEventTest in thread 4
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.069 sec, Thread: 4, Class: org.apache.zookeeper.test.WatchedEventTest
[junit] Running org.apache.zookeeper.test.WatcherFuncTest in thread 4
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.837 sec, Thread: 4, Class: org.apache.zookeeper.test.WatcherFuncTest
[junit] Running org.apache.zookeeper.test.WatcherTest in thread 4
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
70.661 sec, Thread: 7, Class: org.apache.zookeeper.test.QuorumZxidSyncTest
[junit] Tests run: 14, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 
82.26 sec, Thread: 8, Class: org.apache.zookeeper.test.QuorumTest
[junit] Running org.apache.zookeeper.test.X509AuthTest in thread 8
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.075 sec, Thread: 8, Class: org.apache.zookeeper.test.X509AuthTest
[junit] Running org.apache.zookeeper.test.ZkDatabaseCorruptionTest in 
thread 8
[junit] Running org.apache.zookeeper.test.ZooKeeperQuotaTest in thread 7
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
0.777 sec, Thread: 7, Class: org.apache.zookeeper.test.ZooKeeperQuotaTest
[junit] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
33.36 sec, Thread: 1, Class: org.apache.zookeeper.test.SessionTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
5.741 sec, Thread: 8, Class: org.apache.zookeeper.test.ZkDatabaseCorruptionTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 
20.548 sec, Thread: 6, Class: 

[jira] [Created] (ZOOKEEPER-2991) Server logs error on shutdown

2018-03-02 Thread Paul Millar (JIRA)
Paul Millar created ZOOKEEPER-2991:
--

 Summary: Server logs error on shutdown
 Key: ZOOKEEPER-2991
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2991
 Project: ZooKeeper
  Issue Type: Bug
  Components: server
Affects Versions: 3.4.11, 3.4.10
Reporter: Paul Millar


Commit d497aac4 introduced the ZooKeeperServer#registerServerShutdownHandler 
method and corresponding ZooKeeperServerShutdownHandler class.  Both the method 
and class are package-protected, resulting in the expectation that non-ZK code 
should not use either.

However, if registerServerShutdownHandler is *not* called, then ZK will log an 
error:
{quote}ZKShutdownHandler is not registered, so ZooKeeper server won't take any 
action on ERROR or SHUTDOWN server state changes
{quote}
There are several problems here.  In order of importance (for me, at least!)

First, (most important) this certainly should not be logged as an error.  
Depending on usage, there may be no need for a shutdown handler.  Always 
logging an error (with no opportunity to silence it) is therefore wrong.

Second, the ability to learn of state changes may be of general interest 
(monitoring, etc); however, this is not possible if the method is protected.

Third, the method accepts a concrete class that is designed to use a 
CountDownLatch. This is not appropriate in all cases.  The method should be 
updated to accept an interface.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)