commit 9fb6d222985054f0b3755a74d1239403df80cea9 Author: Gera Shegalov Date: Sat Jan 13 19:15:47 2018 -0800 YARN-7747 use injected GuiceFilter instances diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java index fa447d8d469..a25b3919b5d 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java @@ -932,6 +932,13 @@ public static void defineFilter(ServletContextHandler ctx, String name, defineFilter(ctx, filterHolder, fmap); } + public static void defineFilter(ServletContextHandler ctx, String name, + Filter filter, Map parameters, String[] urls) { + FilterHolder filterHolder = getFilterHolder(name, filter, parameters); + FilterMapping fmap = getFilterMapping(name, urls); + defineFilter(ctx, filterHolder, fmap); + } + /** * Define a filter for a context and set up default url mappings. */ @@ -949,11 +956,15 @@ private static FilterMapping getFilterMapping(String name, String[] urls) { return fmap; } - private static FilterHolder getFilterHolder(String name, String classname, + private static FilterHolder getFilterHolder(String name, Object filter, Map parameters) { FilterHolder holder = new FilterHolder(); holder.setName(name); - holder.setClassName(classname); + if (filter instanceof String) { + holder.setClassName((String)filter); + } else { + holder.setFilter((Filter)filter); + } if (parameters != null) { holder.setInitParameters(parameters); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java index fad6fe29462..4f37a59f7bc 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApp.java @@ -153,6 +153,9 @@ void setHostClass(Class cls) { void setGuiceFilter(GuiceFilter instance) { guiceFilter = instance; + LOG.info("Registered webapp guice modules"); + HttpServer2.defineFilter(httpServer.getWebAppContext(), "guice", + instance, null, new String[] { "/*" }); } @Override diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java index d3ad53eb810..65ebd1141ba 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java @@ -341,10 +341,6 @@ public void setup() { xfsClassName, params, new String[] {"/*"}); } - - HttpServer2.defineFilter(server.getWebAppContext(), "guice", - GuiceFilter.class.getName(), null, new String[] { "/*" }); - webapp.setConf(conf); webapp.setHttpServer(server); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java index 813ba142111..539d67c42e1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java @@ -40,6 +40,8 @@ import org.apache.hadoop.yarn.webapp.util.WebAppUtils; import com.sun.jersey.guice.spi.container.servlet.GuiceContainer; + +import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.List; @@ -96,7 +98,6 @@ protected void serviceStart() throws Exception { targets.add(AuthenticationFilterInitializer.class.getName()); conf.set(filterInitializerConfKey, StringUtils.join(",", targets)); } - LOG.info("Instantiating NMWebApp at " + bindAddress); try { this.webApp = WebApps @@ -110,7 +111,9 @@ protected void serviceStart() throws Exception { .withCSRFProtection(YarnConfiguration.NM_CSRF_PREFIX) .withXFSProtection(YarnConfiguration.NM_XFS_PREFIX) .start(this.nmWebApp); - this.port = this.webApp.httpServer().getConnectorAddress(0).getPort(); + InetSocketAddress webAddr = this.webApp.httpServer().getConnectorAddress(0); + this.port = webAddr.getPort(); + LOG.info("NMWebApp at " + webAddr.getHostName() + ":" + port); } catch (Exception e) { String msg = "NMWebapps failed to start."; LOG.error(msg, e); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java index a0317f62cc0..698f5bdaeb3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java @@ -1110,6 +1110,8 @@ protected void startWepApp() { serviceConfig.put("PathSpec", "/app/*"); } webApp = builder.start(new RMWebApp(this), uiWebAppContext, serviceConfig); + InetSocketAddress webAddr = webApp.httpServer().getConnectorAddress(0); + LOG.info("RMWebApp at " + webAddr.getHostName() + ":" + webAddr.getPort()); } private String getWebAppsPath(String appName) {