Author: mahadev Date: Thu Jun 25 20:41:37 2009 New Revision: 788502 URL: http://svn.apache.org/viewvc?rev=788502&view=rev Log: ZOOKEEPER-438. addauth fails to register auth on new client that's not yet connected (breed via mahadev)
Modified: hadoop/zookeeper/trunk/CHANGES.txt hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/ClientCnxn.java hadoop/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ACLTest.java Modified: hadoop/zookeeper/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=788502&r1=788501&r2=788502&view=diff ============================================================================== --- hadoop/zookeeper/trunk/CHANGES.txt (original) +++ hadoop/zookeeper/trunk/CHANGES.txt Thu Jun 25 20:41:37 2009 @@ -128,6 +128,9 @@ ZOOKEEPER-446. some traces of the host auth scheme left (breed via mahadev) + ZOOKEEPER-438. addauth fails to register auth on new client that's not yet +connected (breed via mahadev) + IMPROVEMENTS: ZOOKEEPER-308. improve the atomic broadcast performance 3x. (breed via mahadev) Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/ClientCnxn.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/ClientCnxn.java?rev=788502&r1=788501&r2=788502&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/ClientCnxn.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/ClientCnxn.java Thu Jun 25 20:41:37 2009 @@ -1130,11 +1130,12 @@ } public void addAuthInfo(String scheme, byte auth[]) { - authInfo.add(new AuthData(scheme, auth)); - if (zooKeeper.state == States.CONNECTED) { - queuePacket(new RequestHeader(-4, OpCode.auth), null, - new AuthPacket(0, scheme, auth), null, null, null, null, - null, null); + if (!zooKeeper.state.isAlive()) { + return; } + authInfo.add(new AuthData(scheme, auth)); + queuePacket(new RequestHeader(-4, OpCode.auth), null, + new AuthPacket(0, scheme, auth), null, null, null, null, + null, null); } } Modified: hadoop/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ACLTest.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ACLTest.java?rev=788502&r1=788501&r2=788502&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ACLTest.java (original) +++ hadoop/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ACLTest.java Thu Jun 25 20:41:37 2009 @@ -55,6 +55,32 @@ LOG.info("FINISHED " + getName()); } + public void testDisconnectedAddAuth() throws Exception { + File tmpDir = ClientBase.createTmpDir(); + ClientBase.setupTestEnv(); + zks = new ZooKeeperServer(tmpDir, tmpDir, 3000); + SyncRequestProcessor.setSnapCount(1000); + final int PORT = Integer.parseInt(HOSTPORT.split(":")[1]); + NIOServerCnxn.Factory f = new NIOServerCnxn.Factory(PORT); + f.startup(zks); + LOG.info("starting up the zookeeper server .. waiting"); + assertTrue("waiting for server being up", + ClientBase.waitForServerUp(HOSTPORT,CONNECTION_TIMEOUT)); + ZooKeeper zk = new ZooKeeper(HOSTPORT, CONNECTION_TIMEOUT, this); + try { + zk.addAuthInfo("digest", "pat:test".getBytes()); + zk.setACL("/", Ids.CREATOR_ALL_ACL, -1); + } finally { + zk.close(); + } + + f.shutdown(); + + assertTrue("waiting for server down", + ClientBase.waitForServerDown(HOSTPORT, + ClientBase.CONNECTION_TIMEOUT)); + } + /** * Verify that acl optimization of storing just * a few acls and there references in the data @@ -149,4 +175,4 @@ startSignal.countDown(); } } -} \ No newline at end of file +}