From 18f727de0697e5bcf0aa8dca30386c2ba3c0a8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20L=C3=B3pez?= Date: Fri, 21 Aug 2026 18:10:10 +0000 Subject: [PATCH 1/5] HADOOP-19970. Resolve a single Jetty release and servlet API on every module classpath Several modules resolved more than one Jetty release, and more than one servlet API, on a single classpath. Both combinations compile and then fail at run time, on whichever code path reaches the wrong jar. * Four modules used org.eclipse.jetty from their main sources while no pom in their inheritance chain declared Jetty: hadoop-mapreduce-client-app, hadoop-mapreduce-client-shuffle, hadoop-yarn-server-router and hadoop-yarn-server-applicationhistoryservice. Each now declares the artifact its main sources use, without a version, and jetty-http gains the dependencyManagement entry it was missing. The Router declares jetty-webapp at compile scope, since a test scope would override the compile-scoped copy it inherits and take it off the Router's own runtime classpath. * jersey-test-framework-provider-jetty carried jetty-continuation onto the test classpath of around twenty modules at its own, older release. It is managed at ${jetty.version} rather than excluded, because Jersey needs the class: Continuation is a final field on JettyHttpContainer's ResponseWriter, initialised in the constructor. * solr-core carried nine Jetty artifacts, and a servlet API, into hadoop-yarn-applications-catalog-webapp's tests at a much older release. Those tests reach Solr only through EmbeddedSolrServer, which runs no servlet container, so none of it is needed. The exclusions are applied to solr-test-framework as well, whose own path to solr-core would otherwise reintroduce the same jars. * hadoop-project excluded javax.servlet-api from jetty-server under the group org.eclipse.jetty, which jetty-server has never used, so the exclusion matched nothing and javax.servlet:javax.servlet-api stayed on the classpath beside the managed jakarta.servlet:jakarta.servlet-api. Both publish the javax.servlet packages, so which one a module compiled and ran against was decided by the order of the jars, and 73 modules carried both. An exclusion naming the real coordinates is added beside the existing one, and the same on javax-websocket-server-impl, which reaches the API again through websocket-servlet. hadoop-common now declares jakarta.servlet-api itself. * hadoop-common declared jakarta.servlet.jsp-api, which reached some eighty-five classpaths. Nothing in the tree uses JSP, so it and its managed version are removed, together with the LICENSE-binary and NOTICE-binary entries for the two artifacts that no longer ship. One module keeps two servlet APIs, hadoop-yarn-server-timelineservice-hbase-tests, where the second arrives with HBase's own test stack. Co-Authored-By: Claude --- LICENSE-binary | 2 - NOTICE-binary | 1 - hadoop-common-project/hadoop-common/pom.xml | 16 +++- .../hadoop-mapreduce-client-app/pom.xml | 5 + .../hadoop-mapreduce-client-shuffle/pom.xml | 5 + hadoop-project/pom.xml | 39 +++++++- .../pom.xml | 94 +++++++++++++++++++ .../pom.xml | 15 +++ .../hadoop-yarn-server-router/pom.xml | 14 +++ 9 files changed, 178 insertions(+), 13 deletions(-) diff --git a/LICENSE-binary b/LICENSE-binary index 0e9bc06209de3a..8c29d984386bcd 100644 --- a/LICENSE-binary +++ b/LICENSE-binary @@ -625,7 +625,6 @@ CDDL 1.1 + GPLv2 with classpath exception com.sun.xml.bind:jaxb-impl:2.2.3-1 javax.annotation:javax.annotation-api:1.3.2 javax.cache:cache-api:1.1.1 -javax.servlet:javax.servlet-api:3.1.0 javax.servlet.jsp:jsp-api:2.1 javax.websocket:javax.websocket-api:1.0 @@ -645,7 +644,6 @@ Eclipse Public License (EPL) 2.0 -------------------------- jakarta.ws.rs-api:jakarta.ws.rs-api:2.1.6 -jakarta.servlet.jsp:jakarta.servlet.jsp-api:2.3.6 jakarta.servlet:jakarta.servlet-api:4.0.4 Eclipse Public License (EPL) 2.0 with some parts being diff --git a/NOTICE-binary b/NOTICE-binary index 407f6c25d997a4..b3f7359b96ae2d 100644 --- a/NOTICE-binary +++ b/NOTICE-binary @@ -463,7 +463,6 @@ Oracle The following artifacts are CDDL + GPLv2 with classpath exception. https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html - * javax.servlet:javax.servlet-api * javax.annotation:javax.annotation-api * javax.transaction:javax.transaction-api * javax.websocket:javax.websocket-api diff --git a/hadoop-common-project/hadoop-common/pom.xml b/hadoop-common-project/hadoop-common/pom.xml index f10ed425370661..dbfe26fe1e1ce8 100644 --- a/hadoop-common-project/hadoop-common/pom.xml +++ b/hadoop-common-project/hadoop-common/pom.xml @@ -92,11 +92,6 @@ commons-collections4 compile - - jakarta.servlet.jsp - jakarta.servlet.jsp-api - compile - jakarta.ws.rs jakarta.ws.rs-api @@ -126,6 +121,17 @@ jakarta.activation-api runtime + + + jakarta.servlet + jakarta.servlet-api + compile + org.eclipse.jetty jetty-server diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml index 4184166ebd3394..b669a2d558260b 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml @@ -104,6 +104,11 @@ com.fasterxml.jackson.core jackson-databind + + + org.eclipse.jetty + jetty-util + org.bouncycastle bcprov-jdk18on diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-shuffle/pom.xml b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-shuffle/pom.xml index f54f4162a8ddb0..cb3428316b65ae 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-shuffle/pom.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-shuffle/pom.xml @@ -55,6 +55,11 @@ ${leveldbjni.group} leveldbjni-all + + + org.eclipse.jetty + jetty-http + ch.qos.logback logback-classic diff --git a/hadoop-project/pom.xml b/hadoop-project/pom.xml index 79f9b8093daa48..478848baa05e56 100644 --- a/hadoop-project/pom.xml +++ b/hadoop-project/pom.xml @@ -909,8 +909,37 @@ org.eclipse.jetty javax.servlet-api + + + javax.servlet + javax.servlet-api + + + org.eclipse.jetty + jetty-http + ${jetty.version} + + + + org.eclipse.jetty + jetty-continuation + ${jetty.version} + org.eclipse.jetty jetty-util @@ -939,6 +968,11 @@ org.eclipse.jetty jetty-webapp + + + javax.servlet + javax.servlet-api + @@ -946,11 +980,6 @@ websocket-client ${jetty.version} - - jakarta.servlet.jsp - jakarta.servlet.jsp-api - 2.3.6 - jakarta.servlet jakarta.servlet-api diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/pom.xml index 724a91431c188c..18740d02a851dd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp/pom.xml @@ -189,6 +189,53 @@ org.eclipse.jetty jetty-alpn-client + + + org.eclipse.jetty + jetty-alpn-java-server + + + org.eclipse.jetty + jetty-alpn-server + + + org.eclipse.jetty + jetty-continuation + + + org.eclipse.jetty + jetty-deploy + + + org.eclipse.jetty + jetty-jmx + + + org.eclipse.jetty + jetty-rewrite + + + org.eclipse.jetty + jetty-security + + + org.eclipse.jetty + jetty-servlets + + + org.eclipse.jetty.http2 + http2-server + + + javax.servlet + javax.servlet-api + commons-collections commons-collections @@ -242,6 +289,53 @@ org.eclipse.jetty jetty-alpn-client + + + org.eclipse.jetty + jetty-alpn-java-server + + + org.eclipse.jetty + jetty-alpn-server + + + org.eclipse.jetty + jetty-continuation + + + org.eclipse.jetty + jetty-deploy + + + org.eclipse.jetty + jetty-jmx + + + org.eclipse.jetty + jetty-rewrite + + + org.eclipse.jetty + jetty-security + + + org.eclipse.jetty + jetty-servlets + + + org.eclipse.jetty.http2 + http2-server + + + javax.servlet + javax.servlet-api + commons-collections commons-collections diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml index b35bb52121684e..e84dbee6778922 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml @@ -53,6 +53,21 @@ org.apache.hadoop hadoop-annotations + + + + org.eclipse.jetty + jetty-webapp + provided + + + + org.eclipse.jetty + jetty-servlet + provided + org.mockito mockito-inline diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/pom.xml index 67fc6348f7edc0..bef0086d1ef2ee 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/pom.xml @@ -60,6 +60,20 @@ hadoop-yarn-server-common + + + org.eclipse.jetty + jetty-webapp + + org.apache.hadoop hadoop-yarn-server-common From be860be26f205c525db835028ba49bed3b0587c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20L=C3=B3pez?= Date: Mon, 24 Aug 2026 19:48:59 +0000 Subject: [PATCH 2/5] HADOOP-19970. Move Jersey's test container off Jetty. jersey-test-framework-provider-jetty resolves to jersey-container-jetty-http, which Jersey 2.46 builds against Jetty 9.4.55 and which needs jetty-continuation. That artifact does not exist past Jetty 9, so managing it at ${jetty.version} stops resolving once that is 12.0.x. Jersey 2.x has no Jetty 12 container: the one in Jersey 3.1.x is jakarta.servlet and cannot be used here. Switch to jersey-test-framework-provider-jdk-http. It is the same Jersey release and speaks real HTTP, but it runs on the JDK's own com.sun.net.httpserver, so it adds a single artifact and no transitive dependencies at all. It puts no Jetty and no servlet API on any test classpath, so the jetty-continuation entry and its shade exclusion go with it. hadoop-client-minicluster relocates com/ and already keeps the JDK's own com/sun packages out of that. Add com/sun/net/httpserver to the list, or the container's references to it would be rewritten into the shaded namespace and fail to resolve at run time. LICENSE-binary gains jersey-container-jdk-http, which reaches hadoop-client-minicluster at compile scope. Co-Authored-By: Claude --- LICENSE-binary | 3 ++- .../hadoop-client-minicluster/pom.xml | 4 +++- .../hadoop-client-runtime/pom.xml | 1 - .../hadoop-mapreduce-client-app/pom.xml | 2 +- .../hadoop-mapreduce-client/pom.xml | 2 +- .../hadoop-mapreduce-examples/pom.xml | 2 +- hadoop-project/pom.xml | 20 +------------------ hadoop-tools/hadoop-resourceestimator/pom.xml | 2 +- .../hadoop-yarn/hadoop-yarn-client/pom.xml | 2 +- .../hadoop-yarn/hadoop-yarn-common/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../hadoop-yarn-server-nodemanager/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../hadoop-yarn-server-web-proxy/pom.xml | 2 +- 16 files changed, 18 insertions(+), 34 deletions(-) diff --git a/LICENSE-binary b/LICENSE-binary index 8c29d984386bcd..450515be8d4ac6 100644 --- a/LICENSE-binary +++ b/LICENSE-binary @@ -658,9 +658,10 @@ org.glassfish.jersey.core:jersey-server:2.46 org.glassfish.jersey.inject:jersey-hk2:2.46 org.glassfish.jersey.core:jersey-client:2.46 org.glassfish.jersey.test-framework:jersey-test-framework-core:2.46 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty:2.46 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jdk-http:2.46 org.glassfish.jersey.containers:jersey-container-servlet:2.46 org.glassfish.jersey.containers:jersey-container-servlet-core:2.46 +org.glassfish.jersey.containers:jersey-container-jdk-http:2.46 org.glassfish.jersey.media:jersey-media-json-jettison:2.46 org.glassfish.jersey.media:jersey-media-jaxb:2.46 diff --git a/hadoop-client-modules/hadoop-client-minicluster/pom.xml b/hadoop-client-modules/hadoop-client-minicluster/pom.xml index 7042f2ce07880a..fb2767a2a1c034 100644 --- a/hadoop-client-modules/hadoop-client-minicluster/pom.xml +++ b/hadoop-client-modules/hadoop-client-minicluster/pom.xml @@ -632,7 +632,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http jakarta.ws.rs @@ -940,11 +940,13 @@ com/sun/security/* com/sun/jndi/* com/sun/management/* + com/sun/net/httpserver/* com/sun/tools/**/* com/sun/javadoc/**/* com/sun/security/**/* com/sun/jndi/**/* com/sun/management/**/* + com/sun/net/httpserver/**/* com/ibm/security/* com/ibm/security/**/* diff --git a/hadoop-client-modules/hadoop-client-runtime/pom.xml b/hadoop-client-modules/hadoop-client-runtime/pom.xml index de626ec9b18f1a..40d2c9e883a855 100644 --- a/hadoop-client-modules/hadoop-client-runtime/pom.xml +++ b/hadoop-client-modules/hadoop-client-runtime/pom.xml @@ -170,7 +170,6 @@ org.eclipse.jetty:jetty-util org.eclipse.jetty:jetty-util-ajax org.eclipse.jetty:jetty-server - org.eclipse.jetty:jetty-continuation org.ow2.asm:* org.bouncycastle:* diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml index b669a2d558260b..20f32c7fa8124c 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml @@ -136,7 +136,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/pom.xml b/hadoop-mapreduce-project/hadoop-mapreduce-client/pom.xml index acca311eb53c03..0ec8950a4234e8 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/pom.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/pom.xml @@ -161,7 +161,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-examples/pom.xml b/hadoop-mapreduce-project/hadoop-mapreduce-examples/pom.xml index 1e02c05fe75b32..45041b3668c74a 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-examples/pom.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-examples/pom.xml @@ -101,7 +101,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-project/pom.xml b/hadoop-project/pom.xml index 478848baa05e56..277c4dc81771e8 100644 --- a/hadoop-project/pom.xml +++ b/hadoop-project/pom.xml @@ -928,18 +928,6 @@ jetty-http ${jetty.version} - - - org.eclipse.jetty - jetty-continuation - ${jetty.version} - org.eclipse.jetty jetty-util @@ -2206,14 +2194,8 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http ${jersey2.version} - - - javax.servlet - javax.servlet-api - - org.glassfish.jersey.media diff --git a/hadoop-tools/hadoop-resourceestimator/pom.xml b/hadoop-tools/hadoop-resourceestimator/pom.xml index 5bd5db3d5422df..7a7695db49cc96 100644 --- a/hadoop-tools/hadoop-resourceestimator/pom.xml +++ b/hadoop-tools/hadoop-resourceestimator/pom.xml @@ -67,7 +67,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/pom.xml index 04a78a94a54e96..88c5b1ac392b82 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/pom.xml @@ -91,7 +91,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml index fdfec1d7d1ca6a..b9d9b685c7d66b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml @@ -148,7 +148,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml index e84dbee6778922..1131bae58efdd0 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml @@ -107,7 +107,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml index 05913c2832733b..a13710b991007a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml @@ -119,7 +119,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml index afde1fa415a6bc..385e1fb05b6094 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml @@ -203,7 +203,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml index 40dcf5d390b558..c9362a9e5e4198 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml @@ -244,7 +244,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests/pom.xml index 9b6f8f4a79e967..7ee63ba3edcef4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests/pom.xml @@ -222,7 +222,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http org.glassfish.jersey.test-framework diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml index 6c64dce18ebbee..591e3852c92fee 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml @@ -123,7 +123,7 @@ org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-jetty + jersey-test-framework-provider-jdk-http test From cd9c9ef398fc6fb38232724094f6387d2eeac0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20L=C3=B3pez?= Date: Wed, 26 Aug 2026 04:41:52 +0000 Subject: [PATCH 3/5] HADOOP-19970. Log through SLF4J in JobEndNotifier. JobEndNotifier logged through org.eclipse.jetty.util.log.Log, Jetty's own logging facade, which is the only reason hadoop-mapreduce-client-app needed a Jetty dependency at all. Use SLF4J, as the rest of the tree does, and the declaration added earlier in this PR goes with it. The module now names no Jetty type anywhere, in main sources or tests. Raised by pan3793 in review. Co-Authored-By: Claude --- .../hadoop-mapreduce-client-app/pom.xml | 5 --- .../mapreduce/v2/app/JobEndNotifier.java | 34 +++++++++++-------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml index 20f32c7fa8124c..9583523ce553c5 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/pom.xml @@ -104,11 +104,6 @@ com.fasterxml.jackson.core jackson-databind - - - org.eclipse.jetty - jetty-util - org.bouncycastle bcprov-jdk18on diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java index ed49f82506bc6a..b98451223a664d 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java @@ -32,7 +32,8 @@ import org.apache.hadoop.mapreduce.CustomJobEndNotifier; import org.apache.hadoop.mapreduce.MRJobConfig; import org.apache.hadoop.mapreduce.v2.api.records.JobReport; -import org.eclipse.jetty.util.log.Log; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** *

This class handles job end notification. Submitters of jobs can choose to @@ -48,6 +49,9 @@ * (eg. SUCCEEDED/KILLED/FAILED) */ public class JobEndNotifier implements Configurable { + private static final Logger LOG = + LoggerFactory.getLogger(JobEndNotifier.class); + private static final String JOB_ID = "$jobId"; private static final String JOB_STATUS = "$jobStatus"; @@ -109,11 +113,11 @@ public void setConf(Configuration conf) { int port = Integer.parseInt(portConf); proxyToUse = new Proxy(proxyType, new InetSocketAddress(hostname, port)); - Log.getLog().info("Job end notification using proxy type \"" + LOG.info("Job end notification using proxy type \"" + proxyType + "\" hostname \"" + hostname + "\" and port \"" + port + "\""); } catch(NumberFormatException nfe) { - Log.getLog().warn("Job end notification couldn't parse configured" + LOG.warn("Job end notification couldn't parse configured" + "proxy's port " + portConf + ". Not going to use a proxy"); } } @@ -141,24 +145,24 @@ protected boolean notifyURLOnce() { private boolean notifyViaBuiltInNotifier() { boolean success = false; try { - Log.getLog().info("Job end notification trying " + urlToNotify); + LOG.info("Job end notification trying " + urlToNotify); HttpURLConnection conn = (HttpURLConnection) urlToNotify.openConnection(proxyToUse); conn.setConnectTimeout(timeout); conn.setReadTimeout(timeout); conn.setAllowUserInteraction(false); if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) { - Log.getLog().warn("Job end notification to " + urlToNotify + LOG.warn("Job end notification to " + urlToNotify + " failed with code: " + conn.getResponseCode() + " and message \"" + conn.getResponseMessage() + "\""); } else { success = true; - Log.getLog().info("Job end notification to " + urlToNotify + LOG.info("Job end notification to " + urlToNotify + " succeeded"); } } catch(IOException ioe) { - Log.getLog().warn("Job end notification to " + urlToNotify + " failed", + LOG.warn("Job end notification to " + urlToNotify + " failed", ioe); } return success; @@ -169,7 +173,7 @@ private boolean notifyViaBuiltInNotifier() { */ private boolean notifyViaCustomNotifier() { try { - Log.getLog().info("Will be using " + customJobEndNotifierClassName + LOG.info("Will be using " + customJobEndNotifierClassName + " for Job end notification"); final Class customJobEndNotifierClass = @@ -180,15 +184,15 @@ private boolean notifyViaCustomNotifier() { boolean success = customJobEndNotifier.notifyOnce(urlToNotify, conf); if (success) { - Log.getLog().info("Job end notification to " + urlToNotify + LOG.info("Job end notification to " + urlToNotify + " succeeded"); } else { - Log.getLog().warn("Job end notification to " + urlToNotify + LOG.warn("Job end notification to " + urlToNotify + " failed"); } return success; } catch (Exception e) { - Log.getLog().warn("Job end notification to " + urlToNotify + LOG.warn("Job end notification to " + urlToNotify + " failed", e); return false; } @@ -215,24 +219,24 @@ public void notify(JobReport jobReport) try { urlToNotify = new URL(userUrl); } catch (MalformedURLException mue) { - Log.getLog().warn("Job end notification couldn't parse " + userUrl, mue); + LOG.warn("Job end notification couldn't parse " + userUrl, mue); return; } // Send notification boolean success = false; while (numTries-- > 0 && !success) { - Log.getLog().info("Job end notification attempts left " + numTries); + LOG.info("Job end notification attempts left " + numTries); success = notifyURLOnce(); if (!success) { Thread.sleep(waitInterval); } } if (!success) { - Log.getLog().warn("Job end notification failed to notify : " + LOG.warn("Job end notification failed to notify : " + urlToNotify); } else { - Log.getLog().info("Job end notification succeeded for " + LOG.info("Job end notification succeeded for " + jobReport.getJobId()); } } From 02803d0c00e9099d4b89bd9c838ea20fe230ee08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20L=C3=B3pez?= Date: Mon, 31 Aug 2026 12:07:05 +0000 Subject: [PATCH 4/5] HADOOP-19970. Take the servlet API from Jetty. The tree took the Servlet 4.0 API from jakarta.servlet:jakarta.servlet-api. jetty-ee8 depends on org.eclipse.jetty.toolchain:jetty-servlet-api instead, so staying on the jakarta coordinate means moving off it again when the ee8 environment lands. Use jetty-servlet-api now. Both publish the same javax.servlet classes, so no source changes, and 4.0.9 is the version Jetty 12 pins for ee8. The coordinate is set once rather than twice. Exclusions naming the servlet API follow the coordinate where a Hadoop module brings it. Where a Jersey artifact declares it, they stay on jakarta.servlet, which is what those artifacts publish. jersey-test-framework-core is one of those: it is now excluded in dependencyManagement, or its copy of the API would sit on the test classpath beside jetty-servlet-api. Co-Authored-By: Claude --- LICENSE-binary | 2 +- .../hadoop-client-minicluster/pom.xml | 16 +++++----- .../hadoop-auth-examples/pom.xml | 4 +-- hadoop-common-project/hadoop-auth/pom.xml | 4 +-- hadoop-common-project/hadoop-common/pom.xml | 4 +-- hadoop-common-project/hadoop-kms/pom.xml | 4 +-- hadoop-common-project/hadoop-nfs/pom.xml | 4 +-- .../hadoop-hdfs-httpfs/pom.xml | 4 +-- hadoop-hdfs-project/hadoop-hdfs-nfs/pom.xml | 4 +-- hadoop-hdfs-project/hadoop-hdfs/pom.xml | 4 +-- hadoop-project/pom.xml | 31 +++++++++++++++++-- hadoop-tools/hadoop-resourceestimator/pom.xml | 4 +-- .../hadoop-yarn-services-api/pom.xml | 4 +-- .../hadoop-yarn/hadoop-yarn-common/pom.xml | 4 +-- .../pom.xml | 4 +-- .../hadoop-yarn-server-common/pom.xml | 4 +-- .../pom.xml | 4 +-- .../hadoop-yarn-server-nodemanager/pom.xml | 4 +-- .../pom.xml | 4 +-- .../pom.xml | 4 +-- .../hadoop-yarn-server-web-proxy/pom.xml | 4 +-- 21 files changed, 73 insertions(+), 48 deletions(-) diff --git a/LICENSE-binary b/LICENSE-binary index 450515be8d4ac6..c3c0a92ca4d292 100644 --- a/LICENSE-binary +++ b/LICENSE-binary @@ -423,6 +423,7 @@ org.eclipse.jetty:jetty-util:9.4.58.v20250814 org.eclipse.jetty:jetty-util-ajax:9.4.58.v20250814 org.eclipse.jetty:jetty-webapp:9.4.58.v20250814 org.eclipse.jetty:jetty-xml:9.4.58.v20250814 +org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.9 org.eclipse.jetty.websocket:javax-websocket-client-impl:9.4.58.v20250814 org.eclipse.jetty.websocket:javax-websocket-server-impl:9.4.58.v20250814 org.ehcache:ehcache:3.8.2 @@ -644,7 +645,6 @@ Eclipse Public License (EPL) 2.0 -------------------------- jakarta.ws.rs-api:jakarta.ws.rs-api:2.1.6 -jakarta.servlet:jakarta.servlet-api:4.0.4 Eclipse Public License (EPL) 2.0 with some parts being GNU General Public License (GPL), Version 2, With Classpath Exception, diff --git a/hadoop-client-modules/hadoop-client-minicluster/pom.xml b/hadoop-client-modules/hadoop-client-minicluster/pom.xml index fb2767a2a1c034..e2e9588a668048 100644 --- a/hadoop-client-modules/hadoop-client-minicluster/pom.xml +++ b/hadoop-client-modules/hadoop-client-minicluster/pom.xml @@ -124,8 +124,8 @@ javax.servlet-api - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api jakarta.ws.rs @@ -419,7 +419,7 @@ - + @@ -464,7 +464,7 @@ - + org.apache.hadoop @@ -476,8 +476,8 @@ javax.servlet-api - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api jakarta.ws.rs @@ -551,8 +551,8 @@ javax.servlet-api - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api jakarta.ws.rs diff --git a/hadoop-common-project/hadoop-auth-examples/pom.xml b/hadoop-common-project/hadoop-auth-examples/pom.xml index 331cffc7815597..f442839fda2aeb 100644 --- a/hadoop-common-project/hadoop-auth-examples/pom.xml +++ b/hadoop-common-project/hadoop-auth-examples/pom.xml @@ -32,8 +32,8 @@ - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api provided diff --git a/hadoop-common-project/hadoop-auth/pom.xml b/hadoop-common-project/hadoop-auth/pom.xml index 4b8854887c1966..4588a15f8cd8d0 100644 --- a/hadoop-common-project/hadoop-auth/pom.xml +++ b/hadoop-common-project/hadoop-auth/pom.xml @@ -62,8 +62,8 @@ test - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api provided diff --git a/hadoop-common-project/hadoop-common/pom.xml b/hadoop-common-project/hadoop-common/pom.xml index dbfe26fe1e1ce8..3f50fd7d47ac68 100644 --- a/hadoop-common-project/hadoop-common/pom.xml +++ b/hadoop-common-project/hadoop-common/pom.xml @@ -128,8 +128,8 @@ depending on which jar happened to come first on the classpath. --> - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api compile diff --git a/hadoop-common-project/hadoop-kms/pom.xml b/hadoop-common-project/hadoop-kms/pom.xml index e2874eb3a8033a..8ccf377c5cd5f8 100644 --- a/hadoop-common-project/hadoop-kms/pom.xml +++ b/hadoop-common-project/hadoop-kms/pom.xml @@ -69,8 +69,8 @@ compile - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api org.eclipse.jetty diff --git a/hadoop-common-project/hadoop-nfs/pom.xml b/hadoop-common-project/hadoop-nfs/pom.xml index 685397e131d427..f942f04718d27d 100644 --- a/hadoop-common-project/hadoop-nfs/pom.xml +++ b/hadoop-common-project/hadoop-nfs/pom.xml @@ -59,8 +59,8 @@ test - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api provided diff --git a/hadoop-hdfs-project/hadoop-hdfs-httpfs/pom.xml b/hadoop-hdfs-project/hadoop-hdfs-httpfs/pom.xml index f0c0e21ac12e50..14e46f62bc52a0 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-httpfs/pom.xml +++ b/hadoop-hdfs-project/hadoop-hdfs-httpfs/pom.xml @@ -63,8 +63,8 @@ compile - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api compile diff --git a/hadoop-hdfs-project/hadoop-hdfs-nfs/pom.xml b/hadoop-hdfs-project/hadoop-hdfs-nfs/pom.xml index 38f293c1c34cc6..149a075b949362 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-nfs/pom.xml +++ b/hadoop-hdfs-project/hadoop-hdfs-nfs/pom.xml @@ -149,8 +149,8 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd"> ${transient.protobuf2.scope} - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api compile diff --git a/hadoop-hdfs-project/hadoop-hdfs/pom.xml b/hadoop-hdfs-project/hadoop-hdfs/pom.xml index 07154ccdf7f872..1c2ff021e9aa47 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/pom.xml +++ b/hadoop-hdfs-project/hadoop-hdfs/pom.xml @@ -142,8 +142,8 @@ https://maven.apache.org/xsd/maven-4.0.0.xsd"> ${transient.protobuf2.scope} - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api compile diff --git a/hadoop-project/pom.xml b/hadoop-project/pom.xml index 277c4dc81771e8..d134d39745162b 100644 --- a/hadoop-project/pom.xml +++ b/hadoop-project/pom.xml @@ -37,6 +37,12 @@ true true 9.4.58.v20250814 + + 4.0.9 _ _ @@ -969,9 +975,9 @@ ${jetty.version} - jakarta.servlet - jakarta.servlet-api - 4.0.4 + org.eclipse.jetty.toolchain + jetty-servlet-api + ${jetty-servlet-api.version} @@ -2191,11 +2197,30 @@ org.glassfish.jersey.test-framework jersey-test-framework-core ${jersey2.version} + + + + jakarta.servlet + jakarta.servlet-api + + org.glassfish.jersey.test-framework.providers jersey-test-framework-provider-jdk-http ${jersey2.version} + + + + jakarta.servlet + jakarta.servlet-api + + org.glassfish.jersey.media diff --git a/hadoop-tools/hadoop-resourceestimator/pom.xml b/hadoop-tools/hadoop-resourceestimator/pom.xml index 7a7695db49cc96..ce05ed3c722f1c 100644 --- a/hadoop-tools/hadoop-resourceestimator/pom.xml +++ b/hadoop-tools/hadoop-resourceestimator/pom.xml @@ -71,8 +71,8 @@ test - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api org.glassfish.jersey.core diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/pom.xml index 4e5f602cf387ce..1aa02a539893bd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/pom.xml @@ -136,8 +136,8 @@ jakarta.ws.rs-api - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api commons-codec diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml index b9d9b685c7d66b..943f5e49cf8c8e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml @@ -65,8 +65,8 @@ commons-compress - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api commons-codec diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml index 1131bae58efdd0..69df71c598633b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/pom.xml @@ -38,8 +38,8 @@ - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/pom.xml index fe166cd1c1abbb..1c1c243579735e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/pom.xml @@ -119,8 +119,8 @@ leveldbjni-all - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api javax.cache diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml index a13710b991007a..e4aea97967047a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/pom.xml @@ -124,8 +124,8 @@ - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml index 385e1fb05b6094..17fafd3e5b71ec 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml @@ -70,8 +70,8 @@ jettison - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api commons-codec diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml index c9362a9e5e4198..65e406d132ad72 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/pom.xml @@ -33,8 +33,8 @@ - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/pom.xml index 180b15713b4268..2206ed41874d35 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/pom.xml @@ -88,8 +88,8 @@ - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml index 591e3852c92fee..e48c2d965761c3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/pom.xml @@ -33,8 +33,8 @@ - jakarta.servlet - jakarta.servlet-api + org.eclipse.jetty.toolchain + jetty-servlet-api compile From cfb6dbbb53393c74e49e2c698f672b8c2914a61e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20L=C3=B3pez?= Date: Thu, 3 Sep 2026 16:15:32 +0000 Subject: [PATCH 5/5] HADOOP-19970. Keep jetty-util in the shaded minicluster. hadoop-client-minicluster excludes org.eclipse.jetty:jetty-util from hadoop-minicluster, hadoop-yarn-server-nodemanager and hadoop-yarn-server-web-proxy, so the artifact reached the shaded jar only through jersey-test-framework-provider-jetty, whose jersey-container-jetty-http declares jetty-server, jetty-util and jetty-continuation. Moving the test container to the JDK's HTTP server took that path away, and every copy of jetty-util went with it. jetty-server still arrives through hadoop-minicluster, and the shade plugin rewrites the Jetty references in it, and in Hadoop's own classes, to the relocated namespace. Starting a NameNode from the shaded minicluster then failed: java.lang.NoClassDefFoundError: org/apache/hadoop/shaded/org/eclipse/jetty/util/Attributes at org.apache.hadoop.hdfs.server.namenode.NameNode.startHttpServer hadoop-client-runtime excludes jetty-util and jetty-server from its own jar so that the two shaded artifacts do not ship the same Jetty classes, which leaves the minicluster as the module that carries them. Declare jetty-util there rather than relying on a test framework to drag it in. Co-Authored-By: Claude --- .../hadoop-client-minicluster/pom.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hadoop-client-modules/hadoop-client-minicluster/pom.xml b/hadoop-client-modules/hadoop-client-minicluster/pom.xml index e2e9588a668048..4248f7a254083c 100644 --- a/hadoop-client-modules/hadoop-client-minicluster/pom.xml +++ b/hadoop-client-modules/hadoop-client-minicluster/pom.xml @@ -422,7 +422,16 @@ - + + + org.eclipse.jetty + jetty-util + true + org.glassfish.jersey.core jersey-common