You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2015/06/01 07:41:51 UTC
[2/3] accumulo git commit: ACCUMULO-3876 Synchronize read on
currentKey and initialized
ACCUMULO-3876 Synchronize read on currentKey and initialized
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/3289940f
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/3289940f
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/3289940f
Branch: refs/heads/master
Commit: 3289940fb3c16b5374e3385bb0815994a59f99d8
Parents: 4815ec4
Author: Josh Elser <el...@apache.org>
Authored: Sun May 31 21:55:55 2015 -0400
Committer: Josh Elser <el...@apache.org>
Committed: Mon Jun 1 01:40:35 2015 -0400
----------------------------------------------------------------------
.../delegation/AuthenticationTokenSecretManager.java | 5 ++++-
.../delegation/ZooAuthenticationKeyDistributor.java | 15 ++++++++-------
2 files changed, 12 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/3289940f/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
index a52b5f4..66f9cdc 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
@@ -81,7 +81,10 @@ public class AuthenticationTokenSecretManager extends SecretManager<Authenticati
DelegationTokenConfig cfg = identifier.getConfig();
long now = System.currentTimeMillis();
- final AuthenticationKey secretKey = currentKey;
+ final AuthenticationKey secretKey;
+ synchronized (this) {
+ secretKey = currentKey;
+ }
identifier.setKeyId(secretKey.getKeyId());
identifier.setIssueDate(now);
long expiration = now + tokenMaxLifetime;
http://git-wip-us.apache.org/repos/asf/accumulo/blob/3289940f/server/base/src/main/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyDistributor.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyDistributor.java b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyDistributor.java
index b327a26..0542596 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyDistributor.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyDistributor.java
@@ -27,6 +27,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.accumulo.fate.zookeeper.ZooUtil;
import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeExistsPolicy;
@@ -46,7 +47,7 @@ public class ZooAuthenticationKeyDistributor {
private final ZooReaderWriter zk;
private final String baseNode;
- private boolean initialized = false;
+ private AtomicBoolean initialized = new AtomicBoolean(false);
public ZooAuthenticationKeyDistributor(ZooReaderWriter zk, String baseNode) {
checkNotNull(zk);
@@ -59,7 +60,7 @@ public class ZooAuthenticationKeyDistributor {
* Ensures that ZooKeeper is in a correct state to perform distribution of {@link AuthenticationKey}s.
*/
public synchronized void initialize() throws KeeperException, InterruptedException {
- if (initialized) {
+ if (initialized.get()) {
return;
}
@@ -74,7 +75,7 @@ public class ZooAuthenticationKeyDistributor {
Id actualId = actualAcl.getId();
// The expected outcome from ZooUtil.PRIVATE
if (actualAcl.getPerms() == expectedAcl.getPerms() && actualId.getScheme().equals("digest") && actualId.getId().startsWith("accumulo:")) {
- initialized = true;
+ initialized.set(true);
return;
}
} else {
@@ -85,7 +86,7 @@ public class ZooAuthenticationKeyDistributor {
throw new IllegalStateException("Delegation token secret key node in ZooKeeper is not protected.");
}
- initialized = true;
+ initialized.set(true);
}
/**
@@ -94,7 +95,7 @@ public class ZooAuthenticationKeyDistributor {
* @return A list of {@link AuthenticationKey}s
*/
public List<AuthenticationKey> getCurrentKeys() throws KeeperException, InterruptedException {
- checkState(initialized, "Not initialized");
+ checkState(initialized.get(), "Not initialized");
List<String> children = zk.getChildren(baseNode);
// Shortcircuit to avoid a list creation
@@ -127,7 +128,7 @@ public class ZooAuthenticationKeyDistributor {
* The key to add to ZooKeeper
*/
public synchronized void advertise(AuthenticationKey newKey) throws KeeperException, InterruptedException {
- checkState(initialized, "Not initialized");
+ checkState(initialized.get(), "Not initialized");
checkNotNull(newKey);
// Make sure the node doesn't already exist
@@ -161,7 +162,7 @@ public class ZooAuthenticationKeyDistributor {
* The key to remove from ZooKeeper
*/
public synchronized void remove(AuthenticationKey key) throws KeeperException, InterruptedException {
- checkState(initialized, "Not initialized");
+ checkState(initialized.get(), "Not initialized");
checkNotNull(key);
String path = qualifyPath(key);