Skip to content

TIKA-4606: Upgrade Apache Ignite from 2.x to 3.x#2648

Open
nddipiazza wants to merge 1 commit intomainfrom
TIKA-4606-ignite-core
Open

TIKA-4606: Upgrade Apache Ignite from 2.x to 3.x#2648
nddipiazza wants to merge 1 commit intomainfrom
TIKA-4606-ignite-core

Conversation

@nddipiazza
Copy link
Contributor

Summary

Upgrades Apache Ignite from 2.16.0 to 3.1.0 in the tika-pipes-config-store-ignite module and updates dependent gRPC server code.

Changes

  • tika-pipes-config-store-ignite: Upgraded ignite-coreignite-runner 3.1.0; migrated from IgniteConfiguration API to HOCON-based config; replaced IgniteCache with KeyValueView API; updated ExtensionConfigDTO with Ignite 3.x @Column/@Id annotations; rewrote IgniteStoreServer to use synchronous embedded Ignite.start() node API
  • tika-grpc: Added emitter_id field to FetchAndParseRequest proto; updated TikaGrpcServerImpl with proper IgniteStoreServer lifecycle; added required --add-opens JVM flags for Java 17+
  • tika-pipes-core/EmitHandler: Fixed NPE — added null check for NO_EMIT scenario before attempting emission
  • tika-parent/pom.xml: Added Ignite 3.x convergence entries for asm, picocli, snakeyaml, javax.validation
  • Unit tests: Updated IgniteConfigStoreTest to use shared IgniteStoreServer via @BeforeAll/@AfterAll (Ignite 3.x embedded server pattern)

Review Focus Areas

  • API migration: IgniteConfigStoreIgniteCache replaced by KeyValueView; verify CRUD semantics are preserved
  • IgniteStoreServer lifecycle: embedded node start/stop in TikaGrpcServerImpl
  • EmitHandler null check: correct guard condition for NO_EMIT / null emitter ID
  • Dependency convergence: new entries in tika-parent for Ignite 3.x transitive conflicts

Critical Files

  • tika-pipes/tika-pipes-config-store-ignite/src/main/java/org/apache/tika/pipes/ignite/IgniteConfigStore.java
  • tika-pipes/tika-pipes-config-store-ignite/src/main/java/org/apache/tika/pipes/ignite/server/IgniteStoreServer.java
  • tika-grpc/src/main/java/org/apache/tika/pipes/grpc/TikaGrpcServerImpl.java
  • tika-pipes/tika-pipes-core/src/main/java/org/apache/tika/pipes/core/server/EmitHandler.java

Testing Instructions

# Build and run unit tests for the ignite module
mvn clean install -pl tika-pipes/tika-pipes-config-store-ignite

# Run specific test class
mvn test -pl tika-pipes/tika-pipes-config-store-ignite -Dtest=IgniteConfigStoreTest

Related

- Upgraded ignite-core 2.16.0 to ignite-runner 3.1.0
- Migrated configuration from IgniteConfiguration API to HOCON-based config files
- Updated API usage from IgniteCache to new KeyValueView API
- Fixed ExtensionConfigDTO to use Ignite 3.x Mapper annotations
- Simplified IgniteStoreServer to synchronous embedded mode
- Fixed EmitHandler: added null check for NO_EMIT scenario to prevent NPE
- Updated gRPC proto: added emitter_id field to FetchAndParseRequest
- Updated TikaGrpcServerImpl: proper lifecycle management for IgniteStoreServer
- Added JVM --add-opens flags for Java 17+ compatibility
- Updated unit tests (IgniteConfigStoreTest) for Ignite 3.x embedded server pattern

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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