Merged revision(s) 1603356 from hadoop/common/trunk:

HADOOP-10590. ServiceAuthorizationManager is not threadsafe. (Contributed by Benoy Antony)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1603357 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinayakumar B 2014-06-18 05:31:23 +00:00
parent ebe064b9ff
commit 5c6df64f8d
2 changed files with 5 additions and 3 deletions

View File

@ -252,6 +252,8 @@ Release 2.5.0 - UNRELEASED
HADOOP-10561. Copy command with preserve option should handle Xattrs. HADOOP-10561. Copy command with preserve option should handle Xattrs.
(Yi Liu via cnauroth) (Yi Liu via cnauroth)
HADOOP-10590. ServiceAuthorizationManager is not threadsafe. (Benoy Antony via vinayakumarb)
Release 2.4.1 - 2014-06-23 Release 2.4.1 - 2014-06-23
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -45,7 +45,7 @@ import com.google.common.annotations.VisibleForTesting;
public class ServiceAuthorizationManager { public class ServiceAuthorizationManager {
private static final String HADOOP_POLICY_FILE = "hadoop-policy.xml"; private static final String HADOOP_POLICY_FILE = "hadoop-policy.xml";
private Map<Class<?>, AccessControlList> protocolToAcl = private volatile Map<Class<?>, AccessControlList> protocolToAcl =
new IdentityHashMap<Class<?>, AccessControlList>(); new IdentityHashMap<Class<?>, AccessControlList>();
/** /**
@ -114,7 +114,7 @@ public class ServiceAuthorizationManager {
AUDITLOG.info(AUTHZ_SUCCESSFUL_FOR + user + " for protocol="+protocol); AUDITLOG.info(AUTHZ_SUCCESSFUL_FOR + user + " for protocol="+protocol);
} }
public synchronized void refresh(Configuration conf, public void refresh(Configuration conf,
PolicyProvider provider) { PolicyProvider provider) {
// Get the system property 'hadoop.policy.file' // Get the system property 'hadoop.policy.file'
String policyFile = String policyFile =
@ -127,7 +127,7 @@ public class ServiceAuthorizationManager {
} }
@Private @Private
public synchronized void refreshWithLoadedConfiguration(Configuration conf, public void refreshWithLoadedConfiguration(Configuration conf,
PolicyProvider provider) { PolicyProvider provider) {
final Map<Class<?>, AccessControlList> newAcls = final Map<Class<?>, AccessControlList> newAcls =
new IdentityHashMap<Class<?>, AccessControlList>(); new IdentityHashMap<Class<?>, AccessControlList>();