logSync() may block NameNode forever.
-------------------------------------
Key: HADOOP-5510
URL: https://issues.apache.org/jira/browse/HADOOP-5510
Project: Hadoop Core
Issue Type: Bug
Affects Versions: 0.14.0
Reporter: Konstantin Shvachko
# {{FSEditLog.logSync()}} first waits until {{isSyncRunning}} is false and then
performs syncing to file streams by calling {{EditLogOutputStream.flush()}}.
If an exception is thrown after {{isSyncRunning}} is set to {{true}} all
threads will always wait on this condition.
An {{IOException}} may be thrown by {{EditLogOutputStream.setReadyToFlush()}}
or a {{RuntimeException}} may be thrown by {{EditLogOutputStream.flush()}} or
by {{processIOError()}}.
# The loop that calls {{eStream.flush()}} for multiple
{{EditLogOutputStream}}-s is not synchronized, which means that another thread
may encounter an error and modify {{editStreams}} by say calling
{{processIOError()}}. Then the iterating process in {{logSync()}} will break
with {{IndexOutOfBoundException}}.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.