accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vi...@apache.org
Subject [1/2] git commit: ACCUMULO-1591 Master and Logger will fail out if secrets mismatch (tserver already does)
Date Thu, 30 Jan 2014 00:05:44 GMT
Updated Branches:
  refs/heads/1.5.1-SNAPSHOT 613da730a -> be26f7916


ACCUMULO-1591 Master and Logger will fail out if secrets mismatch (tserver already does)


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d362d16a
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d362d16a
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d362d16a

Branch: refs/heads/1.5.1-SNAPSHOT
Commit: d362d16ac5ce6c7f088d02fe587d82bdedaac98d
Parents: cabe14a
Author: John Vines <vines@apache.org>
Authored: Wed Jan 29 18:49:14 2014 -0500
Committer: John Vines <vines@apache.org>
Committed: Wed Jan 29 18:49:14 2014 -0500

----------------------------------------------------------------------
 .../apache/accumulo/server/logger/LogService.java |  4 ++++
 .../org/apache/accumulo/server/master/Master.java |  4 ++++
 .../server/zookeeper/ZooReaderWriter.java         | 18 ++++++++++++++++++
 3 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/d362d16a/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java b/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java
index 6fabd95..c89764c 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java
@@ -138,6 +138,10 @@ public class LogService implements MutationLogger.Iface, Watcher {
   }
 
   public LogService(String[] args) throws UnknownHostException, KeeperException, InterruptedException,
IOException {
+    // Before we try anything, check to see if we can read users/root out of Zookeeper, as
it should be guaranteed to exist and ACLed
+    // This is to ensure we have the right secret before we can muck around with anything
+    ZooReaderWriter.validateSecret();
+    
     try {
       Accumulo.init("logger");
     } catch (UnknownHostException e1) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d362d16a/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/master/Master.java b/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
index c8f31fe..f969f1b 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
@@ -2143,6 +2143,10 @@ public class Master implements LiveTServerSet.Listener, LoggerWatcher,
TableObse
   }
   
   private void getMasterLock(final String zMasterLoc) throws KeeperException, InterruptedException
{
+    // Before we try anything, check to see if we can read users/root out of Zookeeper, as
it should be guaranteed to exist and ACLed
+    // This is to ensure we have the right secret before we can muck around with anything
+    ZooReaderWriter.validateSecret();
+    
     log.info("trying to get master lock");
     LockWatcher masterLockWatcher = new ZooLock.LockWatcher() {
       public void lostLock(LockLossReason reason) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d362d16a/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java
----------------------------------------------------------------------
diff --git a/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java
b/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java
index acd87ca..dbaa80b 100644
--- a/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java
+++ b/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Proxy;
 import java.security.SecurityPermission;
 import java.util.List;
 
+import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.util.UtilWaitThread;
@@ -209,4 +210,21 @@ public class ZooReaderWriter extends ZooReader implements IZooReaderWriter
{
     putPersistentData(path, new byte[] {}, NodeExistsPolicy.SKIP);
   }
   
+  public static void validateSecret() {
+    // Before we try anything, check to see if we can read users/root out of Zookeeper, as
it should be guaranteed to exist and ACLed
+    // This is to ensure we have the right secret before we can muck around with anything
+    try {
+      ZooReaderWriter.getInstance().getStatus(Constants.ZROOT+Constants.ZUSERS+Constants.ZROOT+"/root");
+    } catch (KeeperException ke) {
+      switch (ke.code()) {
+        case NOAUTH:
+        case AUTHFAILED:
+          throw new RuntimeException("Could not read ACLed zookeeper data. Please make sure
instance secret is correct.", ke);
+        default:
+          throw new RuntimeException("Had issues reading data from zookeeper.", ke);
+      } 
+    } catch (InterruptedException ie) {
+      throw new RuntimeException("Interrupted from zookeeper, exitting.", ie);
+    }
+  }
 }


Mime
View raw message