[ 
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.

Reply via email to