[ 
https://issues.apache.org/jira/browse/TIKA-4606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18048226#comment-18048226
 ] 

Nicholas DiPiazza commented on TIKA-4606:
-----------------------------------------

h2. Work In Progress - Ignite 3.x Upgrade Analysis

h3. ✅ Completed:
* Updated pom.xml to Ignite 3.1.0
* Replaced dependencies:
** {{ignite-core}} → {{ignite-api}} + {{ignite-runner}}
** {{ignite-indexing}} → {{ignite-sql-engine}} (Calcite-based!)
** {{ignite-spring}} → removed (not needed)
** {{com.h2database:h2}} → removed (Calcite is built-in)
* Added exclusions for unnecessary REST/metrics modules
* Resolved dependency convergence issues (snakeyaml, kotlin-stdlib, picocli, 
micronaut)

h3. 🔧 Required Code Changes:

The following Ignite 2.x API classes no longer exist in Ignite 3.x and must be 
migrated:

h4. IgniteConfigStore.java:
{{Ignite}} → {{IgniteServer}} or embedded cluster
{{IgniteCache<K,V>}} → {{KeyValueView<K,V>}} or {{RecordView<R>}}
{{Ignition.start()}} → {{IgniteServer.start()}} or {{Ignite.start()}}
{{CacheConfiguration}} → Table API configuration
SQL queries via cache → SQL via {{ignite.sql().execute()}}

h4. IgniteStoreServer.java:
{{Ignition.start(IgniteConfiguration)}} → New configuration API
{{CacheMode}} → Replaced by table zones/replication factor
Cache API → Table API

h4. IgniteConfigStoreConfig.java:
{{CacheMode}} enum → Distribution zones configuration

h3. Migration Guide:
{noformat}
Ignite 2.x:
  Ignite ignite = Ignition.start(config);
  IgniteCache<K,V> cache = ignite.getOrCreateCache("name");
  cache.put(key, value);
  V val = cache.get(key);

Ignite 3.x:
  Ignite ignite = IgniteServer.start("node-name", config);
  Table table = ignite.tables().table("name");  
  KeyValueView<K,V> kv = table.keyValueView();
  kv.put(tx, key, value);
  V val = kv.get(tx, key);
{noformat}

h3. Next Steps:
# Refactor {{IgniteConfigStore}} to use Table API
# Update {{IgniteStoreServer}} for Ignite 3.x configuration
# Remove {{CacheMode}} references, use distribution zones
# Rewrite SQL queries for new API
# Update tests for Ignite 3.x
# Test backward compatibility

h3. Status:
🚧 WIP - Dependencies updated, code refactoring in progress

Branch: {{TIKA-4606-ignite-3x-upgrade}}
Calcite SQL: ✅ Built-in to Ignite 3.x (via ignite-sql-engine)

> Upgrade Ignite config store to Ignite 3.x with Calcite SQL engine
> -----------------------------------------------------------------
>
>                 Key: TIKA-4606
>                 URL: https://issues.apache.org/jira/browse/TIKA-4606
>             Project: Tika
>          Issue Type: Improvement
>            Reporter: Nicholas DiPiazza
>            Assignee: Nicholas DiPiazza
>            Priority: Major
>
> h2. Overview
> Upgrade the tika-pipes-config-store-ignite module from Apache Ignite 2.17.0 
> (which uses H2 1.4.x) to Apache Ignite 3.x (which uses Apache Calcite SQL 
> engine).
> h2. Current State
> * Module: *tika-pipes-config-store-ignite*
> * Ignite Version: 2.17.0
> * SQL Engine: H2 1.4.197 (embedded)
> * Location: {{tika-pipes/tika-pipes-config-store-ignite/}}
> h2. Goals
> # Upgrade to Apache Ignite 3.x (latest stable release)
> # Replace H2 SQL engine with Calcite-based SQL engine
> # Maintain all existing functionality for config store
> # Update API calls to match Ignite 3.x breaking changes
> # Ensure backward compatibility for stored configurations (if possible)
> h2. Benefits
> * Modern SQL engine with Apache Calcite
> * Better performance and query optimization
> * Active maintenance and future support
> * Improved SQL feature set
> * No dependency on old H2 1.4.x (2018)
> h2. Breaking Changes to Address
> * Ignite 3.x has major API changes from 2.x
> * Configuration format changes
> * Cache API differences
> * SQL query API updates
> * Client connection changes
> h2. Implementation Steps
> # Research Ignite 3.x API changes and migration guide
> # Update Maven dependencies to Ignite 3.x
> # Refactor {{IgniteConfigStore}} to use new Ignite 3.x API
> # Update {{IgniteStoreServer}} for new connection model
> # Modify SQL queries if needed for Calcite compatibility
> # Update configuration handling
> # Update tests to work with Ignite 3.x
> # Test backward compatibility with existing configs
> # Update documentation
> h2. Acceptance Criteria
> * Ignite upgraded to version 3.x (latest stable)
> * Uses Calcite SQL engine instead of H2
> * All existing tests pass
> * Config store functionality preserved
> * No H2 dependencies remain
> * Documentation updated
> h2. References
> * Apache Ignite 3.x: https://ignite.apache.org/docs/3.0.0/
> * Ignite 3.x Migration Guide
> * Apache Calcite: https://calcite.apache.org/
> * Current module: {{tika-pipes/tika-pipes-config-store-ignite/}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to