HDFS-9794. Streamer threads may leak if failure happens when closing the striped outputstream. Contributed by Jing Zhao.
This commit is contained in:
parent
b21bbe9ed1
commit
f3c91a41a5
@ -822,7 +822,7 @@ protected void closeThreads(boolean force) throws IOException {
|
||||
streamer.closeSocket();
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
handleCurrentStreamerFailure("force=" + force, e);
|
||||
handleStreamerFailure("force=" + force, e, streamer);
|
||||
} catch (IOException ioe) {
|
||||
b.add(ioe);
|
||||
}
|
||||
@ -946,6 +946,7 @@ protected synchronized void closeImpl() throws IOException {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
try {
|
||||
// flush from all upper layers
|
||||
flushBuffer();
|
||||
@ -977,8 +978,14 @@ protected synchronized void closeImpl() throws IOException {
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
// Failures may happen when flushing data/parity data out. Exceptions
|
||||
// may be thrown if more than 3 streamers fail, or updatePipeline RPC
|
||||
// fails. Streamers may keep waiting for the new block/GS information.
|
||||
// Thus need to force closing these threads.
|
||||
closeThreads(true);
|
||||
}
|
||||
|
||||
closeThreads(false);
|
||||
try (TraceScope ignored =
|
||||
dfsClient.getTracer().newScope("completeFile")) {
|
||||
completeFile(currentBlockGroup);
|
||||
|
@ -426,6 +426,9 @@ Trunk (Unreleased)
|
||||
HDFS-9789. Correctly update DataNode's scheduled block size when writing
|
||||
small EC file. (jing9)
|
||||
|
||||
HDFS-9794. Streamer threads may leak if failure happens when closing the
|
||||
striped outputstream. (jing9)
|
||||
|
||||
BREAKDOWN OF HDFS-7285 SUBTASKS AND RELATED JIRAS
|
||||
|
||||
HDFS-7347. Configurable erasure coding policy for individual files and
|
||||
|
Loading…
Reference in New Issue
Block a user