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/amfilter/AmFilterInitializer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/amfilter/AmFilterInitializer.java index fa54c794a7d71..c3ddc54f3e25a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/amfilter/AmFilterInitializer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/amfilter/AmFilterInitializer.java @@ -62,15 +62,19 @@ public void initFilter(FilterContainer container, Configuration conf) { container.addFilter(FILTER_NAME, FILTER_CLASS, params); // Handle RM HA urls - List urls = new ArrayList<>(); - // Include yarn-site.xml in the classpath YarnConfiguration yarnConf = new YarnConfiguration(conf); - for (String rmId : getRmIds(yarnConf)) { - String url = getUrlByRmId(yarnConf, rmId); - urls.add(url); + Collection rmIds = getRmIds(yarnConf); + if (rmIds != null) { + List urls = new ArrayList<>(); + for (String rmId : rmIds) { + String url = getUrlByRmId(yarnConf, rmId); + urls.add(url); + } + if (!urls.isEmpty()) { + params.put(RM_HA_URLS, StringUtils.join(",", urls)); + } } - params.put(RM_HA_URLS, StringUtils.join(",", urls)); } private Collection getRmIds(Configuration conf) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/amfilter/TestAmFilterInitializer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/amfilter/TestAmFilterInitializer.java index b621012099b61..97625ac0882b0 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/amfilter/TestAmFilterInitializer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/amfilter/TestAmFilterInitializer.java @@ -56,11 +56,11 @@ public void testInitFilter() { AmFilterInitializer afi = new MockAmFilterInitializer(); assertNull(con.givenParameters); afi.initFilter(con, conf); - assertEquals(3, con.givenParameters.size()); + assertEquals(2, con.givenParameters.size()); assertEquals("host1", con.givenParameters.get(AmIpFilter.PROXY_HOSTS)); assertEquals("http://host1:1000/foo", con.givenParameters.get(AmIpFilter.PROXY_URI_BASES)); - assertEquals("", con.givenParameters.get(AmFilterInitializer.RM_HA_URLS)); + assertEquals(null, con.givenParameters.get(AmFilterInitializer.RM_HA_URLS)); // Check a single RM_WEBAPP_ADDRESS con = new MockFilterContainer(); @@ -69,11 +69,11 @@ public void testInitFilter() { afi = new MockAmFilterInitializer(); assertNull(con.givenParameters); afi.initFilter(con, conf); - assertEquals(3, con.givenParameters.size()); + assertEquals(2, con.givenParameters.size()); assertEquals("host2", con.givenParameters.get(AmIpFilter.PROXY_HOSTS)); assertEquals("http://host2:2000/foo", con.givenParameters.get(AmIpFilter.PROXY_URI_BASES)); - assertEquals("", con.givenParameters.get(AmFilterInitializer.RM_HA_URLS)); + assertEquals(null, con.givenParameters.get(AmFilterInitializer.RM_HA_URLS)); // Check multiple RM_WEBAPP_ADDRESSes (RM HA) con = new MockFilterContainer();