[jira] [Reopened] (IGNITE-21499) Removal of MvccSnapshot

2024-04-25 Thread Ilya Shishkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Shishkov reopened IGNITE-21499:


> Removal of MvccSnapshot
> ---
>
> Key: IGNITE-21499
> URL: https://issues.apache.org/jira/browse/IGNITE-21499
> Project: Ignite
>  Issue Type: Task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>




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


[jira] [Resolved] (IGNITE-21499) Removal of MvccSnapshot

2024-04-25 Thread Ilya Shishkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Shishkov resolved IGNITE-21499.

Resolution: Duplicate

> Removal of MvccSnapshot
> ---
>
> Key: IGNITE-21499
> URL: https://issues.apache.org/jira/browse/IGNITE-21499
> Project: Ignite
>  Issue Type: Task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>




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


[jira] [Closed] (IGNITE-21499) Removal of MvccSnapshot

2024-04-25 Thread Ilya Shishkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Shishkov closed IGNITE-21499.
--

> Removal of MvccSnapshot
> ---
>
> Key: IGNITE-21499
> URL: https://issues.apache.org/jira/browse/IGNITE-21499
> Project: Ignite
>  Issue Type: Task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>




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


[jira] [Updated] (IGNITE-21499) Removal of MvccSnapshot

2024-04-25 Thread Ilya Shishkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Shishkov updated IGNITE-21499:
---
Parent: (was: IGNITE-13871)
Issue Type: Task  (was: Sub-task)

> Removal of MvccSnapshot
> ---
>
> Key: IGNITE-21499
> URL: https://issues.apache.org/jira/browse/IGNITE-21499
> Project: Ignite
>  Issue Type: Task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>




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


[jira] [Resolved] (IGNITE-21499) Removal of MvccSnapshot

2024-04-25 Thread Ilya Shishkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Shishkov resolved IGNITE-21499.

Resolution: Duplicate

> Removal of MvccSnapshot
> ---
>
> Key: IGNITE-21499
> URL: https://issues.apache.org/jira/browse/IGNITE-21499
> Project: Ignite
>  Issue Type: Sub-task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>




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


[jira] [Reopened] (IGNITE-21499) Removal of MvccSnapshot

2024-04-25 Thread Ilya Shishkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Shishkov reopened IGNITE-21499:


> Removal of MvccSnapshot
> ---
>
> Key: IGNITE-21499
> URL: https://issues.apache.org/jira/browse/IGNITE-21499
> Project: Ignite
>  Issue Type: Sub-task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>




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


[jira] [Created] (IGNITE-22115) Data collocation: single Primary, single Raft

2024-04-25 Thread Alexander Lapin (Jira)
Alexander Lapin created IGNITE-22115:


 Summary: Data collocation: single Primary, single Raft
 Key: IGNITE-22115
 URL: https://issues.apache.org/jira/browse/IGNITE-22115
 Project: Ignite
  Issue Type: Epic
Reporter: Alexander Lapin






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


[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which currently don't work in the spring 6 
environment(basically, where the API is broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom. We should use the lowest target 
possible.
 # If the spring module don't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module is used. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.

  was:
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which currently don't work in the spring 6 
environment(basically, where the API is broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom. We should use the lowest target 
possible.
 # If the spring module don't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications because extensions are based on Spring 5. 
> Most of them 

[jira] [Updated] (IGNITE-22104) Documentation of Custom Metrics

2024-04-25 Thread Vladimir Steshin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22104?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladimir Steshin updated IGNITE-22104:
--
Fix Version/s: 2.17

> Documentation of Custom Metrics
> ---
>
> Key: IGNITE-22104
> URL: https://issues.apache.org/jira/browse/IGNITE-22104
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Affects Versions: 2.17
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: ise
> Fix For: 2.17
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> New Custom Metric feature should be documented.



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


[jira] [Created] (IGNITE-22114) NullPointerException when restarting a node few times in a row

2024-04-25 Thread Andrey Khitrin (Jira)
Andrey Khitrin created IGNITE-22114:
---

 Summary: NullPointerException when restarting a node few times in 
a row
 Key: IGNITE-22114
 URL: https://issues.apache.org/jira/browse/IGNITE-22114
 Project: Ignite
  Issue Type: Bug
  Components: general
Affects Versions: 3.0.0-beta2
Reporter: Andrey Khitrin


Steps to reproduce:

1. Start a 3-node cluster (`node-1`, `node-2`, `node-3`)
2. Run some load on it (read and write)
3. Shutdown a single node, wait some time, start it again
4. After a little time (say, 30 seconds) shutdown the same node again, wait 
some time, start it again

In my case, an issue was reproduced on commit 
`d593e6487aa36a806bab075d19c8b831ca096a28` (2024-04-24 IGNITE-2124) on the 2nd 
restart of `node-3`.

Expected results: node starts without error.
Actual results: NPE in `ignite3-startup.log`.

{code}
Error when starting the node: org.apache.ignite.lang.IgniteException: 
IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe 
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3]
java.util.concurrent.ExecutionException: 
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe 
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3]
at 
java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
at 
java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
at 
org.apache.ignite.internal.app.IgniteRunner.main(IgniteRunner.java:74)
Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe 
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3]
at 
org.apache.ignite.internal.app.IgnitionImpl.handleStartException(IgnitionImpl.java:224)
at 
org.apache.ignite.internal.app.IgnitionImpl.lambda$doStart$1(IgnitionImpl.java:205)
at 
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at 
java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at 
java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
at 
java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:840)
at 
java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:479)
at 
java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at 
java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at 
java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at 
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.util.concurrent.CompletionException: 
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3]
at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
at 
java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
at 
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:932)
at 
java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
at 
java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3]
at 
org.apache.ignite.internal.app.IgniteImpl.handleStartException(IgniteImpl.java:1185)
at 
org.apache.ignite.internal.app.IgniteImpl.lambda$start$27(IgniteImpl.java:1129)
at 
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
... 5 more
Caused by: java.util.concurrent.CompletionException: 
java.lang.NullPointerException
at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
at 

[jira] [Commented] (IGNITE-22105) Add busy lock to ClusterStateStorage

2024-04-25 Thread Roman Puchkovskiy (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-22105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17840813#comment-17840813
 ] 

Roman Puchkovskiy commented on IGNITE-22105:


The patch looks good to me

> Add busy lock to ClusterStateStorage
> 
>
> Key: IGNITE-22105
> URL: https://issues.apache.org/jira/browse/IGNITE-22105
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtsev
>Assignee: Aleksandr Polovtsev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> {{ClusterStateStorage}} is a full-blown IgniteComponent, but doesn't have a 
> busy lock that will signal the users that the component has been stopped. 



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


[jira] [Updated] (IGNITE-22109) [SQL] TPC-H q4 query hangs with sc=0.1

2024-04-25 Thread Nikita Sivkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22109?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Sivkov updated IGNITE-22109:
---
Description: 
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q4|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q4.java]
 query:

 
{noformat}
SELECT
   o_orderpriority,
   COUNT(*) AS order_count
FROM
   orders 
WHERE
   o_orderdate >= ?::date
   AND o_orderdate < ?::date + INTERVAL '3' MONTH
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem
      WHERE 
         l_orderkey = o_orderkey 
         AND l_commitdate < l_receiptdate 
   )
GROUP BY 
   o_orderpriority
ORDER BY
   o_orderpriority{noformat}

  was:
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q4|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q4.java]
 query:

 
{noformat}
SELECT
   o_orderpriority,
   COUNT(*) AS order_count
FROM
   orders
WHERE
   o_orderdate >= DATE ?
   AND o_orderdate < DATE ? + INTERVAL '3' MONTH
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem
      WHERE
         l_orderkey = o_orderkey
         AND l_commitdate < l_receiptdate
   )
GROUP BY
   o_orderpriority
ORDER BY
   o_orderpriority {noformat}


