[
https://issues.apache.org/jira/browse/HADOOP-19970?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jose Luis López updated HADOOP-19970:
-------------------------------------
Status: In Progress (was: Patch Available)
Working to streamline the jetty12-ee preparation tasks
> Resolve a single Jetty release and servlet API on every module classpath
> ------------------------------------------------------------------------
>
> Key: HADOOP-19970
> URL: https://issues.apache.org/jira/browse/HADOOP-19970
> Project: Hadoop Common
> Issue Type: Sub-task
> Components: build, common, test
> Reporter: Jose Luis López
> Assignee: Jose Luis López
> Priority: Major
> Labels: pull-request-available
>
> Several modules resolve 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.
> Intended result:
> * Every module resolves one Jetty release. Three are in play today: 9.4.44
> and
> 9.4.55 reach some classpaths beside the managed 9.4.58. They arrive with
> solr-core in the app catalog webapp's tests, and with Jersey's Jetty test
> container, which Jersey 2.46 builds against 9.4.55.
> * Every module resolves one servlet API,
> org.eclipse.jetty.toolchain:jetty-servlet-api
> 4.0.9, the artifact Jetty 12's ee8 environment depends on. hadoop-project
> manages it in place of jakarta.servlet:jakarta.servlet-api 4.0.4. That
> artifact and javax.servlet:javax.servlet-api publish the same javax.servlet
> packages, and 73 modules carry more than one of them, so which one a module
> compiles and runs against is decided by the order of the jars rather than
> by
> anything in a pom. Settling on the ee8 artifact now means HADOOP-19972 does
> not change the coordinate a second time.
> * Every module that uses Jetty in its main sources declares it. Four do not,
> and compile only because some other dependency happens to supply it. Three
> of them now declare what they use. The fourth, hadoop-mapreduce-client-app,
> used Jetty only for logging in JobEndNotifier, which MAPREDUCE-7544 moved
> to
> SLF4J.
> * The Jersey test framework no longer runs on Jetty. Its Jetty container is
> built against Jetty 9 and has no Jetty 12 counterpart for javax.servlet, so
> tests move to Jersey's JDK HTTP server container, which adds no Jetty to
> any
> classpath. Its jakarta.servlet-api dependency is excluded.
> * The shaded client keeps shipping jetty-util. Once Jersey's test container
> is
> off Jetty, nothing carries it into hadoop-client-minicluster, which
> excludes
> it on the grounds that hadoop-client-runtime ships it. The runtime jar
> ships
> it again, as it did before YARN-11793.
> One module keeps two servlet APIs:
> hadoop-yarn-server-timelineservice-hbase-tests,
> where the second arrives with HBase's own test stack.
> Out of scope:
> * The JSP API. hadoop-common keeps declaring jakarta.servlet.jsp-api, since
> downstream projects inherit it.
> * The Jetty version. None of this depends on a Jetty version change.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]