Conversation
|
Not an expert here but just curious don't we need few other changes like adding new dependencies in jdk 11, GC options and few newer APIs changes. (reference : https://gist.github.com/dineshbhagat/97eff450e9edbd7d006deb35f28e3fd4) |
|
JDK11 - optimization work can start once we have the base line. |
qqu0127
left a comment
There was a problem hiding this comment.
There is a huge file helix-core/error that was added by accident?
|
|
||
| public void setupSslServer(int port, SslContextFactory sslContextFactory) { | ||
|
|
||
| public void setupSslServer(int port, SslContextFactory.Server sslContextFactory) { |
There was a problem hiding this comment.
Neat : If Now parent factory class is deprecated and directly server and client class are encouraged to access then should we rename this variable as well to "sslContextServer"? Also may be update documentation/comments here?
rahulrane50
left a comment
There was a problem hiding this comment.
Thanks for starting this @desaikomal overall LGTM!.
junkaixue
left a comment
There was a problem hiding this comment.
LGTM! Thanks for working on this!
mgao0
left a comment
There was a problem hiding this comment.
LGTM, could you please add some explanation in the PR description about the jetty and jersey problem, just for future reference.
|
Thank you all (@junkaixue , @mgao0 , @rahulrane50 , @qqu0127 ) for the review. |
Upgrading Helix to use JDK 11. Co-authored-by: Komal Desai <kdesai@kdesai-mn1.linkedin.biz>
Issues
Description
Helix has been using JDK 1.8. We want to move to latest JDK but prior to that, we can use JDK11 as intermediate step. This will help us remain current and use all the language optimizations for performance improvements.
We were using Jetty - 9.4.48.v20220622 and Jersey version 2.15.
Both these versions were not compatible with JDK11.
If you go with the latest version of Jetty and latest of Jersey, the REST Server never starts.
So we need to do 2 levels of compatibility:
It took me while to figure out Jetty/Jersey compatibility. In addition some APIs had changed.
Tests
[ERROR] Failures:
[ERROR] TestNoThrottleDisabledPartitions.testDisablingTopStateReplicaByDisablingInstance:98 expected: but was:
[ERROR] TestNoThrottleDisabledPartitions.testNoThrottleOnDisabledInstance:231->setupEnvironment:317->setupCluster:436 » ZkClient
[ERROR] TestP2PNoDuplicatedMessage.testP2PStateTransitionEnabled:180 expected: but was:
[ERROR] TestMultiZkConnectionConfig>MultiZkTestBase.afterClass:137 expected: but was:
[ERROR] TestMultiZkConnectionConfig.testZKHelixManager:295->Object.wait:328->Object.wait:-2 » ThreadTimeout
[ERROR] TestWagedRebalanceFaultZone.testAddZone:270->validate:318->validateZoneAndTagIsolation:342 expected:<3> but was:<2>
[ERROR] TestTaskStateModelFactory.testZkClientCreationMultiZk:80 » Bind Address alread...
[INFO]
[ERROR] Tests run: 1325, Failures: 7, Errors: 0, Skipped: 6
I ran all the 7 failures as independent test-runs. Some tests passed on running while some failed. I took a fresh code branch with no changes and ran the same failed tests against it and they failed there as well. So between re-run and clean branch, there are NO NEW failures.
PR-CI run is completely GREEN (including all other components)
https://github.com/apache/helix/actions/runs/4289361614
Changes that Break Backward Compatibility (Optional)
(Consider including all behavior changes for public methods or API. Also include these changes in merge description so that other developers are aware of these changes. This allows them to make relevant code changes in feature branches accounting for the new method/API behavior.)
Documentation (Optional)
(Link the GitHub wiki you added)
Commits
Code Quality
(helix-style-intellij.xml if IntelliJ IDE is used)