hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Loughran (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-3455) IPC.Client synchronisation looks weak
Date Wed, 04 Jun 2008 11:13:45 GMT

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

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

> -1 tests included. 

A lot of the concurrency is going to be hard to test, because it is hard to replicate. What
we should be able to do is write a test case that triggers the NPE of HADOOP-3543 by having
the client fail to connect to a server and so attempt to clean up before out is set.

> 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
>            Assignee: Steve Loughran
>         Attachments: hadoop-3455-updated.patch, 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.


Mime
View raw message