HDFS-14106. Refactor NamenodeFsck#copyBlock. Contributed by Beluga Behr.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b09cfad4 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b09cfad4 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b09cfad4 Branch: refs/heads/HDFS-12943 Commit: b09cfad43268765f0b35af115b82ddb8ac87a3a4 Parents: 6d7b44c Author: Giovanni Matteo Fumarola <gif...@apache.org> Authored: Fri Nov 30 10:47:59 2018 -0800 Committer: Giovanni Matteo Fumarola <gif...@apache.org> Committed: Fri Nov 30 10:47:59 2018 -0800 ---------------------------------------------------------------------- .../hdfs/server/namenode/NamenodeFsck.java | 37 +++++++++++--------- 1 file changed, 21 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b09cfad4/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java index f54b407..b4c0a93 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java @@ -1091,28 +1091,33 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { deadNodes.add(chosenNode); } } - byte[] buf = new byte[1024]; - int cnt = 0; - boolean success = true; - long bytesRead = 0; + + long bytesRead = 0L; try { - while ((cnt = blockReader.read(buf, 0, buf.length)) > 0) { - fos.write(buf, 0, cnt); - bytesRead += cnt; - } - if ( bytesRead != block.getNumBytes() ) { - throw new IOException("Recorded block size is " + block.getNumBytes() + - ", but datanode returned " +bytesRead+" bytes"); - } + bytesRead = copyBock(blockReader, fos); } catch (Exception e) { - LOG.error("Error reading block", e); - success = false; + throw new Exception("Could not copy block data for " + lblock.getBlock(), + e); } finally { blockReader.close(); } - if (!success) { - throw new Exception("Could not copy block data for " + lblock.getBlock()); + + if (bytesRead != block.getNumBytes()) { + throw new IOException("Recorded block size is " + block.getNumBytes() + + ", but datanode returned " + bytesRead + " bytes"); + } + } + + private long copyBock(BlockReader blockReader, OutputStream os) + throws IOException { + final byte[] buf = new byte[8192]; + int cnt = 0; + long bytesRead = 0L; + while ((cnt = blockReader.read(buf, 0, buf.length)) > 0) { + os.write(buf, 0, cnt); + bytesRead += cnt; } + return bytesRead; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org