[ 
https://issues.apache.org/jira/browse/HDDS-16683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Attila Doroszlai updated HDDS-16683:
------------------------------------
    Fix Version/s: 2.3.0
       Resolution: Done
           Status: Resolved  (was: Patch Available)

> Upgrade Jetty from 12.0.38 to 12.1.14
> -------------------------------------
>
>                 Key: HDDS-16683
>                 URL: https://issues.apache.org/jira/browse/HDDS-16683
>             Project: Apache Ozone
>          Issue Type: Improvement
>            Reporter: Andrey Yarovoy
>            Assignee: Andrey Yarovoy
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.3.0
>
>
> h2. Problem
> HDDS-8280 moved Ozone from Jetty 9.4 to Jetty \{{12.0.38}} on the EE8 
> environment (\{{javax.servlet}} 4.0).
> Jetty has since opened the \{{12.1.x}} line, currently at \{{12.1.13}}, which 
> is where new work and most
> fixes now land.
> This is a get-ahead-of-it upgrade, not a forced one: the \{{12.0.x}} line is 
> still actively released
> (\{{12.0.39}} shipped after our pin), so nothing is end-of-life today. The 
> reason to do it now is that the
> Ozone surface is small and verifiably unaffected, which will not stay true 
> indefinitely — and \{{12.1.x}}
> is also where the Jakarta EE 11 environment lives, which is the eventual exit 
> path off EE8.
> h2. Current shape
> | Item | Value | Where |
> |---|---|---|
> | \{{jetty.version}} | \{{12.0.38}} | \{{pom.xml}} L113 |
> | BOMs | \{{org.eclipse.jetty:jetty-bom}} + 
> \{{org.eclipse.jetty.ee8:jetty-ee8-bom}} | \{{pom.xml}} L263-271 |
> | \{{servlet-api.version}} | \{{4.0.9}} 
> (\{{org.eclipse.jetty.toolchain:jetty-servlet-api}}) | \{{pom.xml}} L201, 
> L1585 |
> | EE8 artifacts in use | \{{jetty-ee8-}}\{{{}servlet, webapp, nested, proxy, 
> cdi{}}} | framework, server-scm, ozone-manager, recon, s3gateway, 
> httpfsgateway, integration-test-s3 |
> | Jetty import footprint | 30 distinct types — \{{server.*}}, \{{util.*}}, 
> \{{http.*}}, \{{ee8.*}} only | 13 files |
> h2. Proposed change
> Bump \{{jetty.version}} to \{{12.1.13}}. Keep EE8, keep 
> \{{servlet-api.version}} at \{{4.0.9}}, keep every
> artifact coordinate. In principle a one-property change plus whatever the 
> verification below turns up.
> h2. Behavior-default changes to assert, not assume
> These are the real risk in this upgrade. Each is a silent default flip in a 
> knob Ozone does not currently
> set, so the existing tests would not notice:
> * \{{HttpConfiguration.maxResponseHeaderSize}} default \{{-1}} → \{{16384}}.
> * \{{HttpConfiguration.relativeRedirectAllowed}} default flipped to \{{true}} 
> (jetty#11947).
> * \{{SslContextFactory.renegotiationAllowed}} default → \{{false}} 
> (jetty#12378).
> * Session \{{flushOnResponseCommit}} default → \{{true}} (jetty#12339).
> * \{{UriCompliance}} is now also applied to query-string parsing 
> (jetty#12750), and a new
> {\{UriCompliance.Violation.FRAGMENT}} exists (jetty#11579). This touches 
> Ozone directly:
> {\{OZONE_AMBIGUOUS_URI_COMPLIANCE}} in \{{HttpServer2}} and the 
> \{{allowAmbiguousUri}} opt-ins in S3
> Gateway and httpfs.
> * EE8/EE9 \{{ContextHandler.setCompactPath}} behavior was restored for 
> back-compat (jetty#12821).
> h2. Scope
> Included: the version bump, any exclusion or \{{dependency:analyze}} fallout 
> it causes, and tests covering
> the default flips above — extending \{{TestHttpServer2}}, 
> \{{TestHttpServer2SSL}} and \{{TestBaseHttpServer}}
> rather than adding new suites.
> Out of scope: migrating off EE8 to EE10 or EE11, and adopting any new 12.1 
> feature
> (\{{CompressionHandler}}, the new deployer, \{{MultiAuthenticator}}). Each is 
> its own Jira.
> h2. How to verify
> # \{{mvn -q validate}} at root (sortpom \{{verifyFailOn=Strict}}), then
> {\{mvn clean install -DskipTests -DskipShade -DskipRecon -DskipDocs}}.
> # \{{mvn dependency:tree 
> -Dincludes=org.eclipse.jetty:*,org.eclipse.jetty.ee8:*,org.eclipse.jetty.toolchain:*}}
> — every coordinate reads \{{12.1.13}} (\{{4.0.9}} for 
> \{{jetty-servlet-api}}); no \{{12.0.*}}, no \{{9.4.*}},
> no \{{ee9}}/\{{ee10}}/\{{ee11}}.
> # \{{mvn dependency:tree -Dincludes=javax.servlet:*,jakarta.servlet:*}} — 
> empty.
> # \{{build.sh}} *without* \{{-Dmdep.analyze.skip}} — \{{analyze-only}} runs 
> at \{{verify}} and "Used
> undeclared dependency" is CI-fatal.
> # Framework and s3gateway unit suites; then \{{checkstyle.sh}}.
> # \{{mvn -Pdist -DskipTests package}}, then \{{dependency.sh}} and 
> \{{license.sh}}, applying the reported
> {\{jar-report.txt}} diff mechanically.
> # Compose smoketests — \{{ozone}}, \{{ozonesecure}}, the s3/secret suites, 
> and an httpfs run —
> spot-checking \{{/conf}}, \{{/jmx}}, \{{/prom}}, \{{/logLevel}}, 
> \{{/stacks}}, \{{/logs}}, \{{/static}}, the
> Recon UI, and S3 Gateway XML content types. The dist-only runtime regressions 
> in HDDS-8280 (Recon JAXB,
> s3g Weld bean discovery) were invisible to unit tests, so the dist run is not 
> optional.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to