Skip to content

Conversation

@cthiebault
Copy link
Contributor

Summary

  • Upgrade Java version from 21 to 25
  • Replace OrientDB 3.2.45 with H2 2.2.224 for configuration storage
  • OrientDB is incompatible with Java 22+ due to removed sun.misc.Unsafe.ensureClassInitialized method
  • H2 implementation maintains the same OrientDbService interface
  • Entities stored as JSON documents in a single documents table

Changes

New files:

  • H2OrientDbServerFactory.java - H2 connection pool and schema initialization
  • H2OrientDbServiceImpl.java - H2 implementation of OrientDbService with JSON document storage

Deleted files:

  • OrientDbServiceImpl.java - OrientDB implementation
  • LocalOrientDbServerFactory.java - OrientDB server factory
  • TimestampedHook.java - OrientDB hook for timestamps
  • SimpleOrientDbQueryBuilder.java - OrientDB query builder
  • orientdb-server-config.xml - OrientDB configuration

Modified:

  • pom.xml files - Updated dependencies (removed OrientDB, added H2)
  • ci.yml - Updated to Java 25
  • debian/control - Updated Java dependency to openjdk-25
  • Service implementations - Removed OrientDB-specific query builder usage

Jira Ticket

N/A

Security Impact

  • Authentication or authorization logic
  • Cryptography or secrets management
  • Input validation or output encoding
  • Logging or audit trails
  • API security (rate limiting, CORS, etc.)
  • Infrastructure or deployment security
  • No security impact

Security notes: This change replaces the database implementation for configuration storage but maintains the same security model. No changes to authentication, authorization, or data handling logic.

cthiebault and others added 3 commits January 20, 2026 08:35
OrientDB is incompatible with Java 22+ due to removed
sun.misc.Unsafe.ensureClassInitialized method. This commit:

- Upgrades Java version from 21 to 25
- Replaces OrientDB 3.2.45 with H2 2.2.224 for config storage
- Creates H2OrientDbServiceImpl with JSON document storage
- Updates CI workflow for Java 25
- Updates Debian package dependencies

The H2 implementation maintains the same OrientDbService interface
and stores entities as JSON documents in a single 'documents' table.
GraalVM 21.x uses sun.misc.Unsafe.ensureClassInitialized which was
removed in Java 22+. Updated to GraalVM 25.0.1 with new artifact
coordinates:
- org.graalvm.sdk:graal-sdk → org.graalvm.polyglot:polyglot
- org.graalvm.js:js → org.graalvm.polyglot:js-community

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove DROP ALL OBJECTS from stop() to prevent data loss on restart
- Add upgrade notes for Java 25 + H2 migration (v5.5)
- Document two-step migration: export with Opal 5.4/Java 21, import with 5.5/Java 25
@cthiebault cthiebault force-pushed the feature/java-25-h2-migration branch from 1bca0ab to 5b1a387 Compare January 20, 2026 07:37
- Add Maven wrapper (mvnw) for reproducible builds without pre-installed Maven
- Update Makefile to use ./mvnw instead of system mvn
- Add CLAUDE.md with project overview and development instructions
- Update .gitignore for Claude Code local settings
@cthiebault cthiebault force-pushed the feature/java-25-h2-migration branch from 5b1a387 to be17538 Compare January 20, 2026 07:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant