Return-Path: X-Original-To: apmail-incubator-accumulo-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-accumulo-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8DA229860 for ; Tue, 22 Nov 2011 17:31:33 +0000 (UTC) Received: (qmail 7435 invoked by uid 500); 22 Nov 2011 17:31:33 -0000 Delivered-To: apmail-incubator-accumulo-commits-archive@incubator.apache.org Received: (qmail 7414 invoked by uid 500); 22 Nov 2011 17:31:33 -0000 Mailing-List: contact accumulo-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: accumulo-dev@incubator.apache.org Delivered-To: mailing list accumulo-commits@incubator.apache.org Received: (qmail 7407 invoked by uid 99); 22 Nov 2011 17:31:33 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Nov 2011 17:31:33 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Nov 2011 17:31:32 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id DF8422388A2C; Tue, 22 Nov 2011 17:31:11 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1205094 - in /incubator/accumulo/trunk/src: core/src/main/java/org/apache/accumulo/core/Constants.java server/src/main/java/org/apache/accumulo/server/master/Master.java Date: Tue, 22 Nov 2011 17:31:11 -0000 To: accumulo-commits@incubator.apache.org From: ecn@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111122173111.DF8422388A2C@eris.apache.org> Author: ecn Date: Tue Nov 22 17:31:10 2011 New Revision: 1205094 URL: http://svn.apache.org/viewvc?rev=1205094&view=rev Log: ACCUMULO-169 add zookeeper ACLs if they are not there Modified: incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/Constants.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java Modified: incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/Constants.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/Constants.java?rev=1205094&r1=1205093&r2=1205094&view=diff ============================================================================== --- incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/Constants.java (original) +++ incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/Constants.java Tue Nov 22 17:31:10 2011 @@ -69,6 +69,7 @@ public class Constants { public static final String ZTRACERS = "/tracers"; public static final String ZPROBLEMS = "/problems"; + public static final String ZUSERS = "/users"; public static final String BULK_ARBITRATOR_TYPE = "bulkTx"; Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java?rev=1205094&r1=1205093&r2=1205094&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java Tue Nov 22 17:31:10 2011 @@ -167,6 +167,8 @@ import org.apache.thrift.server.TServer; import org.apache.thrift.transport.TTransportException; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.KeeperException.NoNodeException; +import org.apache.zookeeper.ZooDefs; +import org.apache.zookeeper.data.ACL; import org.apache.zookeeper.data.Stat; import cloudtrace.instrument.thrift.TraceWrap; @@ -317,13 +319,13 @@ public class Master implements LiveTServ } } + private void upgradeZookeeper() { if (Accumulo.getAccumuloPersistentVersion() == Constants.PREV_DATA_VERSION) { // TODO check if tablets are loaded, if so abort? try { // TODO compare zookeeper dump of 1.3 and 1.4 zookeeper init to make sure no more zookeeper updates are needed - // TODO need to update ACL in zookeeper log.info("Upgrading zookeeper"); IZooReaderWriter zoo = ZooReaderWriter.getInstance(); @@ -336,6 +338,9 @@ public class Master implements LiveTServ zoo.putPersistentData(ZooUtil.getRoot(instance) + Constants.ZTABLES + "/" + id + Constants.ZTABLE_FLUSH_ID, "0".getBytes(), NodeExistsPolicy.SKIP); zoo.putPersistentData(ZooUtil.getRoot(instance) + Constants.ZTABLES + "/" + id + Constants.ZTABLE_COMPACT_ID, "0".getBytes(), NodeExistsPolicy.SKIP); } + + setACLs(zoo, ZooUtil.getRoot(instance), ZooUtil.getRoot(instance) + Constants.ZUSERS); + } catch (Exception ex) { log.fatal("Error performing upgrade", ex); System.exit(1); @@ -343,6 +348,24 @@ public class Master implements LiveTServ } } + private void setACLs(IZooReaderWriter zoo, String root, String users) throws Exception { + Stat stat = new Stat(); + List acls = zoo.getZooKeeper().getACL(root, stat); + log.debug("Got acl " + acls + " for " + root); + if (acls.equals(ZooDefs.Ids.OPEN_ACL_UNSAFE)) { + if (root.startsWith(users)) { + log.debug("Setting " + root + " to private"); + zoo.getZooKeeper().setACL(root, ZooUtil.PRIVATE, -1); + } else { + log.debug("Setting " + root + " to public"); + zoo.getZooKeeper().setACL(root, ZooUtil.PUBLIC, -1); + } + for (String child : zoo.getChildren(root)) { + setACLs(zoo, root + "/" + child, users); + } + } + } + private AtomicBoolean upgradeMetadataRunning = new AtomicBoolean(false); private void upgradeMetadata() {