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)