From 1608d8b5275dc6f6328f16d6949eca65bec27d05 Mon Sep 17 00:00:00 2001 From: Vinod Kumar Vavilapalli Date: Thu, 3 Oct 2013 23:21:32 +0000 Subject: [PATCH] YARN-621. Changed YARN web app to not add paths that can cause duplicate additions of authenticated filters there by causing kerberos replay errors. Contributed by Omkar Vinit Joshi. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1529030 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-yarn-project/CHANGES.txt | 4 ++++ .../main/java/org/apache/hadoop/yarn/webapp/WebApps.java | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index c0eca9c350..e604d2c91b 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -137,6 +137,10 @@ Release 2.1.2 - UNRELEASED YARN-890. Ensure CapacityScheduler doesn't round-up metric for available resources. (Xuan Gong & Hitesh Shah via acmurthy) + YARN-621. Changed YARN web app to not add paths that can cause duplicate + additions of authenticated filters there by causing kerberos replay errors. + (Omkar Vinit Joshi via vinodkv) + Release 2.1.1-beta - 2013-09-23 INCOMPATIBLE CHANGES 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 a56d2a4bed..d2ce2f22bb 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 @@ -23,8 +23,10 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.io.IOException; import java.net.ConnectException; import java.net.URL; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServlet; @@ -167,18 +169,23 @@ public class WebApps { webapp.setWebServices(wsName); String basePath = "/" + name; webapp.setRedirectPath(basePath); + List pathList = new ArrayList(); if (basePath.equals("/")) { webapp.addServePathSpec("/*"); + pathList.add("/*"); } else { webapp.addServePathSpec(basePath); webapp.addServePathSpec(basePath + "/*"); + pathList.add(basePath + "/*"); } if (wsName != null && !wsName.equals(basePath)) { if (wsName.equals("/")) { webapp.addServePathSpec("/*"); + pathList.add("/*"); } else { webapp.addServePathSpec("/" + wsName); webapp.addServePathSpec("/" + wsName + "/*"); + pathList.add("/" + wsName + "/*"); } } if (conf == null) { @@ -212,7 +219,7 @@ public class WebApps { HttpServer server = new HttpServer(name, bindAddress, port, findPort, conf, new AdminACLsManager(conf).getAdminAcl(), null, - webapp.getServePathSpecs()) { + pathList.toArray(new String[0])) { { if (UserGroupInformation.isSecurityEnabled()) {