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

Jose Luis López updated HADOOP-19970:
-------------------------------------
        Parent:     (was: HADOOP-19912)
    Issue Type: Task  (was: Sub-task)

> 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: 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, jakarta.servlet:jakarta.servlet-api
>    4.0.4, the one hadoop-project already manages. 
> javax.servlet:javax.servlet-api
>    publishes the same javax.servlet packages, and 73 modules carry both, so 
> which
>    one a module compiles and runs against is decided by the order of the jars
>    rather than by anything in a pom.
>  * 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 and 
> no
>    servlet API to any classpath.
>  * 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 servlet API coordinate. It stays jakarta.servlet:jakarta.servlet-api.
>    Which coordinate the Jetty 12 ee8 artifacts should resolve to is decided in
>    HADOOP-19972.
>  * 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]

Reply via email to