[ 
https://issues.apache.org/jira/browse/HADOOP-3455?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12601101#action_12601101
 ] 

Steve Loughran commented on HADOOP-3455:
----------------------------------------

I'd removed the synchronized(out) but all those uses were then scoped in 
synchronized(this) methods/blocks, so they were still thread safe, though with 
a broader synchronisation there is more risk of deadlock

 My current code uses the new outLock instance proposed, so it will be as 
synchronized to the same level but with better startup/shutdown locking

> IPC.Client synchronisation looks weak
> -------------------------------------
>
>                 Key: HADOOP-3455
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3455
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: ipc
>    Affects Versions: 0.18.0
>            Reporter: Steve Loughran
>         Attachments: hadoop-3455.patch
>
>
> Looking at HADOOP-3453 , its clear that Client.java is inconsistently 
> synchronized
> 1. the running and shouldCloseConnection flags are not always read/written in 
> synchronized blocks, even though they are properties used to share 
> information between threads. They should be marked as volatile for access 
> outside synchronized blocks, and all read-check-update operations must be 
> synchronized.
> 2. there are multiple calls to System.currentTimeMillis() in synchronized 
> blocks; this is a slow native operation and should ideally be done 
> unsynchronized.
> 3. Synchronizing on the (out) stream is dangerous as its value changes during 
> the life of the class, and sometimes it is null. These blocks should all 
> synchronize on the Client instead.
> 4.  There are a number of places where InterruptedExceptions are caught and 
> ignored in a sleep-wait loop:
>      } catch (InterruptedException e) {
>       }
>    This isn't dangerous, but it does make the client harder to stop. These 
> code fragments should be looked at carefully.

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