This is an automated email from the ASF dual-hosted git repository.
ndipiazza pushed a commit to branch TIKA-4606-ignite-3x-upgrade
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/TIKA-4606-ignite-3x-upgrade by
this push:
new b4224f197 TIKA-4606: Upgrade Apache Ignite from 2.x to 3.x
b4224f197 is described below
commit b4224f1971e253e7ef5f1ed17b7948b48025fb85
Author: Nicholas DiPiazza <[email protected]>
AuthorDate: Mon Dec 29 10:54:14 2025 -0600
TIKA-4606: Upgrade Apache Ignite from 2.x to 3.x
- Upgraded ignite-api, ignite-client, and ignite-runner to 3.1.0
- Migrated from cache-based to table-based API
- Updated configuration to use tableName instead of cacheName
- Added dependency management for Micronaut dependencies to resolve
convergence issues
- Updated forbidden API calls to use Locale.ROOT
- Modified IgniteStoreServer to use Ignite 3.x API and configuration
- Build succeeds and basic gRPC tests pass
- Ignite 3.x runtime requires further investigation for proper server
startup
---
.../sample-configs/ignite/tika-config-ignite.json | 2 +-
.../src/test/resources/tika-config-ignite.json | 2 +-
tika-grpc/dev-tika-config.json | 2 +-
tika-grpc/pom.xml | 50 ++++++++++++++++++++
.../src/test/resources/tika-config-ignite.json | 2 +-
tika-pipes/tika-pipes-config-store-ignite/pom.xml | 53 ++++++++++++++++++----
.../pipes/ignite/server/IgniteStoreServer.java | 20 +++++++-
7 files changed, 117 insertions(+), 14 deletions(-)
diff --git
a/tika-e2e-tests/tika-grpc/sample-configs/ignite/tika-config-ignite.json
b/tika-e2e-tests/tika-grpc/sample-configs/ignite/tika-config-ignite.json
index 69da03028..1262f8c54 100644
--- a/tika-e2e-tests/tika-grpc/sample-configs/ignite/tika-config-ignite.json
+++ b/tika-e2e-tests/tika-grpc/sample-configs/ignite/tika-config-ignite.json
@@ -1,7 +1,7 @@
{
"pipes": {
"configStoreType": "ignite",
- "configStoreParams": "{\n \"cacheName\": \"tika-config-store\",\n
\"cacheMode\": \"REPLICATED\",\n \"igniteInstanceName\":
\"TikaIgniteCluster\",\n \"autoClose\": true\n }"
+ "configStoreParams": "{\n \"tableName\": \"tika-config-store\",\n
\"igniteInstanceName\": \"TikaIgniteCluster\",\n \"replicas\": 2,\n
\"partitions\": 10,\n \"autoClose\": true\n }"
},
"fetchers": [
{
diff --git
a/tika-e2e-tests/tika-grpc/src/test/resources/tika-config-ignite.json
b/tika-e2e-tests/tika-grpc/src/test/resources/tika-config-ignite.json
index 2cca83cea..0a3431cb8 100644
--- a/tika-e2e-tests/tika-grpc/src/test/resources/tika-config-ignite.json
+++ b/tika-e2e-tests/tika-grpc/src/test/resources/tika-config-ignite.json
@@ -3,7 +3,7 @@
"pipes": {
"numClients": 1,
"configStoreType": "ignite",
- "configStoreParams": "{\"cacheName\": \"tika-e2e-test\", \"cacheMode\":
\"REPLICATED\", \"igniteInstanceName\": \"TikaE2ETest\", \"autoClose\": true}",
+ "configStoreParams": "{\"tableName\": \"tika-e2e-test\",
\"igniteInstanceName\": \"TikaE2ETest\", \"replicas\": 2, \"partitions\": 10,
\"autoClose\": true}",
"forkedJvmArgs": [
"--add-opens=java.base/jdk.internal.access=ALL-UNNAMED",
"--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED",
diff --git a/tika-grpc/dev-tika-config.json b/tika-grpc/dev-tika-config.json
index 6261687e1..4636fab46 100644
--- a/tika-grpc/dev-tika-config.json
+++ b/tika-grpc/dev-tika-config.json
@@ -16,7 +16,7 @@
],
"pipes": {
"configStoreType": "ignite",
- "configStoreParams":
"{\"cacheName\":\"tika-config-cache\",\"cacheMode\":\"REPLICATED\",\"igniteInstanceName\":\"TikaGrpcIgnite\",\"autoClose\":true}"
+ "configStoreParams":
"{\"tableName\":\"tika-config-cache\",\"igniteInstanceName\":\"TikaGrpcIgnite\",\"replicas\":2,\"partitions\":10,\"autoClose\":true}"
},
"fetchers": [
{
diff --git a/tika-grpc/pom.xml b/tika-grpc/pom.xml
index cdc78f25b..8ee3a99f0 100644
--- a/tika-grpc/pom.xml
+++ b/tika-grpc/pom.xml
@@ -51,6 +51,56 @@
<type>pom</type>
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-runtime</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-inject</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http-server</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-websocket</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http-netty</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-validation</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http-client-core</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger.core.v3</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>2.2.38</version>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.inject</groupId>
+ <artifactId>jakarta.inject-api</artifactId>
+ <version>2.0.1</version>
+ </dependency>
</dependencies>
</dependencyManagement>
diff --git a/tika-grpc/src/test/resources/tika-config-ignite.json
b/tika-grpc/src/test/resources/tika-config-ignite.json
index 7f813c728..12908fef1 100644
--- a/tika-grpc/src/test/resources/tika-config-ignite.json
+++ b/tika-grpc/src/test/resources/tika-config-ignite.json
@@ -1,7 +1,7 @@
{
"pipes": {
"configStoreType": "ignite",
- "configStoreParams":
"{\"cacheName\":\"my-tika-cache\",\"cacheMode\":\"REPLICATED\",\"igniteInstanceName\":\"MyTikaCluster\",\"autoClose\":true}"
+ "configStoreParams":
"{\"tableName\":\"my-tika-cache\",\"igniteInstanceName\":\"MyTikaCluster\",\"replicas\":2,\"partitions\":10,\"autoClose\":true}"
},
"fetchers": [
{
diff --git a/tika-pipes/tika-pipes-config-store-ignite/pom.xml
b/tika-pipes/tika-pipes-config-store-ignite/pom.xml
index b54cee9cb..9a2a6ccfb 100644
--- a/tika-pipes/tika-pipes-config-store-ignite/pom.xml
+++ b/tika-pipes/tika-pipes-config-store-ignite/pom.xml
@@ -50,6 +50,51 @@
<artifactId>micronaut-inject</artifactId>
<version>3.10.4</version>
</dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-runtime</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http-server</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-websocket</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http-netty</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-validation</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-http-client-core</artifactId>
+ <version>3.10.4</version>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.inject</groupId>
+ <artifactId>jakarta.inject-api</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger.core.v3</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>2.2.38</version>
+ </dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
@@ -93,14 +138,6 @@
<artifactId>ignite-runner</artifactId>
<version>${ignite.version}</version>
<exclusions>
- <exclusion>
- <groupId>org.apache.ignite</groupId>
- <artifactId>ignite-rest</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.ignite</groupId>
- <artifactId>ignite-rest-api</artifactId>
- </exclusion>
<exclusion>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-metrics-exporter-otlp</artifactId>
diff --git
a/tika-pipes/tika-pipes-config-store-ignite/src/main/java/org/apache/tika/pipes/ignite/server/IgniteStoreServer.java
b/tika-pipes/tika-pipes-config-store-ignite/src/main/java/org/apache/tika/pipes/ignite/server/IgniteStoreServer.java
index 3f7377298..3d235b360 100644
---
a/tika-pipes/tika-pipes-config-store-ignite/src/main/java/org/apache/tika/pipes/ignite/server/IgniteStoreServer.java
+++
b/tika-pipes/tika-pipes-config-store-ignite/src/main/java/org/apache/tika/pipes/ignite/server/IgniteStoreServer.java
@@ -91,10 +91,26 @@ public class IgniteStoreServer implements AutoCloseable {
LOG.info("Created work directory: {}", workDir);
}
- // Start the server node directly
+ // Create minimal HOCON config file for Ignite 3.x
+ Path configPath = workDir.resolve("ignite-config.conf");
+ if (!Files.exists(configPath)) {
+ String config = String.format(Locale.ROOT,
+ "ignite {\n" +
+ " network: {\n" +
+ " port: 3344,\n" +
+ " nodeFinder: {\n" +
+ " netClusterNodes: [ \"localhost:3344\" ]\n" +
+ " }\n" +
+ " }\n" +
+ "}\n");
+ Files.writeString(configPath, config);
+ LOG.info("Created Ignite config: {}", configPath);
+ }
+
+ // Start the server node
// Note: In Ignite 3.x embedded mode, the server manages its own
initialization
LOG.info("Starting Ignite node: {} at {}", nodeName, workDir);
- ignite = IgniteServer.start(nodeName, workDir, null);
+ ignite = IgniteServer.start(nodeName, configPath, workDir);
LOG.info("Ignite server started successfully");
// Wait a bit for the cluster to be ready