You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2015/08/12 22:25:59 UTC
[4/6] hbase git commit: HBASE-14209 TestShell visibility tests failing
HBASE-14209 TestShell visibility tests failing
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/aa646053
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/aa646053
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/aa646053
Branch: refs/heads/branch-1.1
Commit: aa646053998a718d13ddaa3d53cac21bf2559951
Parents: eedde4a
Author: Andrew Purtell <ap...@apache.org>
Authored: Wed Aug 12 13:25:31 2015 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Wed Aug 12 13:25:31 2015 -0700
----------------------------------------------------------------------
.../visibility/VisibilityLabelsCache.java | 48 ++++++++++++++------
1 file changed, 33 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/aa646053/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
index 4cf39c7..763a624 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java
@@ -206,27 +206,37 @@ public class VisibilityLabelsCache implements VisibilityLabelOrdinalProvider {
}
public List<String> getUserAuths(String user) {
- List<String> auths = EMPTY_LIST;
- Set<Integer> authOrdinals = getUserAuthsAsOrdinals(user);
- if (!authOrdinals.equals(EMPTY_SET)) {
- auths = new ArrayList<String>(authOrdinals.size());
- for (Integer authOrdinal : authOrdinals) {
- auths.add(ordinalVsLabels.get(authOrdinal));
+ this.lock.readLock().lock();
+ try {
+ List<String> auths = EMPTY_LIST;
+ Set<Integer> authOrdinals = getUserAuthsAsOrdinals(user);
+ if (!authOrdinals.equals(EMPTY_SET)) {
+ auths = new ArrayList<String>(authOrdinals.size());
+ for (Integer authOrdinal : authOrdinals) {
+ auths.add(ordinalVsLabels.get(authOrdinal));
+ }
}
+ return auths;
+ } finally {
+ this.lock.readLock().unlock();
}
- return auths;
}
public List<String> getGroupAuths(String[] groups) {
- List<String> auths = EMPTY_LIST;
- Set<Integer> authOrdinals = getGroupAuthsAsOrdinals(groups);
- if (!authOrdinals.equals(EMPTY_SET)) {
- auths = new ArrayList<String>(authOrdinals.size());
- for (Integer authOrdinal : authOrdinals) {
- auths.add(ordinalVsLabels.get(authOrdinal));
+ this.lock.readLock().lock();
+ try {
+ List<String> auths = EMPTY_LIST;
+ Set<Integer> authOrdinals = getGroupAuthsAsOrdinals(groups);
+ if (!authOrdinals.equals(EMPTY_SET)) {
+ auths = new ArrayList<String>(authOrdinals.size());
+ for (Integer authOrdinal : authOrdinals) {
+ auths.add(ordinalVsLabels.get(authOrdinal));
+ }
}
+ return auths;
+ } finally {
+ this.lock.readLock().unlock();
}
- return auths;
}
/**
@@ -270,7 +280,15 @@ public class VisibilityLabelsCache implements VisibilityLabelOrdinalProvider {
}
}
- public void writeToZookeeper(byte[] data, boolean labelsOrUserAuths) {
+ public void writeToZookeeper(byte[] data, boolean labelsOrUserAuths) throws IOException {
+ // Update local state, then send it to zookeeper
+ if (labelsOrUserAuths) {
+ // True for labels
+ this.refreshLabelsCache(data);
+ } else {
+ // False for user auths
+ this.refreshUserAuthsCache(data);
+ }
this.zkVisibilityWatcher.writeToZookeeper(data, labelsOrUserAuths);
}
}