HDFS-11696. Fix warnings from Spotbugs in hadoop-hdfs. Contributed by Yiqun Lin.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2e43c28e Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2e43c28e Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2e43c28e Branch: refs/heads/HDFS-7240 Commit: 2e43c28e01fe006210e71aab179527669f6412ed Parents: 645a8f2 Author: Yiqun Lin <yq...@apache.org> Authored: Tue Aug 15 16:48:49 2017 +0800 Committer: Yiqun Lin <yq...@apache.org> Committed: Tue Aug 15 16:48:49 2017 +0800 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hdfs/DFSClient.java | 7 +++-- .../hdfs/server/protocol/SlowDiskReports.java | 5 ++-- .../dev-support/findbugsExcludeFile.xml | 26 +++++++++++++++++++ .../hdfs/qjournal/server/JournalNode.java | 16 +++++++----- .../hdfs/server/datanode/DataStorage.java | 12 ++++++--- .../namenode/NNStorageRetentionManager.java | 27 +++++++++++--------- .../org/apache/hadoop/hdfs/tools/DFSAdmin.java | 6 ++--- .../offlineImageViewer/ImageLoaderCurrent.java | 10 +++++--- .../namenode/TestNameNodeOptionParsing.java | 27 +++++++++++++++++++- 9 files changed, 103 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java index 677ea35..88b273a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java @@ -2901,9 +2901,12 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, } synchronized (DFSClient.class) { if (STRIPED_READ_THREAD_POOL == null) { - STRIPED_READ_THREAD_POOL = DFSUtilClient.getThreadPoolExecutor(1, + // Only after thread pool is fully constructed then save it to + // volatile field. + ThreadPoolExecutor threadPool = DFSUtilClient.getThreadPoolExecutor(1, numThreads, 60, "StripedRead-", true); - STRIPED_READ_THREAD_POOL.allowCoreThreadTimeOut(true); + threadPool.allowCoreThreadTimeOut(true); + STRIPED_READ_THREAD_POOL = threadPool; } } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/protocol/SlowDiskReports.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/protocol/SlowDiskReports.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/protocol/SlowDiskReports.java index 8095c2a..496389a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/protocol/SlowDiskReports.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/server/protocol/SlowDiskReports.java @@ -101,8 +101,9 @@ public final class SlowDiskReports { } boolean areEqual; - for (String disk : this.slowDisks.keySet()) { - if (!this.slowDisks.get(disk).equals(that.slowDisks.get(disk))) { + for (Map.Entry<String, Map<DiskOp, Double>> entry : this.slowDisks + .entrySet()) { + if (!entry.getValue().equals(that.slowDisks.get(entry.getKey()))) { return false; } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs/dev-support/findbugsExcludeFile.xml ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/dev-support/findbugsExcludeFile.xml b/hadoop-hdfs-project/hadoop-hdfs/dev-support/findbugsExcludeFile.xml index 2a7824a..9582fcb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/dev-support/findbugsExcludeFile.xml +++ b/hadoop-hdfs-project/hadoop-hdfs/dev-support/findbugsExcludeFile.xml @@ -264,4 +264,30 @@ <Field name="locations" /> <Bug pattern="SE_TRANSIENT_FIELD_NOT_RESTORED" /> </Match> + <Match> + <Class name="org.apache.hadoop.hdfs.server.namenode.NNUpgradeUtil$1" /> + <Method name="visitFile" /> + <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" /> + </Match> + <!-- Ignore warnings for not changing the startup option parsing behavior. --> + <Match> + <Class name="org.apache.hadoop.hdfs.server.common.HdfsServerConstants$StartupOption" /> + <Method name="setClusterId" /> + <Bug pattern="ME_ENUM_FIELD_SETTER" /> + </Match> + <Match> + <Class name="org.apache.hadoop.hdfs.server.common.HdfsServerConstants$StartupOption" /> + <Method name="setForce" /> + <Bug pattern="ME_ENUM_FIELD_SETTER" /> + </Match> + <Match> + <Class name="org.apache.hadoop.hdfs.server.common.HdfsServerConstants$StartupOption" /> + <Method name="setForceFormat" /> + <Bug pattern="ME_ENUM_FIELD_SETTER" /> + </Match> + <Match> + <Class name="org.apache.hadoop.hdfs.server.common.HdfsServerConstants$StartupOption" /> + <Method name="setInteractiveFormat" /> + <Bug pattern="ME_ENUM_FIELD_SETTER" /> + </Match> </FindBugsFilter> http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java index af7a84f..6056e34 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNode.java @@ -299,14 +299,18 @@ public class JournalNode implements Tool, Configurable, JournalNodeMXBean { return file.isDirectory(); } }); - for (File journalDir : journalDirs) { - String jid = journalDir.getName(); - if (!status.containsKey(jid)) { - Map<String, String> jMap = new HashMap<String, String>(); - jMap.put("Formatted", "true"); - status.put(jid, jMap); + + if (journalDirs != null) { + for (File journalDir : journalDirs) { + String jid = journalDir.getName(); + if (!status.containsKey(jid)) { + Map<String, String> jMap = new HashMap<String, String>(); + jMap.put("Formatted", "true"); + status.put(jid, jMap); + } } } + return JSON.toString(status); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java index 9a71081..6d6e96a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java @@ -1336,10 +1336,14 @@ public class DataStorage extends Storage { return name.startsWith(BLOCK_SUBDIR_PREFIX); } }); - for(int i = 0; i < otherNames.length; i++) - linkBlocksHelper(new File(from, otherNames[i]), - new File(to, otherNames[i]), oldLV, hl, upgradeToIdBasedLayout, - blockRoot, idBasedLayoutSingleLinks); + + if (otherNames != null) { + for (int i = 0; i < otherNames.length; i++) { + linkBlocksHelper(new File(from, otherNames[i]), + new File(to, otherNames[i]), oldLV, hl, upgradeToIdBasedLayout, + blockRoot, idBasedLayoutSingleLinks); + } + } } /** http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorageRetentionManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorageRetentionManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorageRetentionManager.java index 98b7e9a..2a83541 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorageRetentionManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorageRetentionManager.java @@ -255,24 +255,27 @@ public class NNStorageRetentionManager { }); // Check whether there is any work to do. - if (filesInStorage.length <= numCheckpointsToRetain) { + if (filesInStorage != null + && filesInStorage.length <= numCheckpointsToRetain) { return; } // Create a sorted list of txids from the file names. TreeSet<Long> sortedTxIds = new TreeSet<Long>(); - for (String fName : filesInStorage) { - // Extract the transaction id from the file name. - long fTxId; - try { - fTxId = Long.parseLong(fName.substring(oivImagePrefix.length() + 1)); - } catch (NumberFormatException nfe) { - // This should not happen since we have already filtered it. - // Log and continue. - LOG.warn("Invalid file name. Skipping " + fName); - continue; + if (filesInStorage != null) { + for (String fName : filesInStorage) { + // Extract the transaction id from the file name. + long fTxId; + try { + fTxId = Long.parseLong(fName.substring(oivImagePrefix.length() + 1)); + } catch (NumberFormatException nfe) { + // This should not happen since we have already filtered it. + // Log and continue. + LOG.warn("Invalid file name. Skipping " + fName); + continue; + } + sortedTxIds.add(Long.valueOf(fTxId)); } - sortedTxIds.add(Long.valueOf(fTxId)); } int numFilesToDelete = sortedTxIds.size() - numCheckpointsToRetain; http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java index f2233eb..1fb1d5f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java @@ -1992,7 +1992,7 @@ public class DFSAdmin extends FsShell { return exitCode; } } else if ("-report".equals(cmd)) { - if (argv.length < 1) { + if (argv.length > 6) { printUsage(cmd); return exitCode; } @@ -2022,7 +2022,7 @@ public class DFSAdmin extends FsShell { return exitCode; } } else if (RollingUpgradeCommand.matches(cmd)) { - if (argv.length < 1 || argv.length > 2) { + if (argv.length > 2) { printUsage(cmd); return exitCode; } @@ -2097,7 +2097,7 @@ public class DFSAdmin extends FsShell { return exitCode; } } else if ("-triggerBlockReport".equals(cmd)) { - if (argv.length < 1) { + if ((argv.length != 2) && (argv.length != 3)) { printUsage(cmd); return exitCode; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java index f2c7427..2e2eaf4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java @@ -722,9 +722,13 @@ class ImageLoaderCurrent implements ImageLoader { if (supportSnapshot && supportInodeId) { dirNodeMap.put(inodeId, pathName); } - v.visit(ImageElement.NS_QUOTA, numBlocks == -1 ? in.readLong() : -1); - if (NameNodeLayoutVersion.supports(Feature.DISKSPACE_QUOTA, imageVersion)) - v.visit(ImageElement.DS_QUOTA, numBlocks == -1 ? in.readLong() : -1); + + v.visit(ImageElement.NS_QUOTA, in.readLong()); + if (NameNodeLayoutVersion.supports(Feature.DISKSPACE_QUOTA, + imageVersion)) { + v.visit(ImageElement.DS_QUOTA, in.readLong()); + } + if (supportSnapshot) { boolean snapshottable = in.readBoolean(); if (!snapshottable) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e43c28e/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeOptionParsing.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeOptionParsing.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeOptionParsing.java index 7ee49a9..92b96a5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeOptionParsing.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeOptionParsing.java @@ -138,5 +138,30 @@ public class TestNameNodeOptionParsing { } } } - + + @Test + public void testFormat() { + String[] args = new String[] {"-format"}; + StartupOption opt = NameNode.parseArguments(args); + assertEquals(StartupOption.FORMAT, opt); + assertEquals(true, opt.getInteractiveFormat()); + assertEquals(false, opt.getForceFormat()); + + args = new String[] {"-format", "-nonInteractive"}; + opt = NameNode.parseArguments(args); + assertEquals(StartupOption.FORMAT, opt); + assertEquals(false, opt.getInteractiveFormat()); + assertEquals(false, opt.getForceFormat()); + + args = new String[] {"-format", "-nonInteractive", "-force"}; + opt = NameNode.parseArguments(args); + assertEquals(StartupOption.FORMAT, opt); + assertEquals(false, opt.getInteractiveFormat()); + assertEquals(true, opt.getForceFormat()); + + // test error condition + args = new String[] {"-nonInteractive"}; + opt = NameNode.parseArguments(args); + assertNull(opt); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org