From 361fab14be3f5e500a093b20a84f131cbcbbb19f Mon Sep 17 00:00:00 2001 From: Junping Du Date: Tue, 23 Dec 2014 20:04:33 -0800 Subject: [PATCH] YARN-2940. Fix new findbugs warnings in rest of the hadoop-yarn components. (Contributed by Li Lu) (cherry picked from commit d468c9aaf15e977f12e6214b47996412c907e069) --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../distributedshell/ApplicationMaster.java | 4 ++-- .../UnmanagedAMLauncher.java | 9 +++++---- .../yarn/client/api/impl/AMRMClientImpl.java | 5 ++--- .../yarn/client/cli/ApplicationCLI.java | 20 +++++++++++++------ .../hadoop/yarn/client/cli/NodeCLI.java | 8 ++++++-- .../hadoop/yarn/client/cli/QueueCLI.java | 5 ++++- .../client/impl/zk/CuratorService.java | 5 ++++- .../client/impl/zk/RegistrySecurity.java | 20 +++++++++---------- .../server/services/RegistryAdminService.java | 6 +++--- .../org/apache/hadoop/yarn/lib/ZKClient.java | 7 ++++--- .../yarn/server/utils/BuilderUtils.java | 4 ++-- .../server/webproxy/WebAppProxyServlet.java | 14 +++++++++++-- 13 files changed, 71 insertions(+), 39 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index a99296b2c86..7e982c907a9 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -243,6 +243,9 @@ Release 2.7.0 - UNRELEASED YARN-2340. Fixed NPE when queue is stopped during RM restart. (Rohith Sharmaks via jianhe) + YARN-2940. Fix new findbugs warnings in rest of the hadoop-yarn components. (Li Lu + via junping_du) + Release 2.6.0 - 2014-11-18 INCOMPATIBLE CHANGES diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java index b3ea8659fc9..a9a7091d3bb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java @@ -463,11 +463,11 @@ public class ApplicationMaster { scriptPath = envs.get(DSConstants.DISTRIBUTEDSHELLSCRIPTLOCATION); if (envs.containsKey(DSConstants.DISTRIBUTEDSHELLSCRIPTTIMESTAMP)) { - shellScriptPathTimestamp = Long.valueOf(envs + shellScriptPathTimestamp = Long.parseLong(envs .get(DSConstants.DISTRIBUTEDSHELLSCRIPTTIMESTAMP)); } if (envs.containsKey(DSConstants.DISTRIBUTEDSHELLSCRIPTLEN)) { - shellScriptPathLen = Long.valueOf(envs + shellScriptPathLen = Long.parseLong(envs .get(DSConstants.DISTRIBUTEDSHELLSCRIPTLEN)); } if (!scriptPath.isEmpty() diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java index d41434e94dc..b9c7e802b7c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java @@ -25,6 +25,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.EnumSet; import java.util.Map; @@ -232,11 +233,11 @@ public class UnmanagedAMLauncher { Process amProc = Runtime.getRuntime().exec(amCmd, envAMList.toArray(envAM)); final BufferedReader errReader = - new BufferedReader(new InputStreamReader(amProc - .getErrorStream())); + new BufferedReader(new InputStreamReader( + amProc.getErrorStream(), Charset.forName("UTF-8"))); final BufferedReader inReader = - new BufferedReader(new InputStreamReader(amProc - .getInputStream())); + new BufferedReader(new InputStreamReader( + amProc.getInputStream(), Charset.forName("UTF-8"))); // read error and input streams as this would free up the buffers // free the error stream buffer diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java index 071c1eeaf1a..3cf18bafbc8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java @@ -260,10 +260,9 @@ public class AMRMClientImpl extends AMRMClient { blacklistToAdd.addAll(blacklistAdditions); blacklistToRemove.addAll(blacklistRemovals); - ResourceBlacklistRequest blacklistRequest = - (blacklistToAdd != null) || (blacklistToRemove != null) ? + ResourceBlacklistRequest blacklistRequest = ResourceBlacklistRequest.newInstance(blacklistToAdd, - blacklistToRemove) : null; + blacklistToRemove); allocateRequest = AllocateRequest.newInstance(lastResponseId, progressIndicator, diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java index b8ce94a2668..de8f7402534 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java @@ -19,7 +19,9 @@ package org.apache.hadoop.yarn.client.cli; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.nio.charset.Charset; import java.text.DecimalFormat; import java.util.EnumSet; import java.util.HashSet; @@ -276,7 +278,8 @@ public class ApplicationCLI extends YarnCLI { } // Use PrintWriter.println, which uses correct platform line ending. ByteArrayOutputStream baos = new ByteArrayOutputStream(); - PrintWriter appAttemptReportStr = new PrintWriter(baos); + PrintWriter appAttemptReportStr = new PrintWriter( + new OutputStreamWriter(baos, Charset.forName("UTF-8"))); if (appAttemptReport != null) { appAttemptReportStr.println("Application Attempt Report : "); appAttemptReportStr.print("\tApplicationAttempt-Id : "); @@ -335,7 +338,8 @@ public class ApplicationCLI extends YarnCLI { } // Use PrintWriter.println, which uses correct platform line ending. ByteArrayOutputStream baos = new ByteArrayOutputStream(); - PrintWriter containerReportStr = new PrintWriter(baos); + PrintWriter containerReportStr = new PrintWriter( + new OutputStreamWriter(baos, Charset.forName("UTF-8"))); if (containerReport != null) { containerReportStr.println("Container Report : "); containerReportStr.print("\tContainer-Id : "); @@ -376,7 +380,8 @@ public class ApplicationCLI extends YarnCLI { private void listApplications(Set appTypes, EnumSet appStates) throws YarnException, IOException { - PrintWriter writer = new PrintWriter(sysout); + PrintWriter writer = new PrintWriter( + new OutputStreamWriter(sysout, Charset.forName("UTF-8"))); if (allAppStates) { for (YarnApplicationState appState : YarnApplicationState.values()) { appStates.add(appState); @@ -478,7 +483,8 @@ public class ApplicationCLI extends YarnCLI { } // Use PrintWriter.println, which uses correct platform line ending. ByteArrayOutputStream baos = new ByteArrayOutputStream(); - PrintWriter appReportStr = new PrintWriter(baos); + PrintWriter appReportStr = new PrintWriter( + new OutputStreamWriter(baos, Charset.forName("UTF-8"))); if (appReport != null) { appReportStr.println("Application Report : "); appReportStr.print("\tApplication-Id : "); @@ -554,7 +560,8 @@ public class ApplicationCLI extends YarnCLI { */ private void listApplicationAttempts(String applicationId) throws YarnException, IOException { - PrintWriter writer = new PrintWriter(sysout); + PrintWriter writer = new PrintWriter( + new OutputStreamWriter(sysout, Charset.forName("UTF-8"))); List appAttemptsReport = client .getApplicationAttempts(ConverterUtils.toApplicationId(applicationId)); @@ -580,7 +587,8 @@ public class ApplicationCLI extends YarnCLI { */ private void listContainers(String appAttemptId) throws YarnException, IOException { - PrintWriter writer = new PrintWriter(sysout); + PrintWriter writer = new PrintWriter( + new OutputStreamWriter(sysout, Charset.forName("UTF-8"))); List appsReport = client .getContainers(ConverterUtils.toApplicationAttemptId(appAttemptId)); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/NodeCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/NodeCLI.java index fa2779ebc65..22c240f7e38 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/NodeCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/NodeCLI.java @@ -19,7 +19,9 @@ package org.apache.hadoop.yarn.client.cli; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -141,7 +143,8 @@ public class NodeCLI extends YarnCLI { */ private void listClusterNodes(Set nodeStates) throws YarnException, IOException { - PrintWriter writer = new PrintWriter(sysout); + PrintWriter writer = new PrintWriter( + new OutputStreamWriter(sysout, Charset.forName("UTF-8"))); List nodesReport = client.getNodeReports( nodeStates.toArray(new NodeState[0])); writer.println("Total Nodes:" + nodesReport.size()); @@ -167,7 +170,8 @@ public class NodeCLI extends YarnCLI { List nodesReport = client.getNodeReports(); // Use PrintWriter.println, which uses correct platform line ending. ByteArrayOutputStream baos = new ByteArrayOutputStream(); - PrintWriter nodeReportStr = new PrintWriter(baos); + PrintWriter nodeReportStr = new PrintWriter( + new OutputStreamWriter(baos, Charset.forName("UTF-8"))); NodeReport nodeReport = null; for (NodeReport report : nodesReport) { if (!report.getNodeId().equals(nodeId)) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java index 4d50e7f13ac..8a5521dc4b6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java @@ -18,7 +18,9 @@ package org.apache.hadoop.yarn.client.cli; import java.io.IOException; +import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.nio.charset.Charset; import java.text.DecimalFormat; import java.util.Set; @@ -102,7 +104,8 @@ public class QueueCLI extends YarnCLI { */ private int listQueue(String queueName) throws YarnException, IOException { int rc; - PrintWriter writer = new PrintWriter(sysout); + PrintWriter writer = new PrintWriter( + new OutputStreamWriter(sysout, Charset.forName("UTF-8"))); QueueInfo queueInfo = client.getQueueInfo(queueName); if (queueInfo != null) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/CuratorService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/CuratorService.java index 0b68b0a41b0..7f35c3fe628 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/CuratorService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/CuratorService.java @@ -491,7 +491,10 @@ public class CuratorService extends CompositeService public boolean zkPathExists(String path) throws IOException { checkServiceLive(); try { - return zkStat(path) != null; + // if zkStat(path) returns without throwing an exception, the return value + // is guaranteed to be not null + zkStat(path); + return true; } catch (PathNotFoundException e) { return false; } catch (IOException e) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java index 5370880be28..d3c2d15de53 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java @@ -592,17 +592,17 @@ public class RegistrySecurity extends AbstractService { * Note the semicolon on the last entry */ private static final String JAAS_ENTRY = - "%s { \n" - + " %s required\n" + "%s { %n" + + " %s required%n" // kerberos module - + " keyTab=\"%s\"\n" - + " debug=true\n" - + " principal=\"%s\"\n" - + " useKeyTab=true\n" - + " useTicketCache=false\n" - + " doNotPrompt=true\n" - + " storeKey=true;\n" - + "}; \n" + + " keyTab=\"%s\"%n" + + " debug=true%n" + + " principal=\"%s\"%n" + + " useKeyTab=true%n" + + " useTicketCache=false%n" + + " doNotPrompt=true%n" + + " storeKey=true;%n" + + "}; %n" ; /** diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/services/RegistryAdminService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/services/RegistryAdminService.java index 693bb0b911f..513d7ac0aaf 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/services/RegistryAdminService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/services/RegistryAdminService.java @@ -217,9 +217,9 @@ public class RegistryAdminService extends RegistryOperationsService { String message = String.format(Locale.ENGLISH, "Failed to create root paths {%s};" + - "\ndiagnostics={%s}" + - "\ncurrent registry is:" + - "\n{%s}", + "%ndiagnostics={%s}" + + "%ncurrent registry is:" + + "%n{%s}", e, bindingDiagnosticDetails(), dumpRegistryRobustly(true)); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/lib/ZKClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/lib/ZKClient.java index 84e41cecccf..e67530874f3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/lib/ZKClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/lib/ZKClient.java @@ -19,6 +19,7 @@ package org.apache.hadoop.yarn.lib; import java.io.IOException; +import java.nio.charset.Charset; import java.util.List; import org.apache.zookeeper.CreateMode; @@ -55,8 +56,8 @@ public class ZKClient { public void registerService(String path, String data) throws IOException, InterruptedException { try { - zkClient.create(path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.EPHEMERAL); + zkClient.create(path, data.getBytes(Charset.forName("UTF-8")), + ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); } catch(KeeperException ke) { throw new IOException(ke); } @@ -109,7 +110,7 @@ public class ZKClient { try { Stat stat = new Stat(); byte[] byteData = zkClient.getData(path, false, stat); - data = new String(byteData); + data = new String(byteData, Charset.forName("UTF-8")); } catch(KeeperException ke) { throw new IOException(ke); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/utils/BuilderUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/utils/BuilderUtils.java index 1b326716af8..68d4ef9fe77 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/utils/BuilderUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/utils/BuilderUtils.java @@ -118,7 +118,7 @@ public class BuilderUtils { public static ApplicationId newApplicationId(RecordFactory recordFactory, long clustertimestamp, CharSequence id) { return ApplicationId.newInstance(clustertimestamp, - Integer.valueOf(id.toString())); + Integer.parseInt(id.toString())); } public static ApplicationId newApplicationId(RecordFactory recordFactory, @@ -137,7 +137,7 @@ public class BuilderUtils { public static ApplicationId convert(long clustertimestamp, CharSequence id) { return ApplicationId.newInstance(clustertimestamp, - Integer.valueOf(id.toString())); + Integer.parseInt(id.toString())); } public static ContainerId newContainerId(ApplicationAttemptId appAttemptId, diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java index 31457a548da..408fda76977 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; +import java.io.ObjectInputStream; import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; @@ -68,9 +69,9 @@ public class WebAppProxyServlet extends HttpServlet { public static final String PROXY_USER_COOKIE_NAME = "proxy-user"; - private final List trackingUriPlugins; + private transient List trackingUriPlugins; private final String rmAppPageUrlBase; - private final transient YarnConfiguration conf; + private transient YarnConfiguration conf; private static class _ implements Hamlet._ { //Empty @@ -350,4 +351,13 @@ public class WebAppProxyServlet extends HttpServlet { throw new IOException(e); } } + + private void readObject(ObjectInputStream input) + throws IOException, ClassNotFoundException { + input.defaultReadObject(); + conf = new YarnConfiguration(); + this.trackingUriPlugins = + conf.getInstances(YarnConfiguration.YARN_TRACKING_URL_GENERATOR, + TrackingUriPlugin.class); + } }