HDFS-8253. DFSStripedOutputStream.closeThreads releases cellBuffers multiple times. Contributed by Kai Sasaki
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/093907d7 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/093907d7 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/093907d7 Branch: refs/heads/HDFS-7285-merge Commit: 093907d728f417d9ed06d16d1a7a4afa5f547f03 Parents: d920cda Author: Tsz-Wo Nicholas Sze <szets...@hortonworks.com> Authored: Wed Jun 24 23:39:05 2015 +0800 Committer: Tsz-Wo Nicholas Sze <szets...@hortonworks.com> Committed: Wed Jun 24 23:39:05 2015 +0800 ---------------------------------------------------------------------- .../hadoop-hdfs/CHANGES-HDFS-EC-7285.txt | 3 +++ .../hadoop/hdfs/DFSStripedOutputStream.java | 27 +++++++++++--------- 2 files changed, 18 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/093907d7/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt index 7f62425..f880425 100755 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt @@ -320,3 +320,6 @@ HDFS-8567. Erasure Coding: SafeMode handles file smaller than a full stripe. (Walter Su via jing9) + + HDFS-8253. DFSStripedOutputStream.closeThreads releases cellBuffers + multiple times. (Kai Sasaki via szetszwo) http://git-wip-us.apache.org/repos/asf/hadoop/blob/093907d7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSStripedOutputStream.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSStripedOutputStream.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSStripedOutputStream.java index 1068b37..cd7f6d4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSStripedOutputStream.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSStripedOutputStream.java @@ -494,21 +494,24 @@ public class DFSStripedOutputStream extends DFSOutputStream { @Override protected void closeThreads(boolean force) throws IOException { final MultipleIOException.Builder b = new MultipleIOException.Builder(); - for (StripedDataStreamer streamer : streamers) { - try { - streamer.close(force); - streamer.join(); - streamer.closeSocket(); - } catch(Exception e) { + try { + for (StripedDataStreamer streamer : streamers) { try { - handleStreamerFailure("force=" + force, e); - } catch(IOException ioe) { - b.add(ioe); + streamer.close(force); + streamer.join(); + streamer.closeSocket(); + } catch (Exception e) { + try { + handleStreamerFailure("force=" + force, e); + } catch (IOException ioe) { + b.add(ioe); + } + } finally { + streamer.setSocketToNull(); } - } finally { - streamer.setSocketToNull(); - setClosed(); } + } finally { + setClosed(); } final IOException ioe = b.build(); if (ioe != null) {