You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2011/11/22 18:31:11 UTC
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
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<ACL> 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() {