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/NMWebAppFilter.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebAppFilter.java index d2f5849..7973499 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebAppFilter.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebAppFilter.java @@ -76,9 +76,14 @@ private String containerLogPageRedirectPath(HttpServletRequest request) { String uri = HtmlQuoting.quoteHtmlChars(request.getRequestURI()); String redirectPath = null; if (!uri.contains("/ws/v1/node") && uri.contains("/containerlogs")) { - String[] parts = uri.split("/"); + String[] parts = uri.split("/", 6); String containerIdStr = parts[3]; String appOwner = parts[4]; + StringBuilder uriEnd = new StringBuilder(); + // Append the rest of the string + if(parts.length > 5 && parts[5] != null) { + uriEnd.append(parts[5]); + } if (containerIdStr != null && !containerIdStr.isEmpty()) { ContainerId containerId = null; try { @@ -106,6 +111,8 @@ private String containerLogPageRedirectPath(HttpServletRequest request) { sb.append(containerIdStr); sb.append("/"); sb.append(appOwner); + sb.append("/"); + sb.append(uriEnd); redirectPath = WebAppUtils.appendQueryParams(request, sb.toString()); } else {