> [SQL] TPC-H q4 query hangs with sc=0.1
> --
>
> Key: IGNITE-22109
> URL: https://issues.apache.org/jira/browse/IGNITE-22109
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Nikita Sivkov
>Priority: Major
>  Labels: ignite-3, ignite3_performance
>
> Benchmark: 
> [https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
>  
> h1. Setup
>  * 1 server node
>  * TPC-H with scale factor = 0.1
> h1. Steps
>  # Start an Ignite node
>  # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
> preload data
>  # Observe via the benchbase log that the data was successfully loaded
>  # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
> run the benchmark
> h1. Expected result
> The benchmark finishes after warmup + duration time
> h1. Actual result
> The benchmark hangs for hours on 
> [Q4|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q4.java]
>  query:
>  
> {noformat}
> SELECT
>    o_orderpriority,
>    COUNT(*) AS order_count
> FROM
>    orders 
> WHERE
>    o_orderdate >= ?::date
>    AND o_orderdate < ?::date + INTERVAL '3' MONTH
>    AND EXISTS
>    (
>       SELECT
>          *
>       FROM
>          lineitem
>       WHERE 
>          l_orderkey = o_orderkey 
>          AND l_commitdate < l_receiptdate 
>    )
> GROUP BY 
>    o_orderpriority
> ORDER BY
>    o_orderpriority{noformat}



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


[jira] [Assigned] (IGNITE-19082) Catalog. Cleanup dead code.

2024-04-25 Thread Maksim Zhuravkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-19082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maksim Zhuravkov reassigned IGNITE-19082:
-

Assignee: Maksim Zhuravkov

> Catalog. Cleanup dead code.
> ---
>
> Key: IGNITE-19082
> URL: https://issues.apache.org/jira/browse/IGNITE-19082
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Assignee: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Let's
>  * ensure Catalog is used by default as a single schema management point by 
> TableManager, IndexManager, SqlSchemaManager, SchemaRegistry.
>  * drop schema related code from configuration.
>  * drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
> SchemaRegistry.
>  * make a PR for merging feature branch to main (if applicable).
>  * ensure there are end-to-end tests for the cases (if applicable) described 
> in CatalogServiceSelfTest. Also drop InternalSchemaTest.
>  * Let’s remove using/keeping schema name instaed of schema id (NewIndexEntry 
> class as example)



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


[jira] [Assigned] (IGNITE-22113) Remove unused MetaStorageManagerImpl getAnd<> methods

2024-04-25 Thread Alexander Lapin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Lapin reassigned IGNITE-22113:


Assignee:  Kirill Sizov

> Remove unused MetaStorageManagerImpl getAnd<> methods
> -
>
> Key: IGNITE-22113
> URL: https://issues.apache.org/jira/browse/IGNITE-22113
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Assignee:  Kirill Sizov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> There is bunch of getAnd<> methods in MetaStorageManagerImpl which aren't 
> used. Moreover they aren't even declared in the MetaStorageManager interface. 
> Worth mentioning, that their support will require additional efforts due to 
> idempotency issue.
> All in all, It's better to remove them.
> h3. Definition of Done
>  * Unused getAnd<> are removed from MetaStorageManagerImpl, 
> MetastorageService along with corresponding tests etc.



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


[jira] [Updated] (IGNITE-22113) Remove unused MetaStorageManagerImpl getAnd<> methods

2024-04-25 Thread Alexander Lapin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Lapin updated IGNITE-22113:
-
Description: 
h3. Motivation

There is bunch of getAnd<> methods in MetaStorageManagerImpl which aren't used. 
Moreover they aren't even declared in the MetaStorageManager interface. Worth 
mentioning, that their support will require additional efforts due to 
idempotency issue.
All in all, It's better to remove them.
h3. Definition of Done
 * Unused getAnd<> are removed from MetaStorageManagerImpl, MetastorageService 
along with corresponding tests etc.

  was:
h3. Motivation

There is bunch of {{getAnd<>}} methods in {{MetaStorageManagerImpl}} which 
aren't used. Moreover they aren't even declared in the {{MetaStorageManager}} 
interface. Worth mentioning, that their support will require additional efforts 
due to idempotency issue.
All in all, It's better to remove them.
h3. Definition of Done
 * Unused {{getAnd<>}} are removed from {{MetaStorageManagerImpl, 
}}{{MetastorageService }}along with corresponding tests etc.{{{}{}}}


> Remove unused MetaStorageManagerImpl getAnd<> methods
> -
>
> Key: IGNITE-22113
> URL: https://issues.apache.org/jira/browse/IGNITE-22113
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Priority: Major
>
> h3. Motivation
> There is bunch of getAnd<> methods in MetaStorageManagerImpl which aren't 
> used. Moreover they aren't even declared in the MetaStorageManager interface. 
> Worth mentioning, that their support will require additional efforts due to 
> idempotency issue.
> All in all, It's better to remove them.
> h3. Definition of Done
>  * Unused getAnd<> are removed from MetaStorageManagerImpl, 
> MetastorageService along with corresponding tests etc.



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


[jira] [Updated] (IGNITE-22113) Remove unused MetaStorageManagerImpl getAnd<> methods

2024-04-25 Thread Alexander Lapin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Lapin updated IGNITE-22113:
-
Labels: ignite-3  (was: )

> Remove unused MetaStorageManagerImpl getAnd<> methods
> -
>
> Key: IGNITE-22113
> URL: https://issues.apache.org/jira/browse/IGNITE-22113
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> There is bunch of getAnd<> methods in MetaStorageManagerImpl which aren't 
> used. Moreover they aren't even declared in the MetaStorageManager interface. 
> Worth mentioning, that their support will require additional efforts due to 
> idempotency issue.
> All in all, It's better to remove them.
> h3. Definition of Done
>  * Unused getAnd<> are removed from MetaStorageManagerImpl, 
> MetastorageService along with corresponding tests etc.



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


[jira] [Updated] (IGNITE-22113) Remove unused MetaStorageManagerImpl getAnd<> methods

2024-04-25 Thread Alexander Lapin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Lapin updated IGNITE-22113:
-
Summary: Remove unused MetaStorageManagerImpl getAnd<> methods  (was: 
Remove  unused MetaStorageManagerImpl getAnd<> methods)

> Remove unused MetaStorageManagerImpl getAnd<> methods
> -
>
> Key: IGNITE-22113
> URL: https://issues.apache.org/jira/browse/IGNITE-22113
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Priority: Major
>
> h3. Motivation
> There is bunch of {{getAnd<>}} methods in {{MetaStorageManagerImpl}} which 
> aren't used. Moreover they aren't even declared in the {{MetaStorageManager}} 
> interface. Worth mentioning, that their support will require additional 
> efforts due to idempotency issue.
> All in all, It's better to remove them.
> h3. Definition of Done
>  * Unused {{getAnd<>}} are removed from {{MetaStorageManagerImpl, 
> }}{{MetastorageService }}along with corresponding tests etc.{{{}{}}}



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


[jira] [Created] (IGNITE-22113) Remove unused MetaStorageManagerImpl getAnd<> methods

2024-04-25 Thread Alexander Lapin (Jira)
Alexander Lapin created IGNITE-22113:


 Summary: Remove  unused MetaStorageManagerImpl getAnd<> methods
 Key: IGNITE-22113
 URL: https://issues.apache.org/jira/browse/IGNITE-22113
 Project: Ignite
  Issue Type: Improvement
Reporter: Alexander Lapin


h3. Motivation

There is bunch of {{getAnd<>}} methods in {{MetaStorageManagerImpl}} which 
aren't used. Moreover they aren't even declared in the {{MetaStorageManager}} 
interface. Worth mentioning, that their support will require additional efforts 
due to idempotency issue.
All in all, It's better to remove them.
h3. Definition of Done
 * Unused {{getAnd<>}} are removed from {{MetaStorageManagerImpl, 
}}{{MetastorageService }}along with corresponding tests etc.{{{}{}}}



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


[jira] [Updated] (IGNITE-22112) [SQL] TPC-H q9 query with sc=0.1 takes long time

2024-04-25 Thread Nikita Sivkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22112?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Sivkov updated IGNITE-22112:
---
Description: 
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time in about the same time as 
other requests.
h1. Actual result

The 
[Q9|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q9.java]
 query has significantly longer execution time. For example, it may take 10 
minutes, while the rest queries take ~1-15 seconds.
{noformat}
SELECT
   nation,
   o_year,
   SUM(amount) AS sum_profit
FROM
   (
      SELECT
         n_name AS nation,
         EXTRACT(YEAR
      FROM
         o_orderdate) AS o_year,
         l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity AS 
amount
      FROM
         part,
         supplier,
         lineitem,
         partsupp,
         orders,
         nation
      WHERE
         s_suppkey = l_suppkey
         AND ps_suppkey = l_suppkey
         AND ps_partkey = l_partkey
         AND p_partkey = l_partkey
         AND o_orderkey = l_orderkey
         AND s_nationkey = n_nationkey
         AND p_name LIKE ?
   )
   AS profit
GROUP BY
   nation,
   o_year
ORDER BY
   nation,
   o_year DESC{noformat}

  was:
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q21|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q21.java]
 query:

 
{noformat}
SELECT
   s_name,
   COUNT(*) AS numwait
FROM
   supplier,
   lineitem l1,
   orders,
   nation
WHERE
   s_suppkey = l1.l_suppkey
   AND o_orderkey = l1.l_orderkey
   AND o_orderstatus = 'F'
   AND l1.l_receiptdate > l1.l_commitdate
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem l2
      WHERE
         l2.l_orderkey = l1.l_orderkey
         AND l2.l_suppkey <> l1.l_suppkey
   )
   AND NOT EXISTS
   (
      SELECT
         *
      FROM
         lineitem l3
      WHERE
         l3.l_orderkey = l1.l_orderkey
         AND l3.l_suppkey <> l1.l_suppkey
         AND l3.l_receiptdate > l3.l_commitdate
   )
   AND s_nationkey = n_nationkey
   AND n_name = ?
GROUP BY
   s_name
ORDER BY
   numwait DESC,
   s_name LIMIT 100{noformat}


> [SQL] TPC-H q9 query with sc=0.1 takes long time
> 
>
> Key: IGNITE-22112
> URL: https://issues.apache.org/jira/browse/IGNITE-22112
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Nikita Sivkov
>Priority: Major
>  Labels: ignite-3, ignite3_performance
>
> Benchmark: 
> [https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
>  
> h1. Setup
>  * 1 server node
>  * TPC-H with scale factor = 0.1
> h1. Steps
>  # Start an Ignite node
>  # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
> preload data
>  # Observe via the benchbase log that the data was successfully loaded
>  # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
> run the benchmark
> h1. Expected result
> The benchmark finishes after warmup + duration time in about the same time as 
> other requests.
> h1. Actual result
> The 
> [Q9|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q9.java]
>  query has significantly longer execution time. For example, it may take 10 
> minutes, while the rest queries take ~1-15 seconds.
> {noformat}
> SELECT
>    nation,
>    o_year,
>    SUM(amount) AS sum_profit
> FROM
>    (
>       SELECT
>          n_name AS nation,
>          EXTRACT(YEAR
>       FROM
>          o_orderdate) AS o_year,
>          l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity AS 
> amount
>       FROM
>          part,
>          supplier,
>          lineitem,
>          partsupp,
> 

[jira] [Created] (IGNITE-22112) [SQL] TPC-H q9 query with sc=0.1 takes long time

2024-04-25 Thread Nikita Sivkov (Jira)
Nikita Sivkov created IGNITE-22112:
--

 Summary: [SQL] TPC-H q9 query with sc=0.1 takes long time
 Key: IGNITE-22112
 URL: https://issues.apache.org/jira/browse/IGNITE-22112
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Nikita Sivkov


Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q21|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q21.java]
 query:

 
{noformat}
SELECT
   s_name,
   COUNT(*) AS numwait
FROM
   supplier,
   lineitem l1,
   orders,
   nation
WHERE
   s_suppkey = l1.l_suppkey
   AND o_orderkey = l1.l_orderkey
   AND o_orderstatus = 'F'
   AND l1.l_receiptdate > l1.l_commitdate
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem l2
      WHERE
         l2.l_orderkey = l1.l_orderkey
         AND l2.l_suppkey <> l1.l_suppkey
   )
   AND NOT EXISTS
   (
      SELECT
         *
      FROM
         lineitem l3
      WHERE
         l3.l_orderkey = l1.l_orderkey
         AND l3.l_suppkey <> l1.l_suppkey
         AND l3.l_receiptdate > l3.l_commitdate
   )
   AND s_nationkey = n_nationkey
   AND n_name = ?
GROUP BY
   s_name
ORDER BY
   numwait DESC,
   s_name LIMIT 100{noformat}



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


[jira] [Updated] (IGNITE-22111) [SQL] TPC-H q21 query hangs with sc=0.1

2024-04-25 Thread Nikita Sivkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Sivkov updated IGNITE-22111:
---
Description: 
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q21|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q21.java]
 query:

 
{noformat}
SELECT
   s_name,
   COUNT(*) AS numwait
FROM
   supplier,
   lineitem l1,
   orders,
   nation
WHERE
   s_suppkey = l1.l_suppkey
   AND o_orderkey = l1.l_orderkey
   AND o_orderstatus = 'F'
   AND l1.l_receiptdate > l1.l_commitdate
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem l2
      WHERE
         l2.l_orderkey = l1.l_orderkey
         AND l2.l_suppkey <> l1.l_suppkey
   )
   AND NOT EXISTS
   (
      SELECT
         *
      FROM
         lineitem l3
      WHERE
         l3.l_orderkey = l1.l_orderkey
         AND l3.l_suppkey <> l1.l_suppkey
         AND l3.l_receiptdate > l3.l_commitdate
   )
   AND s_nationkey = n_nationkey
   AND n_name = ?
GROUP BY
   s_name
ORDER BY
   numwait DESC,
   s_name LIMIT 100{noformat}

  was:
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q16|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q16.java]
 query:

 
{noformat}
SELECT
   p_brand,
   p_type,
   p_size,
   COUNT(DISTINCT ps_suppkey) AS supplier_cnt
FROM
   partsupp,
   part
WHERE
   p_partkey = ps_partkey
   AND p_brand <> ?
   AND p_type NOT LIKE ?
   AND p_size IN (?, ?, ?, ?, ?, ?, ?, ?)
   AND ps_suppkey NOT IN
   (
      SELECT
         s_suppkey
      FROM
         supplier
      WHERE
         s_comment LIKE '%Customer%Complaints%'
   )
GROUP BY
   p_brand,
   p_type,
   p_size
ORDER BY
   supplier_cnt DESC,
   p_brand,
   p_type,
   p_size{noformat}


> [SQL] TPC-H q21 query hangs with sc=0.1
> ---
>
> Key: IGNITE-22111
> URL: https://issues.apache.org/jira/browse/IGNITE-22111
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Nikita Sivkov
>Priority: Major
>  Labels: ignite-3, ignite3_performance
>
> Benchmark: 
> [https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
>  
> h1. Setup
>  * 1 server node
>  * TPC-H with scale factor = 0.1
> h1. Steps
>  # Start an Ignite node
>  # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
> preload data
>  # Observe via the benchbase log that the data was successfully loaded
>  # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
> run the benchmark
> h1. Expected result
> The benchmark finishes after warmup + duration time
> h1. Actual result
> The benchmark hangs for hours on 
> [Q21|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q21.java]
>  query:
>  
> {noformat}
> SELECT
>    s_name,
>    COUNT(*) AS numwait
> FROM
>    supplier,
>    lineitem l1,
>    orders,
>    nation
> WHERE
>    s_suppkey = l1.l_suppkey
>    AND o_orderkey = l1.l_orderkey
>    AND o_orderstatus = 'F'
>    AND l1.l_receiptdate > l1.l_commitdate
>    AND EXISTS
>    (
>       SELECT
>          *
>       FROM
>          lineitem l2
>       WHERE
>          l2.l_orderkey = l1.l_orderkey
>          AND l2.l_suppkey <> l1.l_suppkey
>    )
>    AND NOT EXISTS
>    (
>       SELECT
>          *
>       FROM
>          lineitem l3
>       WHERE
>          l3.l_orderkey = l1.l_orderkey
>          AND l3.l_suppkey <> l1.l_suppkey
>          AND l3.l_receiptdate > l3.l_commitdate
>    )
>    AND s_nationkey = n_nationkey
>    AND n_name = ?
> GROUP BY
>    s_name
> ORDER BY
>    numwait DESC,
>    s_name LIMIT 100{noformat}



--
This message was sent by 

[jira] [Updated] (IGNITE-22110) [SQL] TPC-H q16 query hangs with sc=0.1

2024-04-25 Thread Nikita Sivkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Sivkov updated IGNITE-22110:
---
Summary: [SQL] TPC-H q16 query hangs with sc=0.1  (was: CLONE - [SQL] TPC-H 
q16 query hangs with sc=0.1)

> [SQL] TPC-H q16 query hangs with sc=0.1
> ---
>
> Key: IGNITE-22110
> URL: https://issues.apache.org/jira/browse/IGNITE-22110
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Nikita Sivkov
>Priority: Major
>  Labels: ignite-3, ignite3_performance
>
> Benchmark: 
> [https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
>  
> h1. Setup
>  * 1 server node
>  * TPC-H with scale factor = 0.1
> h1. Steps
>  # Start an Ignite node
>  # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
> preload data
>  # Observe via the benchbase log that the data was successfully loaded
>  # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
> run the benchmark
> h1. Expected result
> The benchmark finishes after warmup + duration time
> h1. Actual result
> The benchmark hangs for hours on 
> [Q16|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q16.java]
>  query:
>  
> {noformat}
> SELECT
>    p_brand,
>    p_type,
>    p_size,
>    COUNT(DISTINCT ps_suppkey) AS supplier_cnt
> FROM
>    partsupp,
>    part
> WHERE
>    p_partkey = ps_partkey
>    AND p_brand <> ?
>    AND p_type NOT LIKE ?
>    AND p_size IN (?, ?, ?, ?, ?, ?, ?, ?)
>    AND ps_suppkey NOT IN
>    (
>       SELECT
>          s_suppkey
>       FROM
>          supplier
>       WHERE
>          s_comment LIKE '%Customer%Complaints%'
>    )
> GROUP BY
>    p_brand,
>    p_type,
>    p_size
> ORDER BY
>    supplier_cnt DESC,
>    p_brand,
>    p_type,
>    p_size{noformat}



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


[jira] [Updated] (IGNITE-22110) CLONE - [SQL] TPC-H q16 query hangs with sc=0.1

2024-04-25 Thread Nikita Sivkov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Sivkov updated IGNITE-22110:
---
Description: 
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q16|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q16.java]
 query:

 
{noformat}
SELECT
   p_brand,
   p_type,
   p_size,
   COUNT(DISTINCT ps_suppkey) AS supplier_cnt
FROM
   partsupp,
   part
WHERE
   p_partkey = ps_partkey
   AND p_brand <> ?
   AND p_type NOT LIKE ?
   AND p_size IN (?, ?, ?, ?, ?, ?, ?, ?)
   AND ps_suppkey NOT IN
   (
      SELECT
         s_suppkey
      FROM
         supplier
      WHERE
         s_comment LIKE '%Customer%Complaints%'
   )
GROUP BY
   p_brand,
   p_type,
   p_size
ORDER BY
   supplier_cnt DESC,
   p_brand,
   p_type,
   p_size{noformat}

  was:
Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q4|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q4.java]
 query:

 
{noformat}
SELECT
   o_orderpriority,
   COUNT(*) AS order_count
FROM
   orders
WHERE
   o_orderdate >= DATE ?
   AND o_orderdate < DATE ? + INTERVAL '3' MONTH
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem
      WHERE
         l_orderkey = o_orderkey
         AND l_commitdate < l_receiptdate
   )
GROUP BY
   o_orderpriority
ORDER BY
   o_orderpriority {noformat}


> CLONE - [SQL] TPC-H q16 query hangs with sc=0.1
> ---
>
> Key: IGNITE-22110
> URL: https://issues.apache.org/jira/browse/IGNITE-22110
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Nikita Sivkov
>Priority: Major
>  Labels: ignite-3, ignite3_performance
>
> Benchmark: 
> [https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
>  
> h1. Setup
>  * 1 server node
>  * TPC-H with scale factor = 0.1
> h1. Steps
>  # Start an Ignite node
>  # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
> preload data
>  # Observe via the benchbase log that the data was successfully loaded
>  # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
> run the benchmark
> h1. Expected result
> The benchmark finishes after warmup + duration time
> h1. Actual result
> The benchmark hangs for hours on 
> [Q16|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q16.java]
>  query:
>  
> {noformat}
> SELECT
>    p_brand,
>    p_type,
>    p_size,
>    COUNT(DISTINCT ps_suppkey) AS supplier_cnt
> FROM
>    partsupp,
>    part
> WHERE
>    p_partkey = ps_partkey
>    AND p_brand <> ?
>    AND p_type NOT LIKE ?
>    AND p_size IN (?, ?, ?, ?, ?, ?, ?, ?)
>    AND ps_suppkey NOT IN
>    (
>       SELECT
>          s_suppkey
>       FROM
>          supplier
>       WHERE
>          s_comment LIKE '%Customer%Complaints%'
>    )
> GROUP BY
>    p_brand,
>    p_type,
>    p_size
> ORDER BY
>    supplier_cnt DESC,
>    p_brand,
>    p_type,
>    p_size{noformat}



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


[jira] [Created] (IGNITE-22111) [SQL] TPC-H q21 query hangs with sc=0.1

2024-04-25 Thread Nikita Sivkov (Jira)
Nikita Sivkov created IGNITE-22111:
--

 Summary: [SQL] TPC-H q21 query hangs with sc=0.1
 Key: IGNITE-22111
 URL: https://issues.apache.org/jira/browse/IGNITE-22111
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Nikita Sivkov


Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q16|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q16.java]
 query:

 
{noformat}
SELECT
   p_brand,
   p_type,
   p_size,
   COUNT(DISTINCT ps_suppkey) AS supplier_cnt
FROM
   partsupp,
   part
WHERE
   p_partkey = ps_partkey
   AND p_brand <> ?
   AND p_type NOT LIKE ?
   AND p_size IN (?, ?, ?, ?, ?, ?, ?, ?)
   AND ps_suppkey NOT IN
   (
      SELECT
         s_suppkey
      FROM
         supplier
      WHERE
         s_comment LIKE '%Customer%Complaints%'
   )
GROUP BY
   p_brand,
   p_type,
   p_size
ORDER BY
   supplier_cnt DESC,
   p_brand,
   p_type,
   p_size{noformat}



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


[jira] [Created] (IGNITE-22110) CLONE - [SQL] TPC-H q16 query hangs with sc=0.1

2024-04-25 Thread Nikita Sivkov (Jira)
Nikita Sivkov created IGNITE-22110:
--

 Summary: CLONE - [SQL] TPC-H q16 query hangs with sc=0.1
 Key: IGNITE-22110
 URL: https://issues.apache.org/jira/browse/IGNITE-22110
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Nikita Sivkov


Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q4|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q4.java]
 query:

 
{noformat}
SELECT
   o_orderpriority,
   COUNT(*) AS order_count
FROM
   orders
WHERE
   o_orderdate >= DATE ?
   AND o_orderdate < DATE ? + INTERVAL '3' MONTH
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem
      WHERE
         l_orderkey = o_orderkey
         AND l_commitdate < l_receiptdate
   )
GROUP BY
   o_orderpriority
ORDER BY
   o_orderpriority {noformat}



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


[jira] [Created] (IGNITE-22109) [SQL] TPC-H q4 query hangs with sc=0.1

2024-04-25 Thread Nikita Sivkov (Jira)
Nikita Sivkov created IGNITE-22109:
--

 Summary: [SQL] TPC-H q4 query hangs with sc=0.1
 Key: IGNITE-22109
 URL: https://issues.apache.org/jira/browse/IGNITE-22109
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Nikita Sivkov


Benchmark: 
[https://github.com/cmu-db/benchbase/tree/main/src/main/java/com/oltpbenchmark/benchmarks/tpch]
 
h1. Setup
 * 1 server node
 * TPC-H with scale factor = 0.1

h1. Steps
 # Start an Ignite node
 # Run benchbase with {{-s 1 --create=true --load=true --execute=false}} to 
preload data
 # Observe via the benchbase log that the data was successfully loaded
 # Run {{benchbase with -s 1 --create=false --load=false --execute=true}} to 
run the benchmark

h1. Expected result

The benchmark finishes after warmup + duration time
h1. Actual result

The benchmark hangs for hours on 
[Q4|https://github.com/cmu-db/benchbase/blob/main/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q4.java]
 query:

 
{noformat}
SELECT
   o_orderpriority,
   COUNT(*) AS order_count
FROM
   orders
WHERE
   o_orderdate >= DATE ?
   AND o_orderdate < DATE ? + INTERVAL '3' MONTH
   AND EXISTS
   (
      SELECT
         *
      FROM
         lineitem
      WHERE
         l_orderkey = o_orderkey
         AND l_commitdate < l_receiptdate
   )
GROUP BY
   o_orderpriority
ORDER BY
   o_orderpriority {noformat}



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


[jira] [Resolved] (IGNITE-18379) Sql. Insertions failed with "Replication is timed out".

2024-04-25 Thread Iurii Gerzhedovich (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-18379?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich resolved IGNITE-18379.
-
Resolution: Cannot Reproduce

> Sql. Insertions failed with "Replication is timed out".
> ---
>
> Key: IGNITE-18379
> URL: https://issues.apache.org/jira/browse/IGNITE-18379
> Project: Ignite
>  Issue Type: Improvement
>  Components: general
>Affects Versions: 3.0.0-beta1
>Reporter: Evgeny Stanilovsky
>Priority: Major
>  Labels: ignite-3
>
> Near sql will fail with :
> {noformat}
> org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
> TraceId:2768796b-10d7-4c8f-8faf-b86ae9779660 Error at: 
> (test_order_same_value.test_slow_ignore:72). Statement: Statement 
> [queries=[INSERT INTO integers SELECT * FROM integers], expected=OK]
>   at 
> org.apache.ignite.internal.sqllogic.SqlScriptRunner$Statement.execute(SqlScriptRunner.java:460)
>   at 
> org.apache.ignite.internal.sqllogic.SqlScriptRunner.run(SqlScriptRunner.java:153)
>   at 
> org.junit.jupiter.api.AssertTimeout.lambda$assertTimeoutPreemptively$2(AssertTimeout.java:102)
>   at 
> org.junit.jupiter.api.AssertTimeout.lambda$assertTimeoutPreemptively$4(AssertTimeout.java:138)
>   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>   at java.base/java.lang.Thread.run(Thread.java:829)
> Caused by: org.apache.ignite.tx.TransactionException: IGN-REP-3 
> TraceId:c3fb1ef4-14cd-4943-8f97-eb035d9f2ed6 IGN-REP-3 
> TraceId:c3fb1ef4-14cd-4943-8f97-eb035d9f2ed6 Replication is timed out 
> [replicaGrpId=6debc582-3ad7-4350-856d-f6bfb379c3ee_part_0]
>   at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>  Method)
>   at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>   at 
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>   at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
>   at org.apache.ignite.lang.IgniteException.wrap(IgniteException.java:277)
>   at org.apache.ignite.sql.Session.execute(Session.java:59)
>   at 
> org.apache.ignite.internal.sqllogic.SqlScriptRunner.sql(SqlScriptRunner.java:171)
>   at 
> org.apache.ignite.internal.sqllogic.SqlScriptRunner$Statement.execute(SqlScriptRunner.java:453)
>   ... 7 more
> Caused by: org.apache.ignite.tx.TransactionException: IGN-REP-3 
> TraceId:c3fb1ef4-14cd-4943-8f97-eb035d9f2ed6 Replication is timed out 
> [replicaGrpId=6debc582-3ad7-4350-856d-f6bfb379c3ee_part_0]
>   at 
> org.apache.ignite.internal.util.ExceptionUtils.lambda$withCause$0(ExceptionUtils.java:346)
>   at 
> org.apache.ignite.internal.util.ExceptionUtils.withCauseInternal(ExceptionUtils.java:429)
>   at 
> org.apache.ignite.internal.util.ExceptionUtils.withCause(ExceptionUtils.java:346)
>   at 
> org.apache.ignite.internal.tx.impl.IgniteAbstractTransactionImpl.commit(IgniteAbstractTransactionImpl.java:74)
>   at 
> org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$0(AsyncSqlCursorImpl.java:82)
>   at 
> java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
>   at 
> java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
>   at 
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>   at 
> java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.flush(AsyncRootNode.java:224)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.end(AsyncRootNode.java:134)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.tryEnd(ModifyNode.java:196)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.end(ModifyNode.java:154)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.TableScanNode.push(TableScanNode.java:200)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.TableScanNode$SubscriberImpl.lambda$onComplete$2(TableScanNode.java:271)
>   at 
> org.apache.ignite.internal.sql.engine.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:306)
>   at 
> org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:80)
>   ... 3 more
> Caused by: java.util.concurrent.ExecutionException: 
> 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which currently don't work in the spring 6 
environment(basically, where the API is broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom. We should use the lowest target 
possible.
 # If the spring module don't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.

  was:
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which currently don't work in the spring 6 
environment(basically, where the API is broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom. We should use the lowest target 
possible.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications because extensions are based on Spring 5. 
> Most of them 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which currently don't work in the spring 6 
environment(basically, where the API is broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom. We should use the lowest target 
possible.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.

  was:
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which currently don't work in the spring 6 
environment(basically, where the API is broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications because extensions are based on Spring 5. 
> Most of them should work fine in Spring 6 apps, but we may 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in the spring 6 
environment(basically, where the API was broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.

  was:
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in the spring 6 
environment(basically, where the API was broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications because extensions are based on Spring 5. 
> Most of them should work fine in Spring 6 apps, but we may find ourselves on 
> thin ice.
> For some 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which currently don't work in the spring 6 
environment(basically, where the API is broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.

  was:
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in the spring 6 
environment(basically, where the API was broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications because extensions are based on Spring 5. 
> Most of them should work fine in Spring 6 apps, but we may find ourselves on 
> thin ice.
> For some spring 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications because extensions are based on Spring 5. Most 
of them should work fine in Spring 6 apps, but we may find ourselves on thin 
ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring-based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in the spring 6 
environment(basically, where the API was broken).

Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. The project will support both options, spring 6 modules will be 
enabled only when JDK 17 is used. The main build will be with JDK 17 because it 
covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If the spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to the 
compatibility test, the module should be built only with JDK 17, otherwise, 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use a new versioning approach. Use the same major and 
minor for spring extension as the corresponding spring module uses. For 
example, If spring-session-core is updated to 3.2.2, the spring-session-ext 
version should be 3.2.x, where x is the revision number.
 # If we update the module to spring 6 and we need a fix for the previous 
module version(which is based on spring 5), we can apply the fix to the master 
first, create a release branch(checkout from the previous spring 5 release) and 
cherry-pick fix.

  was:
This epic is about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. Project will support both options, sprint 6 modules will be enabled 
only when jdk 17 is used. The main build will be with jdk 17, because it covers 
all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, the module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.
 # If we update module to spring 6 and we need fix for previous module 
version(which is based on spring 5), we can apply fix to master first, create 
release branch(checkout from previous spring 5 release) and cherry pick fix.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring Boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications because extensions are based on Spring 5. 
> Most of them should work fine in Spring 6 apps, but we may find ourselves on 
> thin ice with this approach.
> For some spring modules 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. Project will support both options, sprint 6 modules will be enabled 
only when jdk 17 is used. The main build will be with jdk 17, because it covers 
all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, the module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.
 # If we update module to spring 6 and we need fix for previous module 
version(which is based on spring 5), we can apply fix to master first, create 
release branch(checkout from previous spring 5 release) and cherry pick fix.

  was:
This epic is about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. Project will support both options, sprint 6 modules will be enabled 
only when jdk 17 is used. The main build will be with jdk 17, because it covers 
all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, this module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications, because extensions based on spring 5. 
> Actually, most of them should work fine in spring 6 apps, but we may find 
> ourselves on thin ice with this approach.
> For some spring modules like spring-data-commons and spring-session-core, 
> Spring has finished spring 5 support in Nov 2023. For other modules(and 
> spring-core) support ends in Aug 2024.
> The proposal is to upgrade spring based ignite extensions to spring 6. The 
> upgrade will affect modules 

[jira] [Updated] (IGNITE-22105) Add busy lock to ClusterStateStorage

2024-04-25 Thread Aleksandr Polovtsev (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksandr Polovtsev updated IGNITE-22105:
-
Description: {{ClusterStateStorage}} is a full-blown IgniteComponent, but 
doesn't have a busy lock that will signal the users that the component has been 
stopped. 

> Add busy lock to ClusterStateStorage
> 
>
> Key: IGNITE-22105
> URL: https://issues.apache.org/jira/browse/IGNITE-22105
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtsev
>Assignee: Aleksandr Polovtsev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> {{ClusterStateStorage}} is a full-blown IgniteComponent, but doesn't have a 
> busy lock that will signal the users that the component has been stopped. 



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


[jira] [Updated] (IGNITE-22105) Add busy lock to ClusterStateStorage

2024-04-25 Thread Aleksandr Polovtsev (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksandr Polovtsev updated IGNITE-22105:
-
Summary: Add busy lock to ClusterStateStorage  (was: Add logging for CMG 
state access)

> Add busy lock to ClusterStateStorage
> 
>
> Key: IGNITE-22105
> URL: https://issues.apache.org/jira/browse/IGNITE-22105
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtsev
>Assignee: Aleksandr Polovtsev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>




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


[jira] [Updated] (IGNITE-22091) CLI for disaster recovery: partition states

2024-04-25 Thread Philipp Shergalis (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philipp Shergalis updated IGNITE-22091:
---
Description: 
 
{code:java}
ignite cluster partition-states --cluster-url  [--local [--nodes 
] | --global] [--zones ] [--partitions ] 
[--plain] 
{code}
 

Output for local:
|Node name|Table name|Partition ID|State|
|node_name|TABLE_NAME|1|HEALTHY|

 

For global:
|Table name|Partition ID|State|
|TABLE_NAME|1|HEALTHY|

  was:
 
{code:java}
ignite cluster partition-states [--local [--nodes ] | --global] 
[--zones ] [--partitions ] [--plain] 
{code}
 

Output for local:
|Node name|Table name|Partition ID|State|
|node_name|TABLE_NAME|1|HEALTHY|

 

For global:
|Table name|Partition ID|State|
|TABLE_NAME|1|HEALTHY|


> CLI for disaster recovery: partition states
> ---
>
> Key: IGNITE-22091
> URL: https://issues.apache.org/jira/browse/IGNITE-22091
> Project: Ignite
>  Issue Type: Task
>Reporter: Philipp Shergalis
>Assignee: Philipp Shergalis
>Priority: Major
>  Labels: ignite-3
>
>  
> {code:java}
> ignite cluster partition-states --cluster-url  [--local [--nodes 
> ] | --global] [--zones ] [--partitions ] 
> [--plain] 
> {code}
>  
> Output for local:
> |Node name|Table name|Partition ID|State|
> |node_name|TABLE_NAME|1|HEALTHY|
>  
> For global:
> |Table name|Partition ID|State|
> |TABLE_NAME|1|HEALTHY|



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


[jira] [Updated] (IGNITE-21881) Deal with retry send metastorage raft commands after a timeout

2024-04-25 Thread Alexander Lapin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21881?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Lapin updated IGNITE-21881:
-
Description: 
As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.

As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.
h3. Upd#1

As discussed, it's required to detect whether InvokeCommand was already 
processed on a server and resend original response if true instead of 
reprocessing. First of all it's not only about invoke but about all 
non-idempotent commands like getAndPut, getAndPutAll, getAndRemove, etc. Worth 
mentioning though that it relates only to MS and maybe CMG but not Partitions: 
within partitions, tx protocol along with returning result from indexes instead 
of returning result from raft, protects us from non-idempotent command 
processing.

All in all following solution is expected to be implemented:
 * New interface NonIdempotentCommand is introduced with an id field.
 * All MS non-idempotent commands like InvokeCommand, GetAndRemoveCommand, etc 
implement aforementioned interface.
 * On the client side, an identifier is added to the command. Two options are 
possible here:
 ** It's possible to set id to the the command on command creation. Easiest 
way, but it will required extra effort on the server side to track command 
time. In that case it's possible to use LongCounter + nodeId as an id. 
 ** Or it's possible to adjust command with an id within retry loop, in that 
case we may use id as a "command time", of course, it also means that clock or 
System.currentTime<> should be used as id. I strongly believe that first option 
is better for now. 
 * On the server side, precisely, within MS state machine new 
nonIdempotentCommandCache is introduced commandId -> (commandResult, 
commandStartTime)
 * On each NonIdempotentCommand following logic should be implemented:
 ** As an initial step it's required to check whether there's a command with 
given id in the cache, if true just return cached result, without command 
reprocessing.
 ** If there's no given command in the cache, process it and populate the cache 
with the result.

Basically that's all. Both cache persistence and recovery on group restart and 
cache cleanup will be covered within separate tickets.

  was:
As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.

As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.
h3. Upd#1

As discussed, it's required to detect whether InvokeCommand was already 
processed on a server and resend original response if true instead of 
reprocessing. First of all it's not only about invoke but about all 
non-idempotent commands like getAndPut, getAndPutAll, getAndRemove, etc. Worth 
mentioning though that it relates only to MS and maybe CMG but not Partitions: 
within partitions, tx protocol along with returning result from indexes instead 
of returning result from raft, protects us from non-idempotent command 
processing.

All in all following solution is expected to be implemented:
 * New interface NonIdempotentCommand is introduced with an id field.
 * All MS non-idempotent commands like InvokeCommand, GetAndRemoveCommand, etc 
implement aforementioned interface NonIdempotentCommand.
 * On the client side, an identifier is added to the command. Two options are 
possible here:
 ** It's possible to set id to the the command on command creation. Easiest 
way, but it will required extra effort on the server side to track command 
time. In that case it's possible to use LongCounter + nodeId as an id. 
 ** Or it's possible to adjust command 

[jira] [Updated] (IGNITE-21881) Deal with retry send metastorage raft commands after a timeout

2024-04-25 Thread Alexander Lapin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21881?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Lapin updated IGNITE-21881:
-
Description: 
As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.

As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.
h3. Upd#1

As discussed, it's required to detect whether InvokeCommand was already 
processed on a server and resend original response if true instead of 
reprocessing. First of all it's not only about invoke but about all 
non-idempotent commands like getAndPut, getAndPutAll, getAndRemove, etc. Worth 
mentioning though that it relates only to MS and maybe CMG but not Partitions: 
within partitions, tx protocol along with returning result from indexes instead 
of returning result from raft, protects us from non-idempotent command 
processing.

All in all following solution is expected to be implemented:
 * New interface NonIdempotentCommand is introduced with an id field.
 * All MS non-idempotent commands like InvokeCommand, GetAndRemoveCommand, etc 
implement aforementioned interface NonIdempotentCommand.
 * On the client side, an identifier is added to the command. Two options are 
possible here:
 ** It's possible to set id to the the command on command creation. Easiest 
way, but it will required extra effort on the server side to track command 
time. In that case it's possible to use LongCounter + nodeId as an id. 
 ** Or it's possible to adjust command with an id within retry loop, in that 
case we may use id as a "command time", of course it also means that clock or 
System.currentTime<> should be used as id identifier. I strongly believe that 
first option is better for now. 
 * On the server side, precisely, within MS state machine new 
nonIdempotentCommandCache is introduced commandId -> (commandResult, 
commandStartTime)
 * On each NonIdempotentCommand following logic should be implemented:
 ** As an initial step it's required to check whether there's command with 
given id in the cache, if true just return cached result, without command 
reprocessing.
 ** If there's no given command in the cache, process it and populate the cache 
with the result.

Basically that's all. Both cache persistence and recovery on group restart and 
cache cleanup will be covered within separate tickets.

  was:
As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.

As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.
h3. Upd#1

As discussed, it's required to detect whether InvokeCommand was already 
processed on a server and resend original response if true instead of 
reprocessing. First of all it's not only about invoke but about all 
non-idempotent commands like getAndPut, getAndPutAll, getAndRemove, etc. Worth 
mentioning though that it relates only to MS and maybe CMG but not Partitions: 
within partitions, tx protocol along with returning result from indexes instead 
of returning result from raft, protects us from non-idempotent command 
processing.

All in all following solution is expected to be implemented.
 * New interface NonIdempotentCommand is introduced with an id field.
 * All MS non-idempotent commands like InvokeCommand, GetAndRemoveCommand, etc 
implement aforementioned interface NonIdempotentCommand.
 * On the client side, an identifier is added to the command. Two options are 
possible here:
 ** It's possible to set id to the the command on command creation. Easiest 
way, but it will required extra effort on the server side to track command 
time. In that case it's possible to use LongCounter + nodeId as an id. 
 ** Or it's 

[jira] [Commented] (IGNITE-21321) Review short options in CLI

2024-04-25 Thread Aleksandr (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-21321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17840711#comment-17840711
 ] 

Aleksandr commented on IGNITE-21321:


https://issues.apache.org/jira/browse/IGNITE-22108

> Review short options in CLI
> ---
>
> Key: IGNITE-21321
> URL: https://issues.apache.org/jira/browse/IGNITE-21321
> Project: Ignite
>  Issue Type: Improvement
>  Components: cli
>Reporter: Aleksandr
>Assignee: Aleksandr
>Priority: Major
>  Labels: ignite-3
>
> As the CLI grows we see that sometimes there are some clashes in short 
> options. We have to review all our short options and define the list of these 
> options. For example, -u means "user" or "url" depending on the context. This 
> is confusing. 
> As a result, I would expect the refactoring of short options and dropping 
> clashes. Also, the command descriptions should be reviewed and improved. The 
> CLI should be self-descriptive and there should be no need to open a web doc 
> in most cases.



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


[jira] [Assigned] (IGNITE-22108) Rename options in CLI

2024-04-25 Thread Aleksandr (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22108?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksandr reassigned IGNITE-22108:
--

Assignee: Aleksandr

> Rename options in CLI
> -
>
> Key: IGNITE-22108
> URL: https://issues.apache.org/jira/browse/IGNITE-22108
> Project: Ignite
>  Issue Type: Task
>  Components: cli
>Reporter: Aleksandr
>Assignee: Aleksandr
>Priority: Major
>  Labels: ignite-3
>
> The original CLI IEP offers both long and short options for some commands, 
> for example
> --cluster-endpoint-url localhost:8080 and  
> -u localhost:8080
> The CLI is becoming more complex than it was before. We add new commands and 
> new options constantly. Now we can observe some confusions in short options 
> across some commands.
> The proposal for CLI short options is to define the following conventions:
> - Use exactly one letter for the short options.
> - Do not overwrite the one if it is already defined for some command.
> - Use short options only for commands that will probably be used frequently. 
> Proposed short options: 
> -n for node-name
> -h for help
> -v for verbose
> -u for user
> -p for password
> All other short options should be dropped.
> Also some common options might be shorten:
> - cluster-endpoint-url, node-url → url
> - cluster-config → config
> - cluster-config-file → config-file
> - script-file → file
> - cluster-name, node-name → name
> - meta-storage-node → ms-node



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


[jira] [Updated] (IGNITE-22091) CLI for disaster recovery: partition states

2024-04-25 Thread Philipp Shergalis (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philipp Shergalis updated IGNITE-22091:
---
Epic Link: IGNITE-21140

> CLI for disaster recovery: partition states
> ---
>
> Key: IGNITE-22091
> URL: https://issues.apache.org/jira/browse/IGNITE-22091
> Project: Ignite
>  Issue Type: Task
>Reporter: Philipp Shergalis
>Assignee: Philipp Shergalis
>Priority: Major
>  Labels: ignite-3
>
>  
> {code:java}
> ignite cluster partition-states [--local [--nodes ] | --global] 
> [--zones ] [--partitions ] [--plain] 
> {code}
>  
> Output for local:
> |Node name|Table name|Partition ID|State|
> |node_name|TABLE_NAME|1|HEALTHY|
>  
> For global:
> |Table name|Partition ID|State|
> |TABLE_NAME|1|HEALTHY|



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


[jira] [Updated] (IGNITE-22091) CLI for disaster recovery: partition states

2024-04-25 Thread Philipp Shergalis (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philipp Shergalis updated IGNITE-22091:
---
Parent: (was: IGNITE-21298)
Issue Type: Task  (was: Sub-task)

> CLI for disaster recovery: partition states
> ---
>
> Key: IGNITE-22091
> URL: https://issues.apache.org/jira/browse/IGNITE-22091
> Project: Ignite
>  Issue Type: Task
>Reporter: Philipp Shergalis
>Assignee: Philipp Shergalis
>Priority: Major
>  Labels: ignite-3
>
>  
> {code:java}
> ignite cluster partition-states [--local [--nodes ] | --global] 
> [--zones ] [--partitions ] [--plain] 
> {code}
>  
> Output for local:
> |Node name|Table name|Partition ID|State|
> |node_name|TABLE_NAME|1|HEALTHY|
>  
> For global:
> |Table name|Partition ID|State|
> |TABLE_NAME|1|HEALTHY|



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


[jira] [Created] (IGNITE-22108) Rename options in CLI

2024-04-25 Thread Aleksandr (Jira)
Aleksandr created IGNITE-22108:
--

 Summary: Rename options in CLI
 Key: IGNITE-22108
 URL: https://issues.apache.org/jira/browse/IGNITE-22108
 Project: Ignite
  Issue Type: Task
  Components: cli
Reporter: Aleksandr


The original CLI IEP offers both long and short options for some commands, for 
example
--cluster-endpoint-url localhost:8080 and  
-u localhost:8080

The CLI is becoming more complex than it was before. We add new commands and 
new options constantly. Now we can observe some confusions in short options 
across some commands.


The proposal for CLI short options is to define the following conventions:
- Use exactly one letter for the short options.
- Do not overwrite the one if it is already defined for some command.
- Use short options only for commands that will probably be used frequently. 

Proposed short options: 
-n for node-name
-h for help
-v for verbose
-u for user
-p for password

All other short options should be dropped.

Also some common options might be shorten:
- cluster-endpoint-url, node-url → url
- cluster-config → config
- cluster-config-file → config-file
- script-file → file
- cluster-name, node-name → name
- meta-storage-node → ms-node




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


[jira] [Updated] (IGNITE-22091) CLI for disaster recovery: partition states

2024-04-25 Thread Philipp Shergalis (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philipp Shergalis updated IGNITE-22091:
---
Description: 
 
{code:java}
ignite cluster partition-states [--local [--nodes ] | --global] 
[--zones ] [--partitions ] [--plain] 
{code}
 

Output for local:
|Node name|Table name|Partition ID|State|
|node_name|TABLE_NAME|1|HEALTHY|

 

For global:
|Table name|Partition ID|State|
|TABLE_NAME|1|HEALTHY|

  was:
 
{code:java}
ignite cluster partition-states [--local [--nodes ] | --global] 
[--zones ] [--partitions ] [--plain] 
{code}
 

Output for local:
| |Node name|Table name|Partition ID|State| | |
| |node_name|TABLE_NAME|1|HEALTHY| | |

 

For global:
| |Table name|Partition ID|State| | |
| |TABLE_NAME|1|HEALTHY| | |


> CLI for disaster recovery: partition states
> ---
>
> Key: IGNITE-22091
> URL: https://issues.apache.org/jira/browse/IGNITE-22091
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Philipp Shergalis
>Assignee: Philipp Shergalis
>Priority: Major
>  Labels: ignite-3
>
>  
> {code:java}
> ignite cluster partition-states [--local [--nodes ] | --global] 
> [--zones ] [--partitions ] [--plain] 
> {code}
>  
> Output for local:
> |Node name|Table name|Partition ID|State|
> |node_name|TABLE_NAME|1|HEALTHY|
>  
> For global:
> |Table name|Partition ID|State|
> |TABLE_NAME|1|HEALTHY|



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


[jira] [Updated] (IGNITE-22091) CLI for disaster recovery: partition states

2024-04-25 Thread Philipp Shergalis (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philipp Shergalis updated IGNITE-22091:
---
Description: 
 
{code:java}
ignite cluster partition-states [--local [--nodes ] | --global] 
[--zones ] [--partitions ] [--plain] 
{code}
 

Output for local:
| |Node name|Table name|Partition ID|State| | |
| |node_name|TABLE_NAME|1|HEALTHY| | |

 

For global:
| |Table name|Partition ID|State| | |
| |TABLE_NAME|1|HEALTHY| | |

  was:ignite partition-states [--local [--nodes ] | --global] [--zones 
] [--partitions ]


> CLI for disaster recovery: partition states
> ---
>
> Key: IGNITE-22091
> URL: https://issues.apache.org/jira/browse/IGNITE-22091
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Philipp Shergalis
>Assignee: Philipp Shergalis
>Priority: Major
>  Labels: ignite-3
>
>  
> {code:java}
> ignite cluster partition-states [--local [--nodes ] | --global] 
> [--zones ] [--partitions ] [--plain] 
> {code}
>  
> Output for local:
> | |Node name|Table name|Partition ID|State| | |
> | |node_name|TABLE_NAME|1|HEALTHY| | |
>  
> For global:
> | |Table name|Partition ID|State| | |
> | |TABLE_NAME|1|HEALTHY| | |



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


[jira] [Assigned] (IGNITE-21661) Test scenario where all stable nodes are lost during a partially completed rebalance

2024-04-25 Thread Ivan Bessonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Bessonov reassigned IGNITE-21661:
--

Assignee: Ivan Bessonov

> Test scenario where all stable nodes are lost during a partially completed 
> rebalance
> 
>
> Key: IGNITE-21661
> URL: https://issues.apache.org/jira/browse/IGNITE-21661
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
>
> Following case is possible:
>  * Nodes A, B and C for a partition
>  * B and C go offline
>  * new distribution is A, D and E
>  * full state transfer from A to D is completed
>  * full state transfer from A to E is not
>  * A goes offline
>  * we perform "resetPartitions"
> Ideally, we should use D as a new leader somehow, but the bare minimum should 
> be a partition that is functional, maybe an empty one. We should test the case
>  
> This might be a good place to add more tests.



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


[jira] [Updated] (IGNITE-21661) Test scenario where all stable nodes are lost during a partially completed rebalance

2024-04-25 Thread Ivan Bessonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Bessonov updated IGNITE-21661:
---
Description: 
Following case is possible:
 * Nodes A, B and C for a partition
 * B and C go offline
 * new distribution is A, D and E
 * full state transfer from A to D is completed
 * full state transfer from A to E is not
 * A goes offline
 * we perform "resetPartitions"

Ideally, we should use D as a new leader somehow, but the bare minimum should 
be a partition that is functional, maybe an empty one. We should test the case

 

This might be a good place to add more tests.

  was:
Following case is possible:
 * Nodes A, B and C for a partition
 * B and C go offline
 * new distribution is A, D and E
 * full state transfer from A to D is completed
 * full state transfer from A to E is not
 * A goes offline
 * we perform "resetPartitions"

Ideally, we should use D as a new leader somehow, but the bare minimum should 
be a partition that is functional, maybe an empty one. We should test the case


> Test scenario where all stable nodes are lost during a partially completed 
> rebalance
> 
>
> Key: IGNITE-21661
> URL: https://issues.apache.org/jira/browse/IGNITE-21661
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
>
> Following case is possible:
>  * Nodes A, B and C for a partition
>  * B and C go offline
>  * new distribution is A, D and E
>  * full state transfer from A to D is completed
>  * full state transfer from A to E is not
>  * A goes offline
>  * we perform "resetPartitions"
> Ideally, we should use D as a new leader somehow, but the bare minimum should 
> be a partition that is functional, maybe an empty one. We should test the case
>  
> This might be a good place to add more tests.



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


[jira] [Updated] (IGNITE-21881) Deal with retry send metastorage raft commands after a timeout

2024-04-25 Thread Alexander Lapin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21881?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Lapin updated IGNITE-21881:
-
Description: 
As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.

As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.
h3. Upd#1

As discussed, it's required to detect whether InvokeCommand was already 
processed on a server and resend original response if true instead of 
reprocessing. First of all it's not only about invoke but about all 
non-idempotent commands like getAndPut, getAndPutAll, getAndRemove, etc. Worth 
mentioning though that it relates only to MS and maybe CMG but not Partitions: 
within partitions, tx protocol along with returning result from indexes instead 
of returning result from raft, protects us from non-idempotent command 
processing.

All in all following solution is expected to be implemented.
 * New interface NonIdempotentCommand is introduced with an id field.
 * All MS non-idempotent commands like InvokeCommand, GetAndRemoveCommand, etc 
implement aforementioned interface NonIdempotentCommand.
 * On the client side, an identifier is added to the command. Two options are 
possible here:
 ** It's possible to set id to the the command on command creation. Easiest 
way, but it will required extra effort on the server side to track command 
time. In that case it's possible to use LongCounter + nodeId as an id. 
 ** Or it's possible to adjust command with an id within retry loop, in that 
case we may use id as a "command time", of course it also means that clock or 
System.currentTime<> should be used as id identifier. I strongly believe that 
first option is better for now. 
 * On the server side, precisely, within MS state machine new 
nonIdempotentCommandCache is introduced commandId -> (commandResult, 
commandStartTime)
 * On each NonIdempotentCommand following logic should be implemented:
 ** As an initial step it's required to check whether there's command with 
given id in the cache, if true just return cached result, without command 
reprocessing.
 ** If there's no given command in the cache, process it and populate the cache 
with the result.

Basically that's all. Both cache persistence and recovery on group restart and 
cache cleanup will be covered within separate tickets.

  was:
As a result of the analysis and reproduction of IGNITE-21142, it was found that 
the metastorage raft command can be re-sent if it does not time out, which may 
not be good and lead to hidden negative consequences, such as in IGNITE-21142.

Here we need to find out the reasons for this decision (with re-try by timeout) 
and understand what to do next. I think we should use an infinite timeout.


> Deal with retry send metastorage raft commands after a timeout
> --
>
> Key: IGNITE-21881
> URL: https://issues.apache.org/jira/browse/IGNITE-21881
> Project: Ignite
>  Issue Type: Bug
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> As a result of the analysis and reproduction of IGNITE-21142, it was found 
> that the metastorage raft command can be re-sent if it does not time out, 
> which may not be good and lead to hidden negative consequences, such as in 
> IGNITE-21142.
> Here we need to find out the reasons for this decision (with re-try by 
> timeout) and understand what to do next. I think we should use an infinite 
> timeout.
> As a result of the analysis and reproduction of IGNITE-21142, it was found 
> that the metastorage raft command can be re-sent if it does not time out, 
> which may not be good and lead to hidden negative consequences, such as in 
> IGNITE-21142.
> Here we need to find out the reasons for this decision (with re-try by 
> timeout) and understand what to do next. I think we should use an infinite 
> timeout.
> h3. Upd#1
> As discussed, it's required to detect whether InvokeCommand was already 
> processed on a server and resend original response if true instead of 
> reprocessing. First of all it's not only about invoke but about all 
> non-idempotent commands like getAndPut, 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build still will be 
available. Project will support both options, sprint 6 modules will be enabled 
only when jdk 17 is used. The main build will be with jdk 17, because it covers 
all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, this module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.

  was:
This epic is about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build option still will 
be available. Project will support both options, sprint 6 modules will be 
enabled only when jdk 17 is used, so in the end the main build will be with jdk 
17, because it covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, this module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications, because extensions based on spring 5. 
> Actually, most of them should work fine in spring 6 apps, but we may find 
> ourselves on thin ice with this approach.
> For some spring modules like spring-data-commons and spring-session-core, 
> Spring has finished spring 5 support in Nov 2023. For other modules(and 
> spring-core) support ends in Aug 2024.
> The proposal is to upgrade spring based ignite extensions to spring 6. The 
> upgrade will affect modules which won't work in spring 6 
> environment(basically, where api was broken).
> Taking into consideration that spring 6 comes with JDK 17+ baseline the plan 
> is the following:
>  # Add ignite extensions 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This epic is about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build option still will 
be available. Project will support both options, sprint 6 modules will be 
enabled only when jdk 17 is used, so in the end the main build will be with jdk 
17, because it covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, this module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.

  was:
This is epic about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build option still will 
be available. Project will support both options, sprint 6 modules will be 
enabled only when jdk 17 is used, so in the end the main build will be with jdk 
17, because it covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, this module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This epic is about spring 6 support for ignite extensions.
> Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications, because extensions based on spring 5. 
> Actually, most of them should work fine in spring 6 apps, but we may find 
> ourselves on thin ice with this approach.
> For some spring modules like spring-data-commons and spring-session-core, 
> Spring has finished spring 5 support in Nov 2023. For other modules(and 
> spring-core) support ends in Aug 2024.
> The proposal is to upgrade spring based ignite extensions to spring 6. The 
> upgrade will affect modules which won't work in spring 6 
> environment(basically, where api was broken).
> Taking into consideration that spring 6 comes with JDK 17+ baseline the plan 
> is the following:
>  # 

[jira] [Updated] (IGNITE-22096) Spring 6 support for ignite spring extensions

2024-04-25 Thread Nusrat Shakarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nusrat Shakarov updated IGNITE-22096:
-
Description: 
This is epic about spring 6 support for ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build option still will 
be available. Project will support both options, sprint 6 modules will be 
enabled only when jdk 17 is used, so in the end the main build will be with jdk 
17, because it covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, this module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.

  was:
This is epic about spring 6 support in ignite extensions.

Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
extensions in their applications, because extensions based on spring 5. 
Actually, most of them should work fine in spring 6 apps, but we may find 
ourselves on thin ice with this approach.

For some spring modules like spring-data-commons and spring-session-core, 
Spring has finished spring 5 support in Nov 2023. For other modules(and 
spring-core) support ends in Aug 2024.

The proposal is to upgrade spring based ignite extensions to spring 6. The 
upgrade will affect modules which won't work in spring 6 environment(basically, 
where api was broken).
Taking into consideration that spring 6 comes with JDK 17+ baseline the plan is 
the following:
 # Add ignite extensions build on TC with JDK 17. JDK 8 build option still will 
be available. Project will support both options, sprint 6 modules will be 
enabled only when jdk 17 is used, so in the end the main build will be with jdk 
17, because it covers all modules.
 # Use maven.compiler.release=8 for parent pom.
 # If spring module won't work in spring 6 env, upgrade it with spring 6 
dependencies and set maven.compiler.release=17.
 # Otherwise, make sure that spring 6 is covered with compatibility tests(we 
have such at least for cache-ext and tx-ext). If spring 6 is added to 
compatibility test, this module should be build only with JDK 17, otherwise 
tests will fail. But maven.compiler.release can be 8.
 # For updated modules use new versioning approach. Use the same major and 
minor for spring extension as corresponding spring module uses. For example, If 
spring-session-core is updated to 3.2.2, spring-session-ext version should be 
3.2.x, where x is revision number.


> Spring 6 support for ignite spring extensions
> -
>
> Key: IGNITE-22096
> URL: https://issues.apache.org/jira/browse/IGNITE-22096
> Project: Ignite
>  Issue Type: Epic
>Reporter: Nusrat Shakarov
>Assignee: Nusrat Shakarov
>Priority: Major
>
> This is epic about spring 6 support for ignite extensions.
> Spring boot 3 and Spring 6 users may have difficulties using ignite spring 
> extensions in their applications, because extensions based on spring 5. 
> Actually, most of them should work fine in spring 6 apps, but we may find 
> ourselves on thin ice with this approach.
> For some spring modules like spring-data-commons and spring-session-core, 
> Spring has finished spring 5 support in Nov 2023. For other modules(and 
> spring-core) support ends in Aug 2024.
> The proposal is to upgrade spring based ignite extensions to spring 6. The 
> upgrade will affect modules which won't work in spring 6 
> environment(basically, where api was broken).
> Taking into consideration that spring 6 comes with JDK 17+ baseline the plan 
> is the following:
>  # 

[jira] [Updated] (IGNITE-21953) Cover SQL E021-01(Character string types. CHARACTER data type) feature by tests

2024-04-25 Thread Iurii Gerzhedovich (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21953?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich updated IGNITE-21953:

Description: 
We don't have at all any tests for E021-01(Character string types. CHARACTER 
data type) SQL feature.
Let's cover it and create tickets to fix them in case find any issues related 
to the covered area.

  was:
We don't have at all any tests for E021-01(Character string types. CHARACTER 
data type) SQL feature.
Let's cover it and create tickets to fix them in case find any issues related 
to the covered area


> Cover SQL E021-01(Character string types. CHARACTER data type) feature by 
> tests
> ---
>
> Key: IGNITE-21953
> URL: https://issues.apache.org/jira/browse/IGNITE-21953
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Assignee: Iurii Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We don't have at all any tests for E021-01(Character string types. CHARACTER 
> data type) SQL feature.
> Let's cover it and create tickets to fix them in case find any issues related 
> to the covered area.



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


[jira] [Updated] (IGNITE-22107) Properly encapsulate partition meta

2024-04-25 Thread Ivan Bessonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Bessonov updated IGNITE-22107:
---
Description: 
{{PartitionMeta}} and {{PartitionMetaIo}} leak specific implementation details, 
specifically - all fields except for {{{}pageCount{}}}. This breaks 
encapsulation and makes {{page-memory}} module code non-reusable.

I propose splitting meta into 2 parts - abstract meta, that would only hold 
page count, and specific meta that will be located in a different module, close 
to the implementation.

In this case, we would have to pass meta IO as parameters into methods like 
{{{}PartitionMetaManager#readOrCreateMeta{}}}, and create a getter for IO in 
{{AbstractPartitionMeta}} class itself, but that's a necessary sacrifice. Some 
other places will be affected as well, mostly tests.

  was:
`PartitionMeta` and `PartitionMetaIo` leak specific implementation details, 
specifically - all fields except for `pageCount`. This breaks encapsulation and 
makes `page-memory` module code non-reusable.

I propose splitting meta into 2 parts - abstract meta, that would only hold 
page count, and specific meta that will be located in a different module, close 
to the implementation.

In this case, we would have to pass meta IO as parameters into methods like 
`PartitionMetaManager#readOrCreateMeta`, and create a getter for IO in 
`AbstractPartitionMeta` class itself, but that's a necessary sacrifice.


> Properly encapsulate partition meta
> ---
>
> Key: IGNITE-22107
> URL: https://issues.apache.org/jira/browse/IGNITE-22107
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> {{PartitionMeta}} and {{PartitionMetaIo}} leak specific implementation 
> details, specifically - all fields except for {{{}pageCount{}}}. This breaks 
> encapsulation and makes {{page-memory}} module code non-reusable.
> I propose splitting meta into 2 parts - abstract meta, that would only hold 
> page count, and specific meta that will be located in a different module, 
> close to the implementation.
> In this case, we would have to pass meta IO as parameters into methods like 
> {{{}PartitionMetaManager#readOrCreateMeta{}}}, and create a getter for IO in 
> {{AbstractPartitionMeta}} class itself, but that's a necessary sacrifice. 
> Some other places will be affected as well, mostly tests.



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


[jira] [Created] (IGNITE-22107) Properly encapsulate partition meta

2024-04-25 Thread Ivan Bessonov (Jira)
Ivan Bessonov created IGNITE-22107:
--

 Summary: Properly encapsulate partition meta
 Key: IGNITE-22107
 URL: https://issues.apache.org/jira/browse/IGNITE-22107
 Project: Ignite
  Issue Type: Improvement
Reporter: Ivan Bessonov
 Fix For: 3.0.0-beta2


`PartitionMeta` and `PartitionMetaIo` leak specific implementation details, 
specifically - all fields except for `pageCount`. This breaks encapsulation and 
makes `page-memory` module code non-reusable.

I propose splitting meta into 2 parts - abstract meta, that would only hold 
page count, and specific meta that will be located in a different module, close 
to the implementation.

In this case, we would have to pass meta IO as parameters into methods like 
`PartitionMetaManager#readOrCreateMeta`, and create a getter for IO in 
`AbstractPartitionMeta` class itself, but that's a necessary sacrifice.



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


[jira] [Resolved] (IGNITE-21434) Fail user write requests for non-available partitions

2024-04-25 Thread Ivan Bessonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-21434?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Bessonov resolved IGNITE-21434.

Resolution: Won't Fix

This insert doesn't hang indefinitely anymore, it fails with primary replica 
awaiting. I'm closing the issue as "Won't Fix"

> Fail user write requests for non-available partitions
> -
>
> Key: IGNITE-21434
> URL: https://issues.apache.org/jira/browse/IGNITE-21434
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
>
> Currently, {{INSERT INTO test VALUES(%d, %d);}} just hands indefinitely, 
> which is not what you would expect. We should either fail the request 
> immediately if there's no majority, or return a replication timeout 
> exception, for example.



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


[jira] [Updated] (IGNITE-22100) Sql. Incorrect support of character set for CHAR data type

2024-04-25 Thread Iurii Gerzhedovich (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22100?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich updated IGNITE-22100:

Description: 
Seems the character set doesn't apply to column type.

Need to investigate the reason and fix it

For example:
{code:java}
// create table with LATIN-1 charset column
CREATE TABLE t_latin1 (c1 CHARACTER(3) CHARACTER SET LATIN1);

// try to insert Unicode symbol into he table
INSERT INTO t_latin1 VALUES(''); -- no any error

// select from the table also return the value
SELECT * from t_latin1;
{code}
 

 

  was:
Seems the character set doesn't apply to column type.

Need to investigate the reason and fix it

For example:

 
{code:java}
// create table with LATIN-1 charset column
CREATE TABLE t_latin1 (c1 CHARACTER(3) CHARACTER SET LATIN1);

// try to insert Unicode symbol into he table
INSERT INTO t_latin1 VALUES(''); -- no any error

// select from the table also return the value
SELECT * from t_latin1;
{code}
 

 


> Sql. Incorrect support of character set for CHAR data type
> --
>
> Key: IGNITE-22100
> URL: https://issues.apache.org/jira/browse/IGNITE-22100
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> Seems the character set doesn't apply to column type.
> Need to investigate the reason and fix it
> For example:
> {code:java}
> // create table with LATIN-1 charset column
> CREATE TABLE t_latin1 (c1 CHARACTER(3) CHARACTER SET LATIN1);
> // try to insert Unicode symbol into he table
> INSERT INTO t_latin1 VALUES(''); -- no any error
> // select from the table also return the value
> SELECT * from t_latin1;
> {code}
>  
>  



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


[jira] [Updated] (IGNITE-22098) Sql. Internal error (NPE) during provide incorrect charset

2024-04-25 Thread Iurii Gerzhedovich (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich updated IGNITE-22098:

Labels: ignite-3  (was: )

> Sql. Internal error (NPE) during provide incorrect charset
> --
>
> Key: IGNITE-22098
> URL: https://issues.apache.org/jira/browse/IGNITE-22098
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> In the case provided incorrect charset name for type will be thrown internal 
> error which NPE causes.
> Let's provide user-friendly errors for such cases.
> Use incorrect charset name:
> {code:java}
> CREATE TABLE test (c1 CHAR CHARACTER SET UTF_8);{code}
> Result:
> {code:java}
> Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535 
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
>     at 
> java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
>     at 
> org.apache.ignite.internal.util.ExceptionUtils$1.copy(ExceptionUtils.java:765)
>     at 
> org.apache.ignite.internal.util.ExceptionUtils$ExceptionFactory.createCopy(ExceptionUtils.java:699)
>     at 
> org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:525)
>     at 
> org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCauseInternal(ExceptionUtils.java:634)
>     at 
> org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:476)
>     at 
> org.apache.ignite.internal.sql.api.IgniteSqlImpl.execute(IgniteSqlImpl.java:206)
>     at 
> org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.lambda$execute$1(PublicApiThreadingIgniteSql.java:65)
>     at 
> org.apache.ignite.internal.thread.PublicApiThreading.executeWithRole(PublicApiThreading.java:144)
>     at 
> org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation(PublicApiThreading.java:102)
>     at 
> org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.execute(PublicApiThreadingIgniteSql.java:65)
>     at 
> org.apache.ignite.internal.sql.sqllogic.ScriptContext.executeQuery(ScriptContext.java:85)
>     at 
> org.apache.ignite.internal.sql.sqllogic.Statement.execute(Statement.java:110)
>     ... 5 more
> Caused by: java.util.concurrent.CompletionException: 
> org.apache.ignite.sql.SqlException: IGN-CMN-65535 
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
>     at 
> org.apache.ignite.internal.sql.api.IgniteSqlImpl.lambda$executeAsyncInternal$5(IgniteSqlImpl.java:379)
>     at 
> java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
>     at 
> java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
>     at 
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
>     at 
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
>     at 
> org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
>     ... 3 more
> Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535 
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
>     at 
> org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:61)
>     ... 9 more
> Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
>     at 
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:118)
>     at 
> org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:51)
>     ... 9 more
> Caused by: java.lang.NullPointerException: UTF_8
>     at java.base/java.util.Objects.requireNonNull(Objects.java:233)
>     at 
> org.apache.calcite.sql.SqlBasicTypeNameSpec.deriveType(SqlBasicTypeNameSpec.java:220)
>     at 
> org.apache.calcite.sql.SqlDataTypeSpec.deriveType(SqlDataTypeSpec.java:234)
>     at 
> org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.convert(IgnitePlanner.java:229)
>     at 
> org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convertCreateTable(DdlSqlToCommandConverter.java:334)
>     at 
> org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convert(DdlSqlToCommandConverter.java:182)
>     at 
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareDdl(PrepareServiceImpl.java:245)
>     at 
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync0(PrepareServiceImpl.java:230)
>     at 
> 

[jira] [Updated] (IGNITE-22100) Sql. Incorrect support of character set for CHAR data type

2024-04-25 Thread Iurii Gerzhedovich (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22100?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich updated IGNITE-22100:

Labels: ignite-3  (was: )

> Sql. Incorrect support of character set for CHAR data type
> --
>
> Key: IGNITE-22100
> URL: https://issues.apache.org/jira/browse/IGNITE-22100
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> Seems the character set doesn't apply to column type.
> Need to investigate the reason and fix it
> For example:
>  
> {code:java}
> // create table with LATIN-1 charset column
> CREATE TABLE t_latin1 (c1 CHARACTER(3) CHARACTER SET LATIN1);
> // try to insert Unicode symbol into he table
> INSERT INTO t_latin1 VALUES(''); -- no any error
> // select from the table also return the value
> SELECT * from t_latin1;
> {code}
>  
>  



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


[jira] [Updated] (IGNITE-22098) Sql. Internal error (NPE) during provide incorrect charset

2024-04-25 Thread Iurii Gerzhedovich (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich updated IGNITE-22098:

Description: 
In the case provided incorrect charset name for type will be thrown internal 
error which NPE causes.
Let's provide user-friendly errors for such cases.

Use incorrect charset name:
{code:java}
CREATE TABLE test (c1 CHAR CHARACTER SET UTF_8);{code}
Result:
{code:java}
Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535 
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
    at 
java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
    at 
org.apache.ignite.internal.util.ExceptionUtils$1.copy(ExceptionUtils.java:765)
    at 
org.apache.ignite.internal.util.ExceptionUtils$ExceptionFactory.createCopy(ExceptionUtils.java:699)
    at 
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:525)
    at 
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCauseInternal(ExceptionUtils.java:634)
    at 
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:476)
    at 
org.apache.ignite.internal.sql.api.IgniteSqlImpl.execute(IgniteSqlImpl.java:206)
    at 
org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.lambda$execute$1(PublicApiThreadingIgniteSql.java:65)
    at 
org.apache.ignite.internal.thread.PublicApiThreading.executeWithRole(PublicApiThreading.java:144)
    at 
org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation(PublicApiThreading.java:102)
    at 
org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.execute(PublicApiThreadingIgniteSql.java:65)
    at 
org.apache.ignite.internal.sql.sqllogic.ScriptContext.executeQuery(ScriptContext.java:85)
    at 
org.apache.ignite.internal.sql.sqllogic.Statement.execute(Statement.java:110)
    ... 5 more
Caused by: java.util.concurrent.CompletionException: 
org.apache.ignite.sql.SqlException: IGN-CMN-65535 
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
    at 
org.apache.ignite.internal.sql.api.IgniteSqlImpl.lambda$executeAsyncInternal$5(IgniteSqlImpl.java:379)
    at 
java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
    at 
java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
    at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
    at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
    at 
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
    ... 3 more
Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535 
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
    at 
org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:61)
    ... 9 more
Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
    at 
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:118)
    at 
org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:51)
    ... 9 more
Caused by: java.lang.NullPointerException: UTF_8
    at java.base/java.util.Objects.requireNonNull(Objects.java:233)
    at 
org.apache.calcite.sql.SqlBasicTypeNameSpec.deriveType(SqlBasicTypeNameSpec.java:220)
    at 
org.apache.calcite.sql.SqlDataTypeSpec.deriveType(SqlDataTypeSpec.java:234)
    at 
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.convert(IgnitePlanner.java:229)
    at 
org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convertCreateTable(DdlSqlToCommandConverter.java:334)
    at 
org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convert(DdlSqlToCommandConverter.java:182)
    at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareDdl(PrepareServiceImpl.java:245)
    at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync0(PrepareServiceImpl.java:230)
    at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync(PrepareServiceImpl.java:210)
    at 
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$executeParsedStatement$16(SqlQueryProcessor.java:648)
    at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
    at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
    at 
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.executeParsedStatement(SqlQueryProcessor.java:636)
    at 
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$querySingle$10(SqlQueryProcessor.java:567)
    at 

[jira] [Created] (IGNITE-22106) Sql. Incorrect comparison CHAR data type in our own execution algorithms

2024-04-25 Thread Iurii Gerzhedovich (Jira)
Iurii Gerzhedovich created IGNITE-22106:
---

 Summary: Sql. Incorrect comparison CHAR data type in our own 
execution algorithms
 Key: IGNITE-22106
 URL: https://issues.apache.org/jira/browse/IGNITE-22106
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Iurii Gerzhedovich


SQL standard says:
{code:java}
The comparison of two character string expressions depends on the collation 
used for the comparison (see
Subclause 9.15, “Collation determination”). When values of unequal length are 
compared, if the collation for
the comparison has the NO PAD characteristic and the shorter value is equal to 
some prefix of the longer value,
then the shorter value is considered less than the longer value. If the 
collation for the comparison has the PAD
SPACE characteristic, for the purposes of the comparison, the shorter value is 
effectively extended to the length
of the longer by concatenation of s on the right.{code}

The rule works for simple cases like 
{code:java}
SELECT 'a' = 'a' AS t1, 'a' = 'b' AS t2, 'a' = 'a ' AS t3, 'a' = ' a' AS 
t4;{code}
But doesn't work for internal algorithms that uses comparison, for example in 
JOIN
{code:java}
CREATE TABLE t2(c1 CHAR(3));
INSERT INTO t2 VALUES ('123'),('2'),('1'); 

CREATE TABLE t1(c1 CHAR(5));
INSERT INTO t1 VALUES('1 '), (' 2');

SELECT t1.c1 || t2.c1 FROM t1 join t2  ON (t1.c1=t2.c1); 
-- no rows return right now
-- expected result is one row - 11{code}
 

 



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


[jira] [Updated] (IGNITE-22100) Sql. Incorrect support of character set for CHAR data type

2024-04-25 Thread Iurii Gerzhedovich (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22100?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich updated IGNITE-22100:

Component/s: sql

> Sql. Incorrect support of character set for CHAR data type
> --
>
> Key: IGNITE-22100
> URL: https://issues.apache.org/jira/browse/IGNITE-22100
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Priority: Major
>
> Seems the character set doesn't apply to column type.
> Need to investigate the reason and fix it
> For example:
>  
> {code:java}
> // create table with LATIN-1 charset column
> CREATE TABLE t_latin1 (c1 CHARACTER(3) CHARACTER SET LATIN1);
> // try to insert Unicode symbol into he table
> INSERT INTO t_latin1 VALUES(''); -- no any error
> // select from the table also return the value
> SELECT * from t_latin1;
> {code}
>  
>  



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


[jira] [Updated] (IGNITE-22105) Add logging for CMG state access

2024-04-25 Thread Aleksandr Polovtsev (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-22105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksandr Polovtsev updated IGNITE-22105:
-
Fix Version/s: 3.0.0-beta2

> Add logging for CMG state access
> 
>
> Key: IGNITE-22105
> URL: https://issues.apache.org/jira/browse/IGNITE-22105
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtsev
>Assignee: Aleksandr Polovtsev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>




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


[jira] [Created] (IGNITE-22105) Add logging for CMG state access

2024-04-25 Thread Aleksandr Polovtsev (Jira)
Aleksandr Polovtsev created IGNITE-22105:


 Summary: Add logging for CMG state access
 Key: IGNITE-22105
 URL: https://issues.apache.org/jira/browse/IGNITE-22105
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksandr Polovtsev
Assignee: Aleksandr Polovtsev






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


[jira] [Comment Edited] (IGNITE-21859) Causality token stays 0 for default zone

2024-04-25 Thread Konstantin Orlov (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-21859?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17840661#comment-17840661
 ] 

Konstantin Orlov edited comment on IGNITE-21859 at 4/25/24 6:13 AM:


Gave it a second thought, and it looks like we can address the issue on 
catalog's side.

[~amashenkov], [~maliev], folks, do a review please


was (Author: korlov):
Gave it a second thought, and it looks like we can address the issue on 
catalogs side.

[~amashenkov], [~maliev], folks, do a review please

> Causality token stays 0 for default zone
> 
>
> Key: IGNITE-21859
> URL: https://issues.apache.org/jira/browse/IGNITE-21859
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 3.0.0-beta1
>Reporter: Ivan Zlenko
>Assignee: Konstantin Orlov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We have a problem where if no alter or other action was performed on default 
> zone causality token in CatalogZoneDescriptor will remain 0. 
> It will cause an error on any attempt of rebalacing any tables in that zone:
> {code}
> [2024-03-27T14:27:22,231][ERROR][%icbt_tacwdws_0%rebalance-scheduler-18][DistributionZoneRebalanceEngine]
>  Failed to update stable keys for tables [[TESTTABLE]]
> {code}
> If we will add stacktrace to output we will get following:
> {code}
> [2024-03-27T14:27:22,231][ERROR][%icbt_tacwdws_0%rebalance-scheduler-13][DistributionZoneRebalanceEngine]
>  CATCH, 
>  java.lang.IllegalArgumentException: causalityToken must be greater then zero 
> [causalityToken=0"
>   at 
> org.apache.ignite.internal.distributionzones.causalitydatanodes.CausalityDataNodesEngine.dataNodes(CausalityDataNodesEngine.java:139)
>  ~[ignite-distribution-zones-9.0.127-SNAPSHOT.jar:?]
>   at 
> org.apache.ignite.internal.distributionzones.DistributionZoneManager.dataNodes(DistributionZoneManager.java:324)
>  ~[ignite-distribution-zones-9.0.127-SNAPSHOT.jar:?]
>   at 
> org.apache.ignite.internal.distributionzones.rebalance.DistributionZoneRebalanceEngine.calculateAssignments(DistributionZoneRebalanceEngine.java:346)
>  ~[ignite-distribution-zones-9.0.127-SNAPSHOT.jar:?]
>   at 
> org.apache.ignite.internal.distributionzones.rebalance.RebalanceRaftGroupEventsListener.doStableKeySwitch(RebalanceRaftGroupEventsListener.java:408)
>  ~[ignite-distribution-zones-9.0.127-SNAPSHOT.jar:?]
>   at 
> org.apache.ignite.internal.distributionzones.rebalance.DistributionZoneRebalanceEngine$3.lambda$onUpdate$0(DistributionZoneRebalanceEngine.java:294)
>  ~[ignite-distribution-zones-9.0.127-SNAPSHOT.jar:?]
>   at java.base/java.util.HashMap.forEach(HashMap.java:1337) ~[?:?]
>   at 
> org.apache.ignite.internal.distributionzones.rebalance.DistributionZoneRebalanceEngine$3.lambda$onUpdate$1(DistributionZoneRebalanceEngine.java:293)
>  ~[ignite-distribution-zones-9.0.127-SNAPSHOT.jar:?]
>   at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>  [?:?]
>   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 
> [?:?]
>   at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
>  [?:?]
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>  [?:?]
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>  [?:?]
>   at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
> {code}
> The workaround is creating a zone and specifying this zone to table. 
> Also wouldn't be a bad idea to print stacktrace for  "Failed to update stable 
> keys for tables" at least on DEBUG log level. 



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