[
https://issues.apache.org/jira/browse/HADOOP-5261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jakob Homan updated HADOOP-5261:
--------------------------------
Attachment: HADOOP-5261.patch
Patch:
* Synchronizes access to getHosts() and getExcludedHosts() methods
* Returns a copy of the hosts and excluded hosts sets, rather than the actual
reference to them. This prevents concurrency problems if later a process is
trying to enumerate over the sets while HostsFileReader is updating/deleting,
etc.
Patch passes all unit tests except known-bad HADOOP-4907.
Test-patch:
{noformat}
[exec] -1 overall.
[exec]
[exec] +1 @author. The patch does not contain any @author tags.
[exec]
[exec] -1 tests included. The patch doesn't appear to include any new or
modified tests.
[exec] Please justify why no tests are needed for this
patch.
[exec]
[exec] +1 javadoc. The javadoc tool did not generate any warning messages.
[exec]
[exec] +1 javac. The applied patch does not increase the total number of
javac compiler warnings.
[exec]
[exec] +1 findbugs. The patch does not introduce any new Findbugs warnings.
[exec]
[exec] +1 Eclipse classpath. The patch retains Eclipse classpath integrity.
[exec]
[exec] +1 release audit. The applied patch does not increase the total
number of release audit warnings.
{noformat}
No new tests because correcting a potential concurrency problem and not easily
testable.
> HostsFileReader does not properly implement concurrency support
> ---------------------------------------------------------------
>
> Key: HADOOP-5261
> URL: https://issues.apache.org/jira/browse/HADOOP-5261
> Project: Hadoop Core
> Issue Type: Bug
> Reporter: Jakob Homan
> Assignee: Jakob Homan
> Attachments: HADOOP-5261.patch
>
>
> As currently implemented, the class HostsFileReader does not properly allow
> concurrent access.
> It maintains two Sets and manipulates them within synchronized fields, but
> provides accessor methods that publish unsynchronized access to the sets'
> references (getHosts() and getExcludedHosts()). The sets are implemented as
> HashSets, which are not thread safe. This can allow a method to obtain a
> reference to a set that may be modified concurrently by the HostsFileReader.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.