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

Jose Luis López updated HADOOP-19912:
-------------------------------------
    Description: 
Move Hadoop's web servers off Jetty 9.4, which is end of life: its releases are 
now rare and sponsored, and its CVEs keep coming (HADOOP-19910, HADOOP-19915).

h3. Approach

Jetty 12 serves two servlet APIs side by side: the ee8 environment serves 
{{javax.servlet}}, while ee10 and ee11 serve {{jakarta.servlet}}. This issue 
moves Hadoop to Jetty 12 on ee8, so the servlet namespace, Jersey 2 and every 
public signature stay as they are.

The move to the jakarta namespace (Jetty ee10, Jersey 3, JAXB 4) is a separate 
decision, tracked in HADOOP-19395, which starts from here.

Jetty 12 needs Java 17, so this is for trunk. Release lines that stay on Jetty 
9.4 are covered by HADOOP-19915.

h3. Sub-tasks

||Issue||Scope||State||
|HADOOP-19970|Resolve one Jetty release and one servlet API on every module 
classpath. No version change.|Patch available (PR #8699)|
|HADOOP-19972|Jetty 9.4.58 → 12.1.12 on ee8: {{HttpServer2}}, KMS, HttpFS, the 
YARN web apps, WebSocket, SLS, the services API, shaded clients, 
LICENSE-binary. Keeps trunk's behaviour wherever Jetty 12 allows, and lists the 
rest for the release note.|Patch available (PR #8704)|
|HADOOP-19951|Drop jetty-util-ajax in favour of Jackson.|Fixed (3.6.0)|
|HADOOP-xxxxx|Retire or upgrade the YARN application catalog. It stays on Jetty 
9.4.58 because Solr 8 needs it, and it is the last Jetty 9.4 in the build.|Open|
|HADOOP-xxxxx|Remove the JAX-RS 1.1 API ({{jsr311-api}}) from 
{{hadoop-yarn-server-timelineservice-hbase-tests}}, where it duplicates JAX-RS 
2.1 on the classpath. Same kind of cleanup as HADOOP-19970.|Open|

Related: HADOOP-19971 removes servlet and Jetty types from classes that do not 
need them, which reduces Hadoop's coupling to Jetty. It is a sub-task of 
HADOOP-19395.

h3. Behaviour changes

HADOOP-19972 is marked Incompatible. Its release note covers what Jetty 12 
changes for callers:
* no custom HTTP reason phrase; refusal messages travel in the response body 
instead, and Hadoop's clients read them there;
* stricter URI parsing, adjustable with 
{{hadoop.http.uri.compliance.violations}};
* TLS 1.2 renegotiation off by default, adjustable with 
{{hadoop.http.ssl.renegotiation.allowed}};
* the five async HTTP metrics read 0, because Jetty 12 cannot count them;
* Jetty's own output: error-page markup, {{charset=utf-8}} and {{Vary}} on 
static files, a {{Date}} header on error responses, and the default acceptor 
count.

h3. Done when

* No Jetty 9.4 artifact is left on any module classpath of the trunk build.
* Every daemon serves on Jetty 12, and the full test suite passes.
* The release note of HADOOP-19972 lists every incompatible change.

h3. Out of scope

* The jakarta namespace, Jetty ee10/ee11, Jersey 3 and JAXB 4: HADOOP-19395.
* Jetty 9.4 security updates on release lines that cannot move to Java 17: 
HADOOP-19915.

  was:
See HADOOP-19910 - there is a CVE in Jetty but releases of 9.4 are rare and are 
'sponsored' - Jetty 9.4 is not actively maintained. There are some commercial 
forks.

Jetty 12 needs Java 17+.

Will also force Jersey to upgraded to 3 or 4.

And to replace many javax classes/jars with their jakarta equivalents.


> Upgrade to Jetty 12 on the ee8 environment keeping javax.servlet
> ----------------------------------------------------------------
>
>                 Key: HADOOP-19912
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19912
>             Project: Hadoop Common
>          Issue Type: Task
>            Reporter: PJ Fanning
>            Assignee: Jose Luis López
>            Priority: Major
>              Labels: pull-request-available
>
> Move Hadoop's web servers off Jetty 9.4, which is end of life: its releases 
> are now rare and sponsored, and its CVEs keep coming (HADOOP-19910, 
> HADOOP-19915).
> h3. Approach
> Jetty 12 serves two servlet APIs side by side: the ee8 environment serves 
> {{javax.servlet}}, while ee10 and ee11 serve {{jakarta.servlet}}. This issue 
> moves Hadoop to Jetty 12 on ee8, so the servlet namespace, Jersey 2 and every 
> public signature stay as they are.
> The move to the jakarta namespace (Jetty ee10, Jersey 3, JAXB 4) is a 
> separate decision, tracked in HADOOP-19395, which starts from here.
> Jetty 12 needs Java 17, so this is for trunk. Release lines that stay on 
> Jetty 9.4 are covered by HADOOP-19915.
> h3. Sub-tasks
> ||Issue||Scope||State||
> |HADOOP-19970|Resolve one Jetty release and one servlet API on every module 
> classpath. No version change.|Patch available (PR #8699)|
> |HADOOP-19972|Jetty 9.4.58 → 12.1.12 on ee8: {{HttpServer2}}, KMS, HttpFS, 
> the YARN web apps, WebSocket, SLS, the services API, shaded clients, 
> LICENSE-binary. Keeps trunk's behaviour wherever Jetty 12 allows, and lists 
> the rest for the release note.|Patch available (PR #8704)|
> |HADOOP-19951|Drop jetty-util-ajax in favour of Jackson.|Fixed (3.6.0)|
> |HADOOP-xxxxx|Retire or upgrade the YARN application catalog. It stays on 
> Jetty 9.4.58 because Solr 8 needs it, and it is the last Jetty 9.4 in the 
> build.|Open|
> |HADOOP-xxxxx|Remove the JAX-RS 1.1 API ({{jsr311-api}}) from 
> {{hadoop-yarn-server-timelineservice-hbase-tests}}, where it duplicates 
> JAX-RS 2.1 on the classpath. Same kind of cleanup as HADOOP-19970.|Open|
> Related: HADOOP-19971 removes servlet and Jetty types from classes that do 
> not need them, which reduces Hadoop's coupling to Jetty. It is a sub-task of 
> HADOOP-19395.
> h3. Behaviour changes
> HADOOP-19972 is marked Incompatible. Its release note covers what Jetty 12 
> changes for callers:
> * no custom HTTP reason phrase; refusal messages travel in the response body 
> instead, and Hadoop's clients read them there;
> * stricter URI parsing, adjustable with 
> {{hadoop.http.uri.compliance.violations}};
> * TLS 1.2 renegotiation off by default, adjustable with 
> {{hadoop.http.ssl.renegotiation.allowed}};
> * the five async HTTP metrics read 0, because Jetty 12 cannot count them;
> * Jetty's own output: error-page markup, {{charset=utf-8}} and {{Vary}} on 
> static files, a {{Date}} header on error responses, and the default acceptor 
> count.
> h3. Done when
> * No Jetty 9.4 artifact is left on any module classpath of the trunk build.
> * Every daemon serves on Jetty 12, and the full test suite passes.
> * The release note of HADOOP-19972 lists every incompatible change.
> h3. Out of scope
> * The jakarta namespace, Jetty ee10/ee11, Jersey 3 and JAXB 4: HADOOP-19395.
> * Jetty 9.4 security updates on release lines that cannot move to Java 17: 
> HADOOP-19915.



--
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