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