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:26:01 UTC
[6/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/beb1f1d3
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/beb1f1d3
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/beb1f1d3
Branch: refs/heads/master
Commit: beb1f1d358e7f786c510c988b09dab0f87945d1f
Parents: 0c63d41
Author: Andrew Purtell <ap...@apache.org>
Authored: Wed Aug 12 13:25:34 2015 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Wed Aug 12 13:25:34 2015 -0700
----------------------------------------------------------------------
.../visibility/VisibilityLabelsCache.java | 48 ++++++++++++++------
1 file changed, 33 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/beb1f1d3/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);
}
}