Skip to content

HDDS-8280. Upgrade Jetty 9.4 to 12 (Jakarta EE10) - #11201

Open
yandrey321 wants to merge 18 commits into
apache:masterfrom
yandrey321:HDDS-8280
Open

HDDS-8280. Upgrade Jetty 9.4 to 12 (Jakarta EE10)#11201
yandrey321 wants to merge 18 commits into
apache:masterfrom
yandrey321:HDDS-8280

Conversation

@yandrey321

@yandrey321 yandrey321 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

Upgrade the embedded web stack from Jetty 9.4 to Jetty 12 (Jakarta EE10).

Mechanical migration: javax.servletjakarta.servlet, javax.ws.rsjakarta.ws.rs,
javax.annotationjakarta.*, org.eclipse.jetty.servlet.*org.eclipse.jetty.ee10.servlet.*.
Version updates: Jetty 12.0.38, Jersey 3.1.12, jakarta.ws.rs-api 3.1.0,
jakarta.servlet-api 6.0.0, Weld 5.1.7.Final, Guice 7.0.0, CDI-api 4.0.1.
Transitive Jetty 9 excluded from Hadoop dependencies.

Non-mechanical / behavioral changes:

  1. javax↔jakarta servlet bridge for Hadoop auth filters via JavaxFilterBridge.
  2. Forked JMXJsonServlet into Ozone as a jakarta servlet.
  3. HttpServer2 structural rewrites for APIs removed in Jetty 12.
  4. S3ContentTypeFilter preserves the bare application/xml content-type.
  5. CDI 4 / Weld 5 bean discovery: beans.xml set to bean-discovery-mode="all"
    (required so the S3 Gateway OzoneClientCache @Singleton is discovered).
  6. Recon JAXB api 2.3.34.0.x (jakarta.xml.bind), fixing a runtime
    jakarta.xml.bind.PropertyException.
  7. JAX-RS / DI container wiring adjustments.
  8. Stricter URI-compliance handling for the S3 proxy tests
    (UriCompliance.LEGACY / decodeAmbiguousURIs).

Dependency & packaging hygiene (share/ozone/lib):
The migration reshapes the dist's transitive graph, so bin/LICENSE.txt and jar-report.txt
were regenerated from a clean -Pdist build. javax / com.sun artifacts are replaced by their
jakarta equivalents (e.g. org.eclipse.angus:angus-activation, jakarta.el-api,
jakarta.interceptor-api, jakarta.enterprise.cdi-api, org.glassfish.jaxb:jaxb-core,
jetty-ee10-servlet / jetty-ee10-webapp).

To ensure each artifact ships exactly once in the dist:

  • aircompressor — promoting the Iceberg module surfaced a second copy on the flat
    share/ozone/lib classpath: iceberg-core:1.10.2 pulls io.airlift:aircompressor:2.0.3
    (referenced and used), while ranger-audit-core:2.9.0 pulls the incompatible 0.27
    (same io.airlift.compress.* class names, a major-version rewrite). ranger-audit-core
    references aircompressor in 0 of its classes, so io.airlift:aircompressor is excluded
    from ranger-plugins-common in multitenancy-ranger; the dist ships a single 2.0.3,
    matching master.
  • JAXB — excluded the legacy com.sun.xml.bind:jaxb-core / jaxb-impl (JAXB 3.0.0 via
    ugsync-util) from the Ranger dependency; org.glassfish.jaxb:jaxb-runtime (4.0.x) supplies
    the implementation, so jaxb-core/impl ship once.
  • Version convergence: okio pinned to 3.17.0 (+ okio-jvm), stax2-api pinned via
    dependencyManagement; removed duplicate kotlin-stdlib-common and protobuf-java.

Generated-by: Claude Code (claude-opus-4-8)

What is the link to the Apache JIRA

https://issues.apache.org/jira/browse/HDDS-8280

How was this patch tested?

CI: https://github.com/yandrey321/ozone/actions/runs/34409299129/job/102668127629

Unit, integration, robot tests.

yandrey321 and others added 15 commits September 2, 2026 20:21
# Conflicts:
#	hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectAttributesGet.java
# Conflicts:
#	hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpointStreaming.java
#	hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectPut.java
Resolve conflicts and migrate newly-merged S3 STS feature (javax -> jakarta)
for the Jetty 12 / Jakarta EE10 upgrade.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@yandrey321

Copy link
Copy Markdown
Contributor Author

@ss77892 could you please give another look to these changes?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant