Conversation
|
This is kind of a breaking change, but it's a thing we must do eventually. One major concern: how can we ensure that we migrate everything from Java EE to Jakarta EE in bulk? |
|
@pan3793 this is targeted at 3.6.0. I have no intention of seeing this backported to 3.5. This PR includes migration of the most important javax to jakarta changes. Latest versions of Jetty and Jersey require Jakarta dependencies as opposed to Javax. It's not really feasible to split these into separate upgrades. The only change in here in here that would possibly be split out is dealing with the abandonment of org.eclipse.jetty:jetty-util-ajax. Some Hadoop tests use it for JSON parsing and writing and this PR uses Jackson instead. |
@pjfanning I also suppose so.
I actually mean the opposite thing - as you know, Java/Jakarta EE is composed of a lot of components, we should upgrade them all (use Spring as an example, Spring Framework 6.0 migrated to Jakarta EE 9 entirely), or none, otherwise, it might put downstream projects that pull Hadoop as a dependency in an awkward situation |
|
This Pr is large already but there is no reason not to upgrade to Jakarta for other libs separately. |
|
Could we use LLM to search the codebase and list all components that might need to be migrated? As you know, we went through a painful Jersey 1.x => 2.x upgrade process, and even now, we're still receiving some issues caused by the Jersey upgrade. This means that the current branch-3.5 is unstable (branch-3.5 has only released one version, 3.5.0), and we're still far from 3.6.0. Merging this change now might not be a good time (meaning the 3.5 backport could have a lot of conflicts). This change will be a breaking change for all downstream projects of Hadoop (perhaps Spark is an exception because it uses the Hadoop Shaded Client). We may need to initiate a cross-project discussion on the mailing list and try to reach a consensus before moving forward. |
|
Jersey 9.4 is abandoned with open CVEs. But discussing this with downstream projects makes sense. |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as duplicate.
This comment was marked as duplicate.
deal with compile/build issues setStatusWithReason removed in jetty AllowedResourceAliasChecker pom fixes Update LICENSE-binary fixes more fixes remove jetty logging servlet 6 compile further build/compile issues setBaseResource setBaseResourceAsString websocket code issues more websocket compile issues Update ContainerShellWebSocket.java more websocket fixes Update pom.xml Update ContainerShellWebSocket.java Update ContainerShellWebSocket.java Update NotificationTestCase.java build issues Update pom.xml Update SLSWebApp.java pom exclusions more shade jakarta classes in hadoop-client-runtime import order Update pom.xml relocations Update pom.xml Update TestDecayRpcScheduler.java Update pom.xml update license fix merge issue
I can help with the LLM part. Using Claude, I asked for a script to scan the codebase and an analysis of the migration viability. Please have a look at the attached analysis document. Here is the script with the README.md:
|
|
@joseluisll I was under the mistaken belief that Jetty 12 only supported jakarta but upgrading to the ee8 version means we can stick with javax and later switch to jakarta. |
|
💔 -1 overall
This message was automatically generated. |
Added as a subtask: HADOOP-19970 Resolve a single Jetty release and servlet API on every module classpath:
The CI Gate and script to check the migration progress and Jetty compliance is deferred. |
|
💔 -1 overall
This message was automatically generated. |
|
💔 -1 overall
This message was automatically generated. |
Jetty 9.4's ServerConnector.close() released the accept channel, so a listener could re-bind. Jetty 12's does not, and a connector that has been closed cannot be started again. Hand it a fresh channel instead. Found by pjfanning on PR apache#8653. Co-Authored-By: Claude <noreply@anthropic.com>
Jetty 9.4's ServerConnector.close() released the accept channel, so a listener could re-bind. Jetty 12's does not, and a connector that has been closed cannot be started again. Hand it a fresh channel instead. Found by pjfanning on PR apache#8653. Co-Authored-By: Claude <noreply@anthropic.com>
Jetty 9.4's ServerConnector.close() released the accept channel, so a listener could re-bind. Jetty 12's does not, and a connector that has been closed cannot be started again. Hand it a fresh channel instead. Found by pjfanning on PR apache#8653. Co-Authored-By: Claude <noreply@anthropic.com>
Jetty 9.4's ServerConnector.close() released the accept channel, so a listener could re-bind. Jetty 12's does not, and a connector that has been closed cannot be started again. Hand it a fresh channel instead. Found by pjfanning on PR apache#8653. Co-Authored-By: Claude <noreply@anthropic.com>
Jetty 9.4's ServerConnector.close() released the accept channel, so a listener could re-bind. Jetty 12's does not, and a connector that has been closed cannot be started again. Hand it a fresh channel instead. Found by pjfanning on PR apache#8653. Co-Authored-By: Claude <noreply@anthropic.com>
Jetty 9.4's ServerConnector.close() released the accept channel, so a listener could re-bind. Jetty 12's does not, and a connector that has been closed cannot be started again. Hand it a fresh channel instead. Found by pjfanning on PR apache#8653. Co-Authored-By: Claude <noreply@anthropic.com>
Jetty 9.4's ServerConnector.close() released the accept channel, so a listener could re-bind. Jetty 12's does not, and a connector that has been closed cannot be started again. Hand it a fresh channel instead. Found by pjfanning on PR apache#8653. Co-Authored-By: Claude <noreply@anthropic.com>
Description of PR
Contains content generated by Claude and Xiaomi Mimo.
Also updates to Jersey 3 and switches from Javax to Jakarta as these changes are needed for the Jetty 12 migration.
Still some build issues with the 'invariant' checks at the end of the maven build and if anyone has some pointers that would be great.
How was this patch tested?
CI Build
For code changes:
LICENSE,LICENSE-binary,NOTICE-binaryfiles?AI Tooling
If an AI tool was used:
where is the name of the AI tool used.
https://www.apache.org/legal/generative-tooling.html