Skip to content

feat: complete Java 17 candidate SDK cutover - #783

Merged
imbajin merged 138 commits into
apache:masterfrom
hugegraph:java17-candidate-cutover
Oct 6, 2026
Merged

imbajin merged 138 commits into
apache:masterfrom
hugegraph:java17-candidate-cutover

Conversation

@imbajin

@imbajin imbajin commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

Purpose of the PR

After the module prerequisites, Client, ordinary Loader, Tools and Hubble now require Java 17 and use a locked, same-source candidate SDK in an isolated Maven repository. Released Server 1.7 retains its supported JVM and independent dependency fixture.

TODO (apache/hugegraph#3263): the locked organization Server source is temporary. After the Java 17 Server migration merges, replace the fork/ref/SHA with verified ASF inputs and revalidate the SDK and runtime matrix. Distinct staged SDK coordinates are preferred when available; the temporary fork must not remain the post-merge source.

Core Java 17 SDK cutover

Original preparation and ongoing review: hugegraph#46. This PR uses the exact same organization branch, so subsequent branch fixes update both PRs.

All module preparation predecessors are merged into ASF master, including the Hubble migration in #781.

This branch is synchronized with the actual merged ASF master. Review the focused core migration diff and require checks and reviews on the updated head. The prerequisite-union branch is only an integration aid.

Main Changes

  • Reuse upstream Required CI and module workflows, with shared composite Java/Server setup and separate candidate/released service JVMs.
  • Resolve Maven dependencies through Central then ASF Stage using explicit settings; require Maven 3.9 or newer and preserve isolated repository arguments.
  • Install and validate candidate Common, Core, PD and Store artifacts from the same locked server source.
  • Recommend the existing bootstrap and enforce SDK provenance plus actual packaged payload validation for distributions.
  • Preserve original provenance manifests and align distributions, migration documentation and legal inventory.
  • Keep distinct public SDK coordinates and fresh compatibility validation as release prerequisites; this PR does not publish artifacts.

Verifying these changes

Actual core distributions, SDK payload/provenance checks and native Java 17 Client/Loader/H2 tests passed. Final current-artifact live compatibility and browser acceptance remain pending; earlier live results are not relabeled as validation of every latest change. HBase is excluded from the supported backend and acceptance scope.

Documentation Status

Migration and runtime limitations are documented in the module guides. Review and fixes continue in the organization repository; independent upstream review suggestions will also be read and adopted. No merge, deployment or release is performed by creating this PR.

Latest CI integration validation: workflow lint, CI policy, shared fixture and initialization contracts, SDK verifier, installer and Hubble helper regressions pass locally. Updated-head remote integration checks remain pending. The historical Server 1.7 fixture still uses the inherited build-once source package; Docker replacement and removing source SDK bootstrap after staged SDK availability remain follow-up work.

CI fixes include the Java 17 Docker build foundations required by the core cutover (SDK bootstrap, Python verification and build-context inclusion), plus exact canonical-base validation for GitHub native PR stacks. Image startup gates and ordinary PR freshness checks remain enforced. The image-specific CI/cache/provenance extensions remain in the separate image PR. Local policy and image-context regressions pass; full new-head image builds and runtime tests remain pending CI.

imbajin added 30 commits October 3, 2026 23:53
- manage compiler, surefire and coverage plugin versions
- keep Java 8 output and use compatible Mockito 4
- resolve optional server repositories, refs and pins
- verify checkout and package servers without install
- share authenticated startup and filter AppleDouble files
- connect repository and fetch refs to all server installers
- reuse the shared installer for Tools and Spark validation
- preserve Loader source caching with verified checkouts
- isolate fixture builds and retain separate HTTPS RPC ports
- preserve Mockito 2 interaction assertions with the equivalent API
- align test-only Byte Buddy dependencies with Mockito 4
- retain the Spring Boot 2 and Java 11 shared baseline
- run shared server selection and installer tests in one CI job
- document Maven 3.6.3 as the minimum source build version
- report missing or ambiguous server archives before exiting
- trigger push checks for client installer changes
- trigger pull request checks for the same source path
- cover the installer exercised by the existing contracts
- encode legacy graph configuration as properties
- keep task and target tests aligned with server contracts
- inherit shared compiler and coverage plugin versions
- preserve Java 8 APIs in compatibility tests
- align Spark 3.5.8 and Scala 2.12.18 with Java 8 bytecode
- replace Scala build plugin and match SLF4J 2 binding
- supply embedded Spark module opens and bounded tests
- isolate configurable server targets and verify Unicode
- run connector CI on Java 11 and 17
- update the shared inventory from the published full reactor runtime
- retain complete bundled license texts and required dependency notices
- cover Jackson suffixed legal entries and the protobuf release license
- keep the Spark 3.5 SLF4J provider in provided scope
- retain the exclusion of the inherited SLF4J 1 binding
- document exact Guava acquisition and driver/executor paths
- state the application classpath override and runtime boundary
- Inherit coverage tooling and keep scoped ORC access on Java 17.
- Update test-only container support and include existing unit coverage.
- Close both distinct clients and cover shared, separate and failing closes.
- Preserve the current Java baseline; shared-base runtime validation is pending.
- remove the provided logging bridge from the runtime inventory
- retain the exact published baseline Log4j API notice
- verify the reactor copy and provider-free assembly legal coverage
- Apply the ORC module opening only on JDK 17 and later.
- Keep default file-test selection when the JDK profile is active.
- Preserve the primary close exception and suppress secondary failures.
- Validate JVM option boundaries and unit/file suites on JDK 11 and 17.
- read plain backup streams without ZIP decoding
- close invalid compressed streams before reporting errors
- cover ZIP and plain backup restore round trips
- allow a dedicated test server URL
- mark the validated submit example as client deploy mode
- explain the remote driver Guava path in cluster deploy mode
- distinguish driver provisioning from executor JAR copies
- Restore profile test selection without global file-test defaults.
- Keep scoped ORC access and late coverage on JDK 11/17 test JVMs.
- Mark client cleanup closed even when either client throws.
- Cover primary, secondary and dual failures followed by retry.
- pass the configured URL to auth backup commands
- pass the same URL to auth restore commands
- keep command and client requests on one test fixture
Upgrade the backend to Spring Boot 3 and Jakarta APIs.
Use a fresh H2 database with complete schema initialization.
Align JAXB and Avatica runtime dependencies.
Preserve runtime data while packaging archives and images.
Carry the verified graph context and Java 17 documentation.
Run Hubble CI on Java 17 with Server 1.7 on Java 11.
Use the shared pinned source checkout and compiler tooling.
Keep server packaging separate from SDK dependency installation.
Verify archive preservation before the distribution gate.
- update license selections for the Hubble Java 17 runtime
- preserve required notices and complete bundled license texts
- regenerate the shared published dependency inventory
Record the selected Server JDK before configuring Hubble Java 17.
Use its explicit home for released Server build and startup.
Keep Hubble package and acceptance on the module JVM.
- retain original module dependencies in the shared inventory
- match the complete reactor dependency-copy result
- verify existing license rows and published artifact hashes
- restore the complete notice for the retained published Jetty dependency
- identify the exact artifact and original JAR entry in the main NOTICE
- preserve every existing distribution notice unchanged
- distinguish the original gRPC runtime identity from Hubble additions
- retain its existing Apache license selection and complete terms
- align inventory classification with the full reactor classpaths
Bind Hikari settings before validating the effective connection.
Check existing H2 metadata read-only before any schema initialization.
Record the schema version only after fresh initialization succeeds.
Verify old database bytes and rows remain unchanged on rejected startup.
- retain three complete bundled Jackson Core license resources
- link the runtime inventory to the supplemental license texts
- verify prefixed and suffixed legal entries against artifact hashes
Accept embedded file URLs with the optional file prefix omitted.
Retain the native cipher when probing encrypted metadata read-only.
Reject INIT and escaped setting names before opening a connection.
Verify shorthand and AES restart plus unchanged encrypted legacy files.
Build the dependency license inventory on Java 17.
Run CodeQL Java reactor compilation on Java 17.
Preserve module target versions and fixture JVM settings.
- include the current tools and loader branches
- preserve the independent shared and client stack
- keep module runtime and source scopes unchanged
- include the current spark connector branch
- retain the verified combined license inventory
- provide the true multi-module cutover baseline

# Conflicts:
#	hugegraph-dist/release-docs/LICENSE
#	hugegraph-dist/release-docs/NOTICE
#	hugegraph-dist/scripts/dependency/known-dependencies.txt
- prepare a Java 11 environment for the published server fixture
- isolate server JAVA_HOME and PATH from the test JVM matrix
- keep Java 11 and 17 CI results independent with fail-fast disabled
MrJs133
MrJs133 previously approved these changes Oct 5, 2026
- preserve the exact current ASF master tree
- link merged loader, tools and connector source heads
- avoid repeated squash-history conflicts in upgrade PRs
- inherit merged loader and tools preparation
- reconcile the connector squash history
- preserve Hubble migration and legal changes
- inherit finalized prerequisite branch content
- preserve component-specific Java 17 changes
- reconcile upstream squash history without rewriting heads
- inherit finalized prerequisite branch content
- preserve component-specific Java 17 changes
- reconcile upstream squash history without rewriting heads
imbajin and others added 4 commits October 6, 2026 03:33
- move metadata configuration and recovery into a dedicated guide
- remove the validation screenshot and CI progress narrative
- keep the README focused on runtime and upgrade requirements
- inherit the upstream-ready metadata guide
- remove the historical validation screenshot
- preserve module-specific code and configuration

# Conflicts:
#	hugegraph-hubble/README.md
- inherit the upstream-ready metadata guide
- remove the historical validation screenshot
- preserve module-specific code and configuration
Reject distribution audits when the JDK jar tool is missing.
Stop the audit when a bundled JAR cannot be enumerated.
Read complete JAR listings before detecting native entries.
Cover failure and success paths with CI regression tests.
imbajin and others added 11 commits October 6, 2026 04:55
- retry only typed connection failures among PD candidates
- preserve authentication and TLS failures during health checks
- close unsuccessful clients and reject exhausted candidates
- cover unavailable servers and handshake error boundaries
- preserve the exact merged ASF master tree
- link the finalized Hubble preparation source
- avoid repeated squash conflicts in dependent PRs
- inherit the actual ASF Hubble squash commit
- preserve finalized prerequisite content
- keep remaining component review diffs focused
- inherit the actual ASF Hubble squash commit
- preserve published SDK and Hubble review fixes
- keep candidate runtime and source contracts intact
- identify pre-merge organization repository and commit pins
- require coordinated migration to ASF after the Server merge
- document the preferred transition to published SDK identities
- retain reusable module workflows and shared fixtures
- reconcile candidate SDK validation with the Java 17 baseline
- preserve reviewed module behavior and source contracts

# Conflicts:
#	.github/actions/setup-hugegraph-server/action.yml
#	.github/workflows/client-ci.yml
#	.github/workflows/codeql-analysis.yml
#	.github/workflows/hubble-ci.yml
#	.github/workflows/license-checker.yml
#	.github/workflows/loader-ci.yml
#	.github/workflows/server-fixture-ci.yml
#	.github/workflows/spark-connector-ci.yml
#	.github/workflows/tools-ci.yml
#	hugegraph-hubble/hubble-dist/assembly/travis/download-hugegraph.sh
#	hugegraph-hubble/hubble-dist/assembly/travis/hugegraph-server1/install-hugegraph.sh
#	hugegraph-hubble/hubble-dist/assembly/travis/hugegraph-server2/install-hugegraph.sh
- align the prerequisite review base with current ASF master
- retain candidate migration behavior unchanged
- keep dependent organization review diffs focused
- align the prerequisite review base with current ASF master
- retain candidate migration behavior unchanged
- keep dependent organization review diffs focused
- describe the recorded release and candidate identities
- distinguish Go service inputs from planning metadata
- retain recovery guidance for failed baseline resolution
- use Java 17 for Loader image builds and runtime
- install Python and Git required by SDK packaging
- bootstrap and verify the locked SDK inside image builds
- include the SDK verifier in Docker build contexts
Validate GitHub stack topology and canonical base trees.
Record stack identity and recheck current branch inputs.
Reject malformed metadata and cover stale merge cases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client hugegraph-client hubble hugegraph-hubble loader hugegraph-loader spark tools hugegraph-tools

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants