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

Reply via email to