Haohui Mai created HADOOP-10487:
-----------------------------------
Summary: Racy code in UserGroupInformation#ensureInitialized()
Key: HADOOP-10487
URL: https://issues.apache.org/jira/browse/HADOOP-10487
Project: Hadoop Common
Issue Type: Bug
Reporter: Haohui Mai
Assignee: Haohui Mai
UserGroupInformation#ensureInitialized() uses the double-check-locking pattern
to reduce the synchronization cost:
{code}
private static void ensureInitialized() {
if (conf == null) {
synchronized(UserGroupInformation.class) {
if (conf == null) { // someone might have beat us
initialize(new Configuration(), false);
}
}
}
}
{code}
As [~tlipcon] pointed out in the original jira (HADOOP-9748). This pattern is
incorrect. Please see more details in
http://en.wikipedia.org/wiki/Double-checked_locking and
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
This jira proposes to use the static class holder pattern to do it correctly.
--
This message was sent by Atlassian JIRA
(v6.2#6252)