From 4e37fba1018d5ba5c71a2a7a849f79b8183c0b69 Mon Sep 17 00:00:00 2001 From: Adam Antal Date: Wed, 20 May 2020 14:57:23 +0200 Subject: [PATCH] YARN-10284. Add lazy initialization of LogAggregationFileControllerFactory in LogServlet --- .../hadoop/yarn/server/webapp/LogServlet.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/LogServlet.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/LogServlet.java index 991e9842d0ea88fcba6f246b650003d92a1b0984..0f234c6d5c2fa408bac54fc84bfd740c7304cd9b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/LogServlet.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/LogServlet.java @@ -62,12 +62,10 @@ private static final Joiner JOINER = Joiner.on(""); private static final String NM_DOWNLOAD_URI_STR = "/ws/v1/node/containers"; - private final LogAggregationFileControllerFactory factory; private final AppInfoProvider appInfoProvider; public LogServlet(Configuration conf, AppInfoProvider appInfoProvider) { super(conf); - this.factory = new LogAggregationFileControllerFactory(conf); this.appInfoProvider = appInfoProvider; } @@ -226,6 +224,16 @@ public Response getContainerLogsInfo(HttpServletRequest req, String nmId, boolean redirectedFromNode, String clusterId, boolean manualRedirection) { + LogAggregationFileControllerFactory factory; + try { + factory = new LogAggregationFileControllerFactory(getConf()); + } catch (Exception e) { + LOG.error("Could not create factory instance", e); + return LogWebServiceUtils.createBadResponse(Status.INTERNAL_SERVER_ERROR, + "Could not create log aggregation factory instance: " + + e.getMessage()); + } + builder.setFactory(factory); BasicAppInfo appInfo; @@ -361,6 +369,16 @@ public Response getLogFile(HttpServletRequest req, String containerIdStr, "Invalid ContainerId: " + containerIdStr); } + LogAggregationFileControllerFactory factory; + try { + factory = new LogAggregationFileControllerFactory(getConf()); + } catch (Exception e) { + LOG.error("Could not create factory instance", e); + return LogWebServiceUtils.createBadResponse(Status.INTERNAL_SERVER_ERROR, + "Could not create log aggregation factory instance: " + + e.getMessage()); + } + final long length = LogWebServiceUtils.parseLongParam(size); ApplicationId appId = containerId.getApplicationAttemptId() -- 2.21.0