Skip to content

feat(hubble): migrate to Boot 3 and new H2 metadata - #781

Merged
imbajin merged 79 commits into
apache:masterfrom
hugegraph:java17-hubble-prep
Oct 6, 2026
Merged

imbajin merged 79 commits into
apache:masterfrom
hugegraph:java17-hubble-prep

Conversation

@imbajin

@imbajin imbajin commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

Purpose

Move Hubble from the older Spring Boot stack to Java 17 and Spring Boot 3/Jakarta. The release uses a fresh H2 metadata database and preserves previous database files; automatic migration of old metadata is not supported.

Core component upgrades

Component Before After
Java Java 8 bytecode target; CI on Java 11 Java 17 target and runtime
Spring Boot 2.1.8.RELEASE 3.5.16
Spring Framework 5.1.9.RELEASE 6.2.19
Embedded Tomcat 9.0.24 10.1.55
H2 1.4.199 2.3.232
MyBatis-Plus 3.3.0 3.5.17, using the Boot 3 starter

Servlet and JAXB integration moves from javax APIs to jakarta APIs. Existing HugeGraph SDK coordinates are unchanged by this module preparation.

Main changes

  • Align backend and distribution dependencies with Boot 3, including JAXB runtime providers and required third-party notices.
  • Validate existing metadata read-only before initialization and reject incompatible schemas. Keep the old database with its matching release, and configure a new database for this upgrade.
  • Preserve local runtime files during packaging and validate launcher process identity.
  • Prevent stale graph context and query ownership from changing results after graph switching.
  • Keep the README concise, with detailed metadata configuration and troubleshooting in hugegraph-hubble/docs/metadata-storage.md. Remove the committed validation screenshot and development progress narrative.

Validation

Backend/H2, JAXB, focused frontend and launcher/archive regressions passed before this documentation cleanup. This update changes only documentation and removes the validation image; local links, the final diff and current master ancestry were checked. Required CI must pass on the updated head. The separate import cleanup ownership issue remains open.

Conceptual overview

Hubble 应用栈升级至 Java 17、Boot 3 与 Jakarta;使用全新 H2 元数据库,保留旧库与匹配旧版,不支持自动迁移。

Conceptual diagram; not runtime test evidence. Hubble 应用栈升级至 Java 17、Boot 3 与 Jakarta;使用全新 H2 元数据库,保留旧库与匹配旧版,不支持自动迁移。

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.
- 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
- disable persisted checkout credentials in the contract job
- preserve read-only source checkout permissions
- retain the existing local Git fixture contracts
Retain FastDoubleParser copyright and full MIT grant.
Use the exact source pinned by Jackson Core 2.15.2 NOTICE.
Reference the existing Spark third-party license supplement.
imbajin added 17 commits October 6, 2026 00:11
- absorb finalized shared build preparation
- include merged client compatibility fixes
- preserve independent module changes
- absorb finalized shared build preparation
- include merged client compatibility fixes
- preserve independent module changes
- absorb finalized shared build preparation
- include merged client compatibility fixes
- preserve independent module changes
- retain merged client compatibility repairs
- preserve Hubble migration changes
- prepare upstream synchronization
- include finalized build preparation
- connect upstream squash history
- preserve Hubble migration scope
- inherit finalized connector preparation
- retain verified combined dependency attribution
- establish continuous upstream merge ordering
- validate Java before probing its version
- preserve the existing setup diagnostic
- cover missing Java and supported launcher options
- replace obsolete distribution location
- describe graph query behavior in present tense
- join upgrade paragraphs and remove stage history
- join new connector guide paragraphs
- retain driver and executor runtime guidance
- preserve existing examples and tables
- place test guidance before license
- retain disposable server requirements
- keep the test paragraph on one line
- retain query locks until their request finishes
- reject stale graph statistics and quote launch paths
- correct remarks guidance and shared notice mapping
- retain finalized connector runtime instructions
- preserve complete Markdown paragraphs
- align the shared preparation documentation
- identify the module assembly directory
- retain the target archive location
- keep distribution guidance on one line
- preserve the verified module file tree
- reconcile organization and upstream client history
- keep review diffs relative to the merged client
- preserve the verified module file tree
- reconcile organization and upstream client history
- keep review diffs relative to the merged client
- preserve the verified module file tree
- reconcile organization and upstream client history
- keep review diffs relative to the merged client
- preserve the exact upstream master content
- link the finalized client preparation history
- keep organization module review diffs focused
MrJs133
MrJs133 previously approved these changes Oct 5, 2026
@github-actions github-actions Bot removed loader hugegraph-loader client hugegraph-client tools hugegraph-tools labels 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
- 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
@imbajin
imbajin merged commit 4879ae1 into apache:master Oct 6, 2026
17 of 23 checks passed
@imbajin
imbajin deleted the java17-hubble-prep branch October 8, 2026 16:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hubble hugegraph-hubble

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants