Sam Whittle created BEAM-9399:
---------------------------------

             Summary: Possible deadlock between DataflowWorkerLoggingHandler 
and overridden System.err PrintStream
                 Key: BEAM-9399
                 URL: https://issues.apache.org/jira/browse/BEAM-9399
             Project: Beam
          Issue Type: Bug
          Components: runner-dataflow
            Reporter: Sam Whittle
            Assignee: Sam Whittle


When an exception is encountered in DataflowWorkerLoggingHandler the 
ErrorManager is used to log the exception.  ErrorManager uses System.err which 
is overridden to be a PrintStream that writes back into 
DataflowWorkerLoggingHandler.

This has the lock ordering DataflowWorkerLoggingHandler -> PrintStream.
Other logging of System.err has the inverse lock ordering 
PrintStream->DataflowWorkerLoggingHandler so there is potential for deadlock.

This is one known cause of the inversion, but any other System.err logs from 
inside DataflowWorkerLoggingHandler could cause the same issue.

Proposed fix is to address low-hanging fruit of having ErrorManager output to 
the original System.err.  A full fix would be to improve our override of 
System.err to a PrintStream that can detect the locking inversion or possibly 
we could use the PrintStream mutex in both cases.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to