[jira] [Updated] (IGNITE-24274) Sql. Inbox does not handle closing properly

2025-01-21 Thread Maksim Zhuravkov (Jira)


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

Maksim Zhuravkov updated IGNITE-24274:
--
Summary: Sql. Inbox does not handle closing properly  (was: Sql. Inbox push 
throws AssertionError when called after Inbox close)

> Sql. Inbox does not handle closing properly
> ---
>
> Key: IGNITE-24274
> URL: https://issues.apache.org/jira/browse/IGNITE-24274
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
>
> Inbox operator does not handle closing properly, because it is possible to 
> invoke Inbox close, then to get a queued call to Inbox doPush and get an 
> AssertionError.
> Can be reproduced by ItSqlSynchronousApiTest cancelLongRunningStatement that 
> cancels a DML query during execution. 



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


[jira] [Updated] (IGNITE-24274) Sql. Inbox does not handle closing properly

2025-01-21 Thread Maksim Zhuravkov (Jira)


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

Maksim Zhuravkov updated IGNITE-24274:
--
Description: 
Inbox operator does not handle closing properly, because it is possible to 
invoke Inbox close, then to get a queued call to Inbox doPush that eventually 
runs some operator's logic.



  was:
Inbox operator does not handle closing properly, because it is possible to 
invoke Inbox close, then to get a queued call to Inbox doPush and get an 
AssertionError.

Can be reproduced by ItSqlSynchronousApiTest cancelLongRunningStatement that 
cancels a DML query during execution. 



> Sql. Inbox does not handle closing properly
> ---
>
> Key: IGNITE-24274
> URL: https://issues.apache.org/jira/browse/IGNITE-24274
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
>
> Inbox operator does not handle closing properly, because it is possible to 
> invoke Inbox close, then to get a queued call to Inbox doPush that eventually 
> runs some operator's logic.



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


[jira] [Assigned] (IGNITE-24215) Improve internal Catalog API

2025-01-21 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov reassigned IGNITE-24215:
-

Assignee: Andrey Mashenkov

> Improve internal Catalog API
> 
>
> Key: IGNITE-24215
> URL: https://issues.apache.org/jira/browse/IGNITE-24215
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Andrey Mashenkov
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3, tech-debt
>
> On one hand, `Catalog` class is an internal container for descriptors and 
> wasn't designed to be used directly outside the module.
> On the other hand `CatalogService` interface has a bunch of similar methods 
> for accessing catalog internals.
> Let's disclose `Catalog` class: describe it in README.md of `ignite-catalog` 
> module, write javadocs and maybe add some shortcut method (e.g. 
> `table(schemaName, tableName)`)
> Let's remove all the methods, which returns `Catalog` class internals, from 
> `CatalogService`.
> So, `CatalogService` should have few methods that answer the question: 
> * which catalog version is actual at point-in-time
> * which catalog version is earliest/latest
> * when catalog is initialized/catalog version is ready by returning a future.
> * gets `Catalog` snapshot for version/point-in-time



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


[jira] [Assigned] (IGNITE-24267) Reduce heap footprint for Lock manager

2025-01-21 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov reassigned IGNITE-24267:
--

Assignee: Vladislav Pyatkov

> Reduce heap footprint for Lock manager
> --
>
> Key: IGNITE-24267
> URL: https://issues.apache.org/jira/browse/IGNITE-24267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>




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


[jira] [Created] (IGNITE-24267) Reduce heap footprint for Lock manager

2025-01-21 Thread Vladislav Pyatkov (Jira)
Vladislav Pyatkov created IGNITE-24267:
--

 Summary: Reduce heap footprint for Lock manager
 Key: IGNITE-24267
 URL: https://issues.apache.org/jira/browse/IGNITE-24267
 Project: Ignite
  Issue Type: Improvement
Reporter: Vladislav Pyatkov






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


[jira] [Updated] (IGNITE-24267) Reduce heap footprint for Lock manager

2025-01-21 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-24267:
---
Description: 
h3. Motivation
We preallocate much memory on the lock manager initialization.
{code}
locks = new ConcurrentHashMap<>(lockMapSize);

LockState[] tmp = new LockState[rawSlotsMaxSize];
for (int i = 0; i < tmp.length; i++) {
LockState lockState = new LockState();
if (i < lockMapSize) {
empty.add(lockState);
}
tmp[i] = lockState;
}

slots = tmp; // Atomic init.
{code}

> Reduce heap footprint for Lock manager
> --
>
> Key: IGNITE-24267
> URL: https://issues.apache.org/jira/browse/IGNITE-24267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>
> h3. Motivation
> We preallocate much memory on the lock manager initialization.
> {code}
> locks = new ConcurrentHashMap<>(lockMapSize);
> LockState[] tmp = new LockState[rawSlotsMaxSize];
> for (int i = 0; i < tmp.length; i++) {
> LockState lockState = new LockState();
> if (i < lockMapSize) {
> empty.add(lockState);
> }
> tmp[i] = lockState;
> }
> slots = tmp; // Atomic init.
> {code}



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


[jira] [Created] (IGNITE-24268) Minor refactoring in PartitionReplicaLifecycleManager

2025-01-21 Thread Aleksandr Polovtsev (Jira)
Aleksandr Polovtsev created IGNITE-24268:


 Summary: Minor refactoring in PartitionReplicaLifecycleManager
 Key: IGNITE-24268
 URL: https://issues.apache.org/jira/browse/IGNITE-24268
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksandr Polovtsev
Assignee: Aleksandr Polovtsev






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


[jira] [Created] (IGNITE-24272) Search for inappropriate java system properties

2025-01-21 Thread Mikhail Efremov (Jira)
Mikhail Efremov created IGNITE-24272:


 Summary: Search for inappropriate java system properties
 Key: IGNITE-24272
 URL: https://issues.apache.org/jira/browse/IGNITE-24272
 Project: Ignite
  Issue Type: Task
Reporter: Mikhail Efremov
Assignee: Mikhail Efremov


*Description*

After a discussion there is an issue with system properties in AI3 code base 
that may be used as configuration tool instead of configuration files usage. 
The situation requires an actions and first of all to refine system properties: 
are they really an internal mechanisms for test-only purposes or some are 
mistaken and should be redone as configuration's entries.

*Motivation*

We should use strict policy for user accessible mechanisms as jvm properties.

*Definition of Done*

1. All system properties are inspected and developers who added them are 
communicated.
2. All system properties that are intended for configuration should be 
mentioned in the new ticket about changing mistaken properties to configuration 
values.



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


[jira] [Updated] (IGNITE-24187) Fix code style issues in SystemDistributedConfigurationPropertyHolder

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-24187:
-
Fix Version/s: 3.0

> Fix code style issues in SystemDistributedConfigurationPropertyHolder
> -
>
> Key: IGNITE-24187
> URL: https://issues.apache.org/jira/browse/IGNITE-24187
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Gusakov
>Assignee: Kirill Gusakov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Several issues must be fixed:
> 1. ObjLongConsumer instead of BiConsumer
> 2. AtomicReference with simple set/get must be replaced by volatile field



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


[jira] [Commented] (IGNITE-24029) Sql schema. Extend Table API with supporting qualified names.

2025-01-21 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov commented on IGNITE-24029:
---

[~ptupitsyn], [~isapego], 
I've prepared a PR for supporting Sql-schema for tables and found a platform 
clients do not follow SQL convention for identifiers (table names) and some 
tests were failed.
I've fixed these tests and add TODOs, which should be resolved in follow-up 
tickets [1], [2].

Would you please do review for the changes in platform code?
For your convenience, the PR contains 2 separate commits that affect only .NET 
and C++ code.

https://issues.apache.org/jira/browse/IGNITE-24258 - .NET
https://issues.apache.org/jira/browse/IGNITE-24261 - C++

> Sql schema. Extend Table API with supporting qualified names.
> -
>
> Key: IGNITE-24029
> URL: https://issues.apache.org/jira/browse/IGNITE-24029
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Pereslegin
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> It is necessary to introduce new methods in IgniteTables that use 
> {{QualifiedName}} instead of simple String.
> And change the old ones to use the new ones using the helper method 
> {{{}QualifiedName.parseof(String){}}}.
> {code:java}
> interface IgniteTables {
> /** Gets a list of all tables */
> List tables();
> /** Gets a list of tables that belong to requested schema. */
> List tables(String schemaName); // optional
> /** Gets a table with specified name. */
> @Nullable Table table(QualifiedName tableName);
> @Nullable Table table(String tableName) {
> return table(QualifiedName.parseof(tableName));
> }
> /* ... + async methods ... */
> }
> public interface Table {   
>     /** Returns table's qualified name. */
> QualifiedName tableName();
> } 
> {code}
> Add integration tests, which checks cache names are correctly resolved.
> Add table::name that returns a QualifiedName.



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


[jira] [Updated] (IGNITE-24271) Do not pass NodeStoppingException to FailureHandler in WatchProcessor

2025-01-21 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-24271:
---
Description: Otherwise, stopping a node might make it fail

> Do not pass NodeStoppingException to FailureHandler in WatchProcessor
> -
>
> Key: IGNITE-24271
> URL: https://issues.apache.org/jira/browse/IGNITE-24271
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Otherwise, stopping a node might make it fail



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


[jira] [Assigned] (IGNITE-23365) Fix huge log message with assignments

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin reassigned IGNITE-23365:


Assignee: Vyacheslav Koptilin  (was: Alexander Lapin)

> Fix huge log message with assignments
> -
>
> Key: IGNITE-23365
> URL: https://issues.apache.org/jira/browse/IGNITE-23365
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Vyacheslav Koptilin
>Priority: Major
>  Labels: ignite-3
> Attachments: assignments.log
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When starting a node, we can write a message like this:
> {code:java}
> [2024-10-04T13:08:50,921][INFO 
> ][%node_3344%JRaft-ReadOnlyService-Disruptor_stripe_0-0][AssignmentsTracker] 
> Assignment cache initialized for placement driver 
> [groupAssignments={12_part_12=TokenizedAssignmentsImpl [nodes=UnmodifiableSet 
> [Assignment [consistentId=node_3345, isPeer=true]], token=1334], 
> 20_part_20=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3346, isPeer=true]], token=1969], 
> 22_part_22=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3344, isPeer=true]], token=997], 
> 12_part_13=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3345, isPeer=true]], token=1323], 
> 20_part_21=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3344, isPeer=true]], token=1004], 
> 22_part_23=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3346, isPeer=true]], token=1978], 
> 25_part_24=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3346, isPeer=true]], token=2019], 
> 12_part_14=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3345, isPeer=true]], token=1327], 
> 20_part_22=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3344, isPeer=true]], token=1012], 
> 22_part_20=TokenizedAssignmentsImpl [nodes=UnmodifiableSet [Assignment 
> [consistentId=node_3346, isPeer=true]], token=1974],...{code}
> Full message is in the attachment. We should make it shorter.
> h3. UPD 1
> Following log format should be used:
> {code:java}
> node_3344: peers = {12_part_12, 12_part_14, 20_part_12}, learners = 
> {23_part_12, 12_part_14, 20_part_12}
> node_3345: peers = {12_part_12, 12_part_14, 20_part_12}, learners = 
> {23_part_12, 12_part_14, 20_part_12}
> node_3346: peers = {12_part_12, 12_part_14, 20_part_12}, learners = 
> {23_part_12, 12_part_14, 20_part_12} {code}
> Both in case of single table/zone and multiple entities like we have in 
> PlacementDriver.
>  



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


[jira] [Updated] (IGNITE-24273) Fix flaky ItNodeTest#testInstallSnapshot

2025-01-21 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko updated IGNITE-24273:
-
Summary: Fix flaky ItNodeTest#testInstallSnapshot  (was: Investigate flaky 
ItNodeTest#testInstallSnapshot)

> Fix flaky ItNodeTest#testInstallSnapshot
> 
>
> Key: IGNITE-24273
> URL: https://issues.apache.org/jira/browse/IGNITE-24273
> Project: Ignite
>  Issue Type: Bug
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
>
> We need to deal with flaky 
> *org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.
> Link to 
> [TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].
> {noformat}
> org.opentest4j.AssertionFailedError: expected: <2> but was: <1>
>   at 
> app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
>   at 
> app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
>   at 
> app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
>   at 
> app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
>   at 
> app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
>   at 
> app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:531)
>   at 
> app//org.apache.ignite.raft.jraft.core.ItNodeTest.triggerLeaderSnapshot(ItNodeTest.java:4635)
>   at 
> app//org.apache.ignite.raft.jraft.core.ItNodeTest.testInstallSnapshot(ItNodeTest.java:2274)
>   at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
>   at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
>   at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
> {noformat}



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


[jira] [Updated] (IGNITE-24273) Investigate flaky ItNodeTest#testInstallSnapshot

2025-01-21 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko updated IGNITE-24273:
-
Issue Type: Bug  (was: Task)

> Investigate flaky ItNodeTest#testInstallSnapshot
> 
>
> Key: IGNITE-24273
> URL: https://issues.apache.org/jira/browse/IGNITE-24273
> Project: Ignite
>  Issue Type: Bug
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
>
> We need to deal with flaky 
> *org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.
> Link to 
> [TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].
> {noformat}
> org.opentest4j.AssertionFailedError: expected: <2> but was: <1>
>   at 
> app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
>   at 
> app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
>   at 
> app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
>   at 
> app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
>   at 
> app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
>   at 
> app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:531)
>   at 
> app//org.apache.ignite.raft.jraft.core.ItNodeTest.triggerLeaderSnapshot(ItNodeTest.java:4635)
>   at 
> app//org.apache.ignite.raft.jraft.core.ItNodeTest.testInstallSnapshot(ItNodeTest.java:2274)
>   at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
>   at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
>   at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
> {noformat}



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


[jira] [Created] (IGNITE-24276) Thin 3.0: TABLE_GET does not return actual table name

2025-01-21 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-24276:
---

 Summary: Thin 3.0: TABLE_GET does not return actual table name
 Key: IGNITE-24276
 URL: https://issues.apache.org/jira/browse/IGNITE-24276
 Project: Ignite
  Issue Type: Bug
  Components: thin client
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn
 Fix For: 3.0


TABLE_GET client op should return the original table name, including schema, so 
that the user understands which table was resolved (according to name parsing 
rules, default schema, etc).



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


[jira] [Updated] (IGNITE-24276) Thin 3.0: TABLE_GET does not return actual table name

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-24276:

Labels: ignite-3 important  (was: ignite-3)

> Thin 3.0: TABLE_GET does not return actual table name
> -
>
> Key: IGNITE-24276
> URL: https://issues.apache.org/jira/browse/IGNITE-24276
> Project: Ignite
>  Issue Type: Bug
>  Components: thin client
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Critical
>  Labels: ignite-3, important
> Fix For: 3.0
>
>
> TABLE_GET client op should return the original table name, including schema, 
> so that the user understands which table was resolved (according to name 
> parsing rules, default schema, etc).



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


[jira] [Commented] (IGNITE-24254) Sql schema. Fix Thin client protocol to use schema names

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn commented on IGNITE-24254:
-

Discussed with [~amashenkov], decided to revert:
* For 3.0, we don't support schemas
* For 3.1 we'll add schemas support, and we want to maintain two-way client 
compat (3.0 client can work with 3.1 server and vice versa)

Therefore, we'll keep current TABLE_GET and TABLES_GET operations as is (name 
only, no schema), and introduce new ones that work with parsed names.

> Sql schema. Fix Thin client protocol to use schema names
> 
>
> Key: IGNITE-24254
> URL: https://issues.apache.org/jira/browse/IGNITE-24254
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Reporter: Andrey Mashenkov
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Table can be unambiguously identified either by id or by pair of schema name 
> and table name.
> So, Thin Client protocol should be aware of schema name a table belongs to.
> ClientTables, *ClientTableGetRequest* and *ClientTablesGetRequest* should 
> either read/write table canonical name (see `QualifiedName.toCanonicalName`) 
> or transfer schema name with the table name.
> I'd prefer second approach with 2 separate Strings, to avoid excessive 
> parsing and quoting names.



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


[jira] [Reopened] (IGNITE-24254) Sql schema. Fix Thin client protocol to use schema names

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn reopened IGNITE-24254:
-

> Sql schema. Fix Thin client protocol to use schema names
> 
>
> Key: IGNITE-24254
> URL: https://issues.apache.org/jira/browse/IGNITE-24254
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Reporter: Andrey Mashenkov
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Table can be unambiguously identified either by id or by pair of schema name 
> and table name.
> So, Thin Client protocol should be aware of schema name a table belongs to.
> ClientTables, *ClientTableGetRequest* and *ClientTablesGetRequest* should 
> either read/write table canonical name (see `QualifiedName.toCanonicalName`) 
> or transfer schema name with the table name.
> I'd prefer second approach with 2 separate Strings, to avoid excessive 
> parsing and quoting names.



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


[jira] [Resolved] (IGNITE-24254) Sql schema. Fix Thin client protocol to use schema names

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn resolved IGNITE-24254.
-
Resolution: Won't Fix

> Sql schema. Fix Thin client protocol to use schema names
> 
>
> Key: IGNITE-24254
> URL: https://issues.apache.org/jira/browse/IGNITE-24254
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Reporter: Andrey Mashenkov
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Table can be unambiguously identified either by id or by pair of schema name 
> and table name.
> So, Thin Client protocol should be aware of schema name a table belongs to.
> ClientTables, *ClientTableGetRequest* and *ClientTablesGetRequest* should 
> either read/write table canonical name (see `QualifiedName.toCanonicalName`) 
> or transfer schema name with the table name.
> I'd prefer second approach with 2 separate Strings, to avoid excessive 
> parsing and quoting names.



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


[jira] [Commented] (IGNITE-24254) Sql schema. Fix Thin client protocol to use schema names

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn commented on IGNITE-24254:
-

Reverted: 
https://github.com/apache/ignite-3/commit/46b7a33b9765dd0fc1c1c2af4e5dad402ecd3c6e
 

> Sql schema. Fix Thin client protocol to use schema names
> 
>
> Key: IGNITE-24254
> URL: https://issues.apache.org/jira/browse/IGNITE-24254
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Reporter: Andrey Mashenkov
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Table can be unambiguously identified either by id or by pair of schema name 
> and table name.
> So, Thin Client protocol should be aware of schema name a table belongs to.
> ClientTables, *ClientTableGetRequest* and *ClientTablesGetRequest* should 
> either read/write table canonical name (see `QualifiedName.toCanonicalName`) 
> or transfer schema name with the table name.
> I'd prefer second approach with 2 separate Strings, to avoid excessive 
> parsing and quoting names.



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


[jira] [Updated] (IGNITE-24231) Implement hasUserInputAfterLastReconfiguration method

2025-01-21 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-24231:
-
Description: 
h3. Motivation
In https://issues.apache.org/jira/browse/IGNITE-23882 we have described the way 
how we will track if user input has happened after raft reconfiguration. For 
the purposes of the provided algorithm, we have to implement flag in 
{{PartitionDataStorage}} and {{PartitionListener}}. See details in the ticket. 

This method must be effectively represented as flag, and must be updated 
according to algo in https://issues.apache.org/jira/browse/IGNITE-23882. Actual 
update of this method must be done when the whole algo will be implemented in 
https://issues.apache.org/jira/browse/IGNITE-23882, so this ticket is 
prerequisite. 

h3. Implementation notes

{{hasUserInputAfterLastReconfiguration}} must be update atomically in 
storageUpdateHandler.handleUpdate

h3. Definition of done
* New method {{hasUserInputAfterLastReconfiguration}} must be implemented in 
{{PartitionDataStorage}} and {{PartitionListener}}

> Implement hasUserInputAfterLastReconfiguration method 
> --
>
> Key: IGNITE-24231
> URL: https://issues.apache.org/jira/browse/IGNITE-24231
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> In https://issues.apache.org/jira/browse/IGNITE-23882 we have described the 
> way how we will track if user input has happened after raft reconfiguration. 
> For the purposes of the provided algorithm, we have to implement flag in 
> {{PartitionDataStorage}} and {{PartitionListener}}. See details in the 
> ticket. 
> This method must be effectively represented as flag, and must be updated 
> according to algo in https://issues.apache.org/jira/browse/IGNITE-23882. 
> Actual update of this method must be done when the whole algo will be 
> implemented in https://issues.apache.org/jira/browse/IGNITE-23882, so this 
> ticket is prerequisite. 
> h3. Implementation notes
> {{hasUserInputAfterLastReconfiguration}} must be update atomically in 
> storageUpdateHandler.handleUpdate
> h3. Definition of done
> * New method {{hasUserInputAfterLastReconfiguration}} must be implemented in 
> {{PartitionDataStorage}} and {{PartitionListener}}



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


[jira] [Updated] (IGNITE-24055) Distinguished SQL operation to update observation timestamp

2025-01-21 Thread Pavel Pereslegin (Jira)


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

Pavel Pereslegin updated IGNITE-24055:
--
Fix Version/s: 3.0
   (was: 3.1)

> Distinguished SQL operation to update observation timestamp
> ---
>
> Key: IGNITE-24055
> URL: https://issues.apache.org/jira/browse/IGNITE-24055
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Pavel Pereslegin
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> h3. Motivation
> Currently, we need to update observation timestamp in 
> {{ClientInboundMessageHandler}} for any SQL because the script can contain an 
> DDL operation (for example, "CREATE TABLE"). But it is not necessary for any 
> DML.
> h3. Definition of done
> Update the observation timestamp only for that operation where it is required.



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


[jira] [Created] (IGNITE-24271) Do not pass NodeStoppingException to FailureHandler in WatchProcessor

2025-01-21 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-24271:
--

 Summary: Do not pass NodeStoppingException to FailureHandler in 
WatchProcessor
 Key: IGNITE-24271
 URL: https://issues.apache.org/jira/browse/IGNITE-24271
 Project: Ignite
  Issue Type: Improvement
Reporter: Roman Puchkovskiy
Assignee: Roman Puchkovskiy






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


[jira] [Created] (IGNITE-24275) Sql. Rework or replace HybridTimestampTracker.clientTracker

2025-01-21 Thread Pavel Pereslegin (Jira)
Pavel Pereslegin created IGNITE-24275:
-

 Summary: Sql. Rework or replace 
HybridTimestampTracker.clientTracker
 Key: IGNITE-24275
 URL: https://issues.apache.org/jira/browse/IGNITE-24275
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Pavel Pereslegin


In summary, the requirements for a {{HybridTimestampTracker}} (*observable time 
tracker*) are as follows:

* Observed time can be updated multiple times
* Observed time can be updated from different threads
* The updated value should be visible from different threads
* When updating the time, the tracker must provide a guarantee that the updated 
value is monotonically increasing

>From that perspective current implementation of 
>{{HybridTimestampTracker.clientTracker}} is broken.

* The method {{get()}} returns only initial value
* Consumer usually stores value to non-volatile field
* There is no check that the new value is greater than the previous one

We need to rework {{clientTracker}} to meet requirement or replace it where 
with {{atomicTracker}}.

p.s. check TODO in codebase



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


[jira] [Updated] (IGNITE-24273) Fix flaky ItNodeTest#testInstallSnapshot

2025-01-21 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko updated IGNITE-24273:
-
Description: 
We need to deal with flaky 
*org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.

Link to 
[TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].

The problem is that between snapshot creations we execute 10 more tasks that 
should increase the last applied index, but due to the race this does not have 
time to happen at the moment of the repeated request for snapshot creation, the 
test needs to be fixed.

A little more detail on where the race occurs. 
Between snapshot creations, 
*org.apache.ignite.raft.jraft.core.ItNodeTest#sendTestTaskAndWait* is called, 
which complete latch of all tasks in the state machine, but since this happens 
in another thread, the test thread starts executing earlier and requests the 
creation of a snapshot before the last applied index in 
*org.apache.ignite.raft.jraft.core.FSMCallerImpl* is updated, so when 
requesting the creation of a snapshot, we do not have time to understand that 
something has changed in the state machine and is needed and we skip the 
creation of a snapshot.

{noformat}
org.opentest4j.AssertionFailedError: expected: <2> but was: <1>
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at 
app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
at 
app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:531)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.triggerLeaderSnapshot(ItNodeTest.java:4635)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.testInstallSnapshot(ItNodeTest.java:2274)
at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
{noformat}

  was:
We need to deal with flaky 
*org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.

Link to 
[TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].

{noformat}
org.opentest4j.AssertionFailedError: expected: <2> but was: <1>
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at 
app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
at 
app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:531)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.triggerLeaderSnapshot(ItNodeTest.java:4635)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.testInstallSnapshot(ItNodeTest.java:2274)
at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
{noformat}


> Fix flaky ItNodeTest#testInstallSnapshot
> 
>
> Key: IGNITE-24273
> URL: https://issues.apache.org/jira/browse/IGNITE-24273
> Project: Ignite
>  Issue Type: Bug
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
>
> We need to deal with flaky 
> *org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.
> Link to 
> [TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].
> The problem is that between snapshot creations we execute 10 more tasks that 
> should increase the last applied index, but due to the race this does not 
> have time to happen at the moment of the repeated request for snapshot 
> creation, the test needs to be fixed.
> A little more detail on where the race occurs. 
> Between snapshot creations, 
> *org.apache.ignite.raft.jraft.core.ItNodeTest#sendTestTaskAndWait* is called, 
> which complete latch of all tasks in the state machine, but since this 
> happens in another t

[jira] [Updated] (IGNITE-24273) Fix flaky ItNodeTest#testInstallSnapshot

2025-01-21 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko updated IGNITE-24273:
-
Description: 
We need to deal with flaky 
*org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.

Link to 
[TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].

{noformat}
org.opentest4j.AssertionFailedError: expected: <2> but was: <1>
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at 
app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
at 
app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:531)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.triggerLeaderSnapshot(ItNodeTest.java:4635)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.testInstallSnapshot(ItNodeTest.java:2274)
at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
{noformat}

The problem is that between snapshot creations we execute 10 more tasks that 
should increase the last applied index, but due to the race this does not have 
time to happen at the moment of the repeated request for snapshot creation, the 
test needs to be fixed.

A little more detail on where the race occurs. 
Between snapshot creations, 
*org.apache.ignite.raft.jraft.core.ItNodeTest#sendTestTaskAndWait* is called, 
which complete latch of all tasks in the state machine, but since this happens 
in another thread, the test thread starts executing earlier and requests the 
creation of a snapshot before the last applied index in 
*org.apache.ignite.raft.jraft.core.FSMCallerImpl* is updated, so when 
requesting the creation of a snapshot, we do not have time to understand that 
something has changed in the state machine and is needed and we skip the 
creation of a snapshot.


  was:
We need to deal with flaky 
*org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.

Link to 
[TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].

The problem is that between snapshot creations we execute 10 more tasks that 
should increase the last applied index, but due to the race this does not have 
time to happen at the moment of the repeated request for snapshot creation, the 
test needs to be fixed.

A little more detail on where the race occurs. 
Between snapshot creations, 
*org.apache.ignite.raft.jraft.core.ItNodeTest#sendTestTaskAndWait* is called, 
which complete latch of all tasks in the state machine, but since this happens 
in another thread, the test thread starts executing earlier and requests the 
creation of a snapshot before the last applied index in 
*org.apache.ignite.raft.jraft.core.FSMCallerImpl* is updated, so when 
requesting the creation of a snapshot, we do not have time to understand that 
something has changed in the state machine and is needed and we skip the 
creation of a snapshot.

{noformat}
org.opentest4j.AssertionFailedError: expected: <2> but was: <1>
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at 
app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
at 
app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:531)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.triggerLeaderSnapshot(ItNodeTest.java:4635)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.testInstallSnapshot(ItNodeTest.java:2274)
at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
{noformat}


> Fix flaky ItNodeTest#testInstallSnapshot
> 
>
> Key: IGNITE-24273
> URL: https://issues.apache.org/jira/browse/IGNITE-24273
> Project: Ignite
>  Issue Type: Bug
>Reporter: Kirill Tkalenko
>

[jira] [Updated] (IGNITE-24275) Sql. Rework or replace HybridTimestampTracker.clientTracker

2025-01-21 Thread Pavel Pereslegin (Jira)


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

Pavel Pereslegin updated IGNITE-24275:
--
Description: 
In summary, the requirements for a {{HybridTimestampTracker}} (*observable time 
tracker*) are as follows:

* Observed time can be updated multiple times
* Observed time can be updated from different threads
* The updated value should be visible from different threads
* When updating the time, the tracker must provide a guarantee that the updated 
value is monotonically increasing

>From that perspective current implementation of 
>{{HybridTimestampTracker.clientTracker}} is broken.

* The method {{get()}} returns only initial value (so tracker cannot be used 
multiple times, for example for SQL script processing)
* Consumer usually stores value to non-volatile field
* There is no check that the new value is greater than the previous one

We need to rework {{clientTracker}} to meet requirement or replace it where 
with {{atomicTracker}}.

p.s. check TODO in codebase

  was:
In summary, the requirements for a {{HybridTimestampTracker}} (*observable time 
tracker*) are as follows:

* Observed time can be updated multiple times
* Observed time can be updated from different threads
* The updated value should be visible from different threads
* When updating the time, the tracker must provide a guarantee that the updated 
value is monotonically increasing

>From that perspective current implementation of 
>{{HybridTimestampTracker.clientTracker}} is broken.

* The method {{get()}} returns only initial value
* Consumer usually stores value to non-volatile field
* There is no check that the new value is greater than the previous one

We need to rework {{clientTracker}} to meet requirement or replace it where 
with {{atomicTracker}}.

p.s. check TODO in codebase


> Sql. Rework or replace HybridTimestampTracker.clientTracker
> ---
>
> Key: IGNITE-24275
> URL: https://issues.apache.org/jira/browse/IGNITE-24275
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Pereslegin
>Priority: Major
>  Labels: ignite-3
>
> In summary, the requirements for a {{HybridTimestampTracker}} (*observable 
> time tracker*) are as follows:
> * Observed time can be updated multiple times
> * Observed time can be updated from different threads
> * The updated value should be visible from different threads
> * When updating the time, the tracker must provide a guarantee that the 
> updated value is monotonically increasing
> From that perspective current implementation of 
> {{HybridTimestampTracker.clientTracker}} is broken.
> * The method {{get()}} returns only initial value (so tracker cannot be used 
> multiple times, for example for SQL script processing)
> * Consumer usually stores value to non-volatile field
> * There is no check that the new value is greater than the previous one
> We need to rework {{clientTracker}} to meet requirement or replace it where 
> with {{atomicTracker}}.
> p.s. check TODO in codebase



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


[jira] [Assigned] (IGNITE-24262) AssertionError in ClusterTimeImpl.startSafeTimeScheduler

2025-01-21 Thread Vladimir Pligin (Jira)


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

Vladimir Pligin reassigned IGNITE-24262:


Assignee: Philipp Shergalis

> AssertionError in ClusterTimeImpl.startSafeTimeScheduler
> 
>
> Key: IGNITE-24262
> URL: https://issues.apache.org/jira/browse/IGNITE-24262
> Project: Ignite
>  Issue Type: Bug
>Reporter: Roman Puchkovskiy
>Assignee: Philipp Shergalis
>Priority: Major
>  Labels: ignite-3
> Attachments: _Integration_Tests_Run_All_Other_31480.log.zip
>
>
> AssertionError was thrown by ClusterTimeImpl.startSafeTimeScheduler() in 
> ItCatalogCompactionCoordinatorChoosingTest, see the attached log



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


[jira] [Updated] (IGNITE-23772) Calcite. Incorrect processing of old date literals.

2025-01-21 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-23772:
--
Summary: Calcite. Incorrect processing of old date literals.  (was: 
Calcite. Incorrect processing of old dates.)

> Calcite. Incorrect processing of old date literals.
> ---
>
> Key: IGNITE-23772
> URL: https://issues.apache.org/jira/browse/IGNITE-23772
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.14
>Reporter: Vladimir Steshin
>Priority: Minor
>  Labels: calcite, ignite-2, ise
>
> Consider:
> *1)* {code:java}
> assertQuery("SELECT DATE '1582-10-05' + INTERVAL 1 
> DAYS").returns(Date.valueOf("1582-10-06")).check();
> ---
> assertQuery("SELECT TIMESTAMP '1582-10-05 00:00:00' + INTERVAL 1 
> DAYS").returns(Timestamp.valueOf("1582-10-06 00:00:00")).check();
> {code}
> Result:
> {code:java}
> class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed 
> to validate query. From line 1, column 25 to line 1, column 41: Illegal DATE 
> literal '1582-10-05': not in format '-MM-dd'
> ---
> class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed 
> to validate query. From line 1, column 25 to line 1, column 55: Illegal 
> TIMESTAMP literal '1582-10-05 00:00:00': not in format '-MM-dd HH:mm:ss'
> {code}
> *2)* {code:java}
> assertQuery("SELECT DATE '1582-10-01' + INTERVAL 1 
> DAYS").returns(Date.valueOf("1582-10-02")).check();
> ---
> assertQuery("SELECT TIMESTAMP '1582-10-01 00:00:00' + INTERVAL 1 
> DAYS").returns(Timestamp.valueOf("1582-10-02 00:00:00")).check();
> {code}
> Result:
> Doesn't fail, but but the result is incorrect.
> {code:java}
> java.lang.AssertionError: Collections are not equal (position 0):
> Expected: [[1582-10-02]]
> Actual:   [[1582-09-22]]
> ---
> java.lang.AssertionError: Collections are not equal (position 0):
> Expected: [[1582-10-02 00:00:00.0]]
> Actual:   [[1582-09-22 00:00:00.0]]
> {code}
> *3)* OK
> {code:java}
> assertQuery("SELECT DATE '1583-10-05' + INTERVAL 1 
> DAYS").returns(Date.valueOf("1583-10-06")).check();
> ---
> assertQuery("SELECT TIMESTAMP '1583-10-01 00:00:00' + INTERVAL 1 
> DAYS").returns(Timestamp.valueOf("1583-10-02 00:00:00")).check();
> {code}
> The problem is in variation of date conversion in java.util.Date (used in 
> _TypeUtils#fromInterna()_). There is a threshold year 1582 (october) to 
> calculate in Gregorian calendar.
> https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
> https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279
> When Avatica does calculation in Julian calendar. 



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


[jira] [Updated] (IGNITE-24029) Sql schema. Extend Table API with supporting qualified names.

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-24029:

Fix Version/s: 3.1
   (was: 3.0)

> Sql schema. Extend Table API with supporting qualified names.
> -
>
> Key: IGNITE-24029
> URL: https://issues.apache.org/jira/browse/IGNITE-24029
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Pereslegin
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.1
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> It is necessary to introduce new methods in IgniteTables that use 
> {{QualifiedName}} instead of simple String.
> And change the old ones to use the new ones using the helper method 
> {{{}QualifiedName.parseof(String){}}}.
> {code:java}
> interface IgniteTables {
> /** Gets a list of all tables */
> List tables();
> /** Gets a list of tables that belong to requested schema. */
> List tables(String schemaName); // optional
> /** Gets a table with specified name. */
> @Nullable Table table(QualifiedName tableName);
> @Nullable Table table(String tableName) {
> return table(QualifiedName.parseof(tableName));
> }
> /* ... + async methods ... */
> }
> public interface Table {   
>     /** Returns table's qualified name. */
> QualifiedName tableName();
> } 
> {code}
> Add integration tests, which checks cache names are correctly resolved.
> Add table::name that returns a QualifiedName.



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


[jira] [Updated] (IGNITE-23772) Calcite. Incorrect processing of old date literals.

2025-01-21 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-23772:
--
Description: 
Consider:
*1)* {code:java}
assertQuery("SELECT DATE '1582-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-06")).check();
---
assertQuery("SELECT TIMESTAMP '1582-10-05 00:00:00' + INTERVAL 1 
DAYS").returns(Timestamp.valueOf("1582-10-06 00:00:00")).check();
{code}
Result:
{code:java}
class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to 
validate query. From line 1, column 25 to line 1, column 41: Illegal DATE 
literal '1582-10-05': not in format '-MM-dd'
---
class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to 
validate query. From line 1, column 25 to line 1, column 55: Illegal TIMESTAMP 
literal '1582-10-05 00:00:00': not in format '-MM-dd HH:mm:ss'
{code}

*2)* {code:java}
assertQuery("SELECT DATE '1582-10-01' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-02")).check();
---
assertQuery("SELECT TIMESTAMP '1582-10-01 00:00:00' + INTERVAL 1 
DAYS").returns(Timestamp.valueOf("1582-10-02 00:00:00")).check();
{code}
Result:
Doesn't fail, but but the result is incorrect.
{code:java}
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[1582-10-02]]
Actual:   [[1582-09-22]]
---
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[1582-10-02 00:00:00.0]]
Actual:   [[1582-09-22 00:00:00.0]]
{code}

*3)* OK
{code:java}
assertQuery("SELECT DATE '1583-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1583-10-06")).check();
---
assertQuery("SELECT TIMESTAMP '1583-10-01 00:00:00' + INTERVAL 1 
DAYS").returns(Timestamp.valueOf("1583-10-02 00:00:00")).check();
{code}


The problem is in variation of date conversion in java.util.Date (used in 
_TypeUtils#fromInterna()_). There is a threshold year 1582 (october).
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279

When Avatica always does trivial calculation using days, milliseconds related 
to 1970-01-01. 


  was:
Consider:
*1)* {code:java}
assertQuery("SELECT DATE '1582-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-06")).check();
---
assertQuery("SELECT TIMESTAMP '1582-10-05 00:00:00' + INTERVAL 1 
DAYS").returns(Timestamp.valueOf("1582-10-06 00:00:00")).check();
{code}
Result:
{code:java}
class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to 
validate query. From line 1, column 25 to line 1, column 41: Illegal DATE 
literal '1582-10-05': not in format '-MM-dd'
---
class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to 
validate query. From line 1, column 25 to line 1, column 55: Illegal TIMESTAMP 
literal '1582-10-05 00:00:00': not in format '-MM-dd HH:mm:ss'
{code}

*2)* {code:java}
assertQuery("SELECT DATE '1582-10-01' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-02")).check();
---
assertQuery("SELECT TIMESTAMP '1582-10-01 00:00:00' + INTERVAL 1 
DAYS").returns(Timestamp.valueOf("1582-10-02 00:00:00")).check();
{code}
Result:
Doesn't fail, but but the result is incorrect.
{code:java}
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[1582-10-02]]
Actual:   [[1582-09-22]]
---
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[1582-10-02 00:00:00.0]]
Actual:   [[1582-09-22 00:00:00.0]]
{code}

*3)* OK
{code:java}
assertQuery("SELECT DATE '1583-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1583-10-06")).check();
---
assertQuery("SELECT TIMESTAMP '1583-10-01 00:00:00' + INTERVAL 1 
DAYS").returns(Timestamp.valueOf("1583-10-02 00:00:00")).check();
{code}


The problem is in variation of date conversion in java.util.Date (used in 
_TypeUtils#fromInterna()_). There is a threshold year 1582 (october) to 
calculate in Gregorian calendar.
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279

When Avatica does calculation in Julian calendar. 



> Calcite. Incorrect processing of old date literals.
> ---
>
> Key: IGNITE-23772
> URL: https://issues.apache.org/jira/browse/IGNITE-23772
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.14
>Reporter: Vladimir Steshin
>Priority: Minor
>  Labels: calcite, ignite-2, ise
>
> Consider:
> *1)* {code:java}
> assertQuery("SELECT DATE '1582-10-05'

[jira] [Updated] (IGNITE-24268) Minor refactoring in PartitionReplicaLifecycleManager

2025-01-21 Thread Aleksandr Polovtsev (Jira)


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

Aleksandr Polovtsev updated IGNITE-24268:
-
Description: This is a technical ticket for fixing minor issues that I 
stumbled upon while working with the code of PartitionReplicaLifecycleManager.  
(was: This is a technical ticket for fixing minor issues that I stumbled upon 
while working with the code of )

> Minor refactoring in PartitionReplicaLifecycleManager
> -
>
> Key: IGNITE-24268
> URL: https://issues.apache.org/jira/browse/IGNITE-24268
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtsev
>Assignee: Aleksandr Polovtsev
>Priority: Trivial
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> This is a technical ticket for fixing minor issues that I stumbled upon while 
> working with the code of PartitionReplicaLifecycleManager.



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


[jira] [Updated] (IGNITE-24268) Minor refactoring in PartitionReplicaLifecycleManager

2025-01-21 Thread Aleksandr Polovtsev (Jira)


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

Aleksandr Polovtsev updated IGNITE-24268:
-
Description: This is a technical ticket for fixing minor issues that I 
stumbled upon while working with the code of 

> Minor refactoring in PartitionReplicaLifecycleManager
> -
>
> Key: IGNITE-24268
> URL: https://issues.apache.org/jira/browse/IGNITE-24268
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtsev
>Assignee: Aleksandr Polovtsev
>Priority: Trivial
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> This is a technical ticket for fixing minor issues that I stumbled upon while 
> working with the code of 



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


[jira] [Updated] (IGNITE-24212) Non-persistent SQL schema isn't merged or validated when node joins cluster.

2025-01-21 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-24212:
--
Description: 
*Consider:*
1) There is a working non-persistent cluster with defined caches in 
_IgniteConfiguration_.
2) The caches have no SQL-entities set.
3) Node creates table over one of these cache with `_CREATE TABLE IF NOT 
EXISTS_`. A SQL table and a schema appear in the cluster.
4) One of the nodes restarts.
5) Next `_SELECT_` queries to the table may fail with '_TABLE NOT FOUND'_ 
6) Restarted node has no tables in system view '_TABLES_'.

*Cause:*
The node restarts with defined cache configurations having no SQL entities set. 
When node joins cluster, dynamic tables/schema seem not merged or validated. 
The restarting node takes own cache configuration as is, without dynamically 
created schema and tables and has no the tables.

+This works+ with the persistence because node stores and reads the cache meta 
holding the schema/entities.

*Workarounds:*
1) Do not predefine caches, create them with `_CREATE TABLE_`
2) Set matching SQL entities in the predefined cache config.
3) Use other cache names with `_CREATE TABLE_` (_WITH "CACHE_NAME=._..).

*Suggestions:*
1) Validate schema/caches and do not allow node join cluster.
or
2) Merge static and dynamic schemas/cache configs and send them to the joining 
node. 

  was:
*Consider:*
1) There is a working non-persistent cluster with predefined caches in 
_IgniteConfiguration_.
2) The caches have no SQL-entities set.
3) A node creates a table over one of those cache with `_CREATE TABLE IF NOT 
EXISTS_`. A SQL table and a schema appear in the cluster.
4) One of the nodes restarts.
5) Next `_SELECT_` queries to the table may fail with '_TABLE NOT FOUND'_ 
6) Restarted node has no tables in system view '_TABLES_'.

*Cause:*
The node restarts with predefined cache configuration having no SQL entities 
set. When node joins cluster, dynamic tables/schema seem not merged or 
validated. The restarting node takes the predefined cache configuration as is, 
without receiving the dynamically created schema and table. So, the node has no 
tables whereas the other cluster does.

+This works+ with the persistence because node stores and reads the cache meta 
holding the schema/entities.

*Workarounds:*
1) Do not predefine caches, create them with `_CREATE TABLE_`
2) Set matching SQL entities in the predefined cache config.
3) Use other cache names with `_CREATE TABLE_` (_WITH "CACHE_NAME=._..).

*Suggestions:*
1) Validate schema/caches and do not allow node join cluster.
or
2) Merge static and dynamic schemas/cache configs and send them to the joining 
node. 


> Non-persistent SQL schema isn't merged or validated when node joins cluster.
> 
>
> Key: IGNITE-24212
> URL: https://issues.apache.org/jira/browse/IGNITE-24212
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.14, 2.16
>Reporter: Vladimir Steshin
>Priority: Minor
>  Labels: ise, sql
> Attachments: TestNonPersistentNodeRestartsWithDynamicSQLTable.java
>
>
> *Consider:*
> 1) There is a working non-persistent cluster with defined caches in 
> _IgniteConfiguration_.
> 2) The caches have no SQL-entities set.
> 3) Node creates table over one of these cache with `_CREATE TABLE IF NOT 
> EXISTS_`. A SQL table and a schema appear in the cluster.
> 4) One of the nodes restarts.
> 5) Next `_SELECT_` queries to the table may fail with '_TABLE NOT FOUND'_ 
> 6) Restarted node has no tables in system view '_TABLES_'.
> *Cause:*
> The node restarts with defined cache configurations having no SQL entities 
> set. When node joins cluster, dynamic tables/schema seem not merged or 
> validated. The restarting node takes own cache configuration as is, without 
> dynamically created schema and tables and has no the tables.
> +This works+ with the persistence because node stores and reads the cache 
> meta holding the schema/entities.
> *Workarounds:*
> 1) Do not predefine caches, create them with `_CREATE TABLE_`
> 2) Set matching SQL entities in the predefined cache config.
> 3) Use other cache names with `_CREATE TABLE_` (_WITH "CACHE_NAME=._..).
> *Suggestions:*
> 1) Validate schema/caches and do not allow node join cluster.
> or
> 2) Merge static and dynamic schemas/cache configs and send them to the 
> joining node. 



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


[jira] [Created] (IGNITE-24277) Unchecked "log.debug" calls in storage code

2025-01-21 Thread Ivan Bessonov (Jira)
Ivan Bessonov created IGNITE-24277:
--

 Summary: Unchecked "log.debug" calls in storage code
 Key: IGNITE-24277
 URL: https://issues.apache.org/jira/browse/IGNITE-24277
 Project: Ignite
  Issue Type: Improvement
Reporter: Ivan Bessonov


These calls are mostly in {{{}PagesList{}}}. They lead to unnecessary vararg 
arrays allocations on a hot path, which might negatively affect performance



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


[jira] [Assigned] (IGNITE-24277) Unchecked "log.debug" calls in storage code

2025-01-21 Thread Ivan Bessonov (Jira)


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

Ivan Bessonov reassigned IGNITE-24277:
--

Assignee: Ivan Bessonov

> Unchecked "log.debug" calls in storage code
> ---
>
> Key: IGNITE-24277
> URL: https://issues.apache.org/jira/browse/IGNITE-24277
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Ivan Bessonov
>Priority: Major
>
> These calls are mostly in {{{}PagesList{}}}. They lead to unnecessary vararg 
> arrays allocations on a hot path, which might negatively affect performance



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


[jira] [Updated] (IGNITE-24277) Unchecked "log.debug" calls in storage code

2025-01-21 Thread Ivan Bessonov (Jira)


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

Ivan Bessonov updated IGNITE-24277:
---
Labels: ignite-3  (was: )

> Unchecked "log.debug" calls in storage code
> ---
>
> Key: IGNITE-24277
> URL: https://issues.apache.org/jira/browse/IGNITE-24277
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These calls are mostly in {{{}PagesList{}}}. They lead to unnecessary vararg 
> arrays allocations on a hot path, which might negatively affect performance



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


[jira] [Assigned] (IGNITE-23999) Add support of CacheStore for AtomicSequence

2025-01-21 Thread Ilya Shishkov (Jira)


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

Ilya Shishkov reassigned IGNITE-23999:
--

Assignee: Ilya Shishkov

> Add support of CacheStore for AtomicSequence
> 
>
> Key: IGNITE-23999
> URL: https://issues.apache.org/jira/browse/IGNITE-23999
> Project: Ignite
>  Issue Type: Improvement
>  Components: data structures
>Reporter: Ilya Shishkov
>Assignee: Ilya Shishkov
>Priority: Minor
>  Labels: ise
>
> Atomic data structures (eg., AtomicSequence) can be persistent only in case 
> of Ignite native persistence. It would be nice to have possibility to store 
> them into third party persistence.



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


[jira] [Updated] (IGNITE-24239) Create stable reproducer for IGNITE-23588

2025-01-21 Thread Ivan Bessonov (Jira)


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

Ivan Bessonov updated IGNITE-24239:
---
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Create stable reproducer for IGNITE-23588
> -
>
> Key: IGNITE-24239
> URL: https://issues.apache.org/jira/browse/IGNITE-24239
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Create a test that does the same thing as 
> {{{}ItBplusTreePersistentPageMemoryTest#testMassiveRemove2_true{}}}, but with 
> an execution order that 100% relies on a seed. This way all we need to do is 
> find a single seed, and then the test will fail every time.



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


[jira] [Updated] (IGNITE-24267) Reduce heap footprint for Lock manager

2025-01-21 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-24267:
---
Description: 
h3. Motivation
We preallocate much memory on the lock manager initialization.
{code}
locks = new ConcurrentHashMap<>(lockMapSize);

LockState[] tmp = new LockState[rawSlotsMaxSize];
for (int i = 0; i < tmp.length; i++) {
LockState lockState = new LockState();
if (i < lockMapSize) {
empty.add(lockState);
}
tmp[i] = lockState;
}

slots = tmp; // Atomic init.
{code}


  was:
h3. Motivation
We preallocate much memory on the lock manager initialization.
{code}
locks = new ConcurrentHashMap<>(lockMapSize);

LockState[] tmp = new LockState[rawSlotsMaxSize];
for (int i = 0; i < tmp.length; i++) {
LockState lockState = new LockState();
if (i < lockMapSize) {
empty.add(lockState);
}
tmp[i] = lockState;
}

slots = tmp; // Atomic init.
{code}


> Reduce heap footprint for Lock manager
> --
>
> Key: IGNITE-24267
> URL: https://issues.apache.org/jira/browse/IGNITE-24267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>
> h3. Motivation
> We preallocate much memory on the lock manager initialization.
> {code}
> locks = new ConcurrentHashMap<>(lockMapSize);
> LockState[] tmp = new LockState[rawSlotsMaxSize];
> for (int i = 0; i < tmp.length; i++) {
> LockState lockState = new LockState();
> if (i < lockMapSize) {
> empty.add(lockState);
> }
> tmp[i] = lockState;
> }
> slots = tmp; // Atomic init.
> {code}



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


[jira] [Updated] (IGNITE-24267) Reduce heap footprint for Lock manager

2025-01-21 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-24267:
---
Labels: ignite-3  (was: )

> Reduce heap footprint for Lock manager
> --
>
> Key: IGNITE-24267
> URL: https://issues.apache.org/jira/browse/IGNITE-24267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> We preallocate much memory on the lock manager initialization.
> {code}
> locks = new ConcurrentHashMap<>(lockMapSize);
> LockState[] tmp = new LockState[rawSlotsMaxSize];
> for (int i = 0; i < tmp.length; i++) {
> LockState lockState = new LockState();
> if (i < lockMapSize) {
> empty.add(lockState);
> }
> tmp[i] = lockState;
> }
> slots = tmp; // Atomic init.
> {code}



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


[jira] [Updated] (IGNITE-24267) Reduce heap footprint for Lock manager

2025-01-21 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-24267:
---
Description: 
h3. Motivation
We preallocate much memory on the lock manager initialization.
{code}
locks = new ConcurrentHashMap<>(lockMapSize);

LockState[] tmp = new LockState[rawSlotsMaxSize];
for (int i = 0; i < tmp.length; i++) {
LockState lockState = new LockState();
if (i < lockMapSize) {
empty.add(lockState);
}
tmp[i] = lockState;
}

slots = tmp; // Atomic init.
{code}
Currently, the value {{rawSlotsMaxSize}} is about 1M. It takes about 100 MB for 
the entire heap lock manager.

h3. Definition of done
Reduce heap size for the heap lock manager.

  was:
h3. Motivation
We preallocate much memory on the lock manager initialization.
{code}
locks = new ConcurrentHashMap<>(lockMapSize);

LockState[] tmp = new LockState[rawSlotsMaxSize];
for (int i = 0; i < tmp.length; i++) {
LockState lockState = new LockState();
if (i < lockMapSize) {
empty.add(lockState);
}
tmp[i] = lockState;
}

slots = tmp; // Atomic init.
{code}



> Reduce heap footprint for Lock manager
> --
>
> Key: IGNITE-24267
> URL: https://issues.apache.org/jira/browse/IGNITE-24267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> We preallocate much memory on the lock manager initialization.
> {code}
> locks = new ConcurrentHashMap<>(lockMapSize);
> LockState[] tmp = new LockState[rawSlotsMaxSize];
> for (int i = 0; i < tmp.length; i++) {
> LockState lockState = new LockState();
> if (i < lockMapSize) {
> empty.add(lockState);
> }
> tmp[i] = lockState;
> }
> slots = tmp; // Atomic init.
> {code}
> Currently, the value {{rawSlotsMaxSize}} is about 1M. It takes about 100 MB 
> for the entire heap lock manager.
> h3. Definition of done
> Reduce heap size for the heap lock manager.



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


[jira] [Updated] (IGNITE-24270) Change IdleVerifyResult output

2025-01-21 Thread Nikolay Izhikov (Jira)


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

Nikolay Izhikov updated IGNITE-24270:
-
Labels: ise  (was: IEP-132 ise)

> Change IdleVerifyResult output 
> ---
>
> Key: IGNITE-24270
> URL: https://issues.apache.org/jira/browse/IGNITE-24270
> Project: Ignite
>  Issue Type: Task
>Reporter: Maksim Davydov
>Priority: Trivial
>  Labels: ise
>
> IdleVerifyResult#printConflicts(Consumer) output depends on 
> code-specific class naming, like PartitionKey#toString(), and 
> PartitionHashRecord#toString()
> It's better to change the output, so that the IdleVerify command output 
> doesn't depend on class naming



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


[jira] [Updated] (IGNITE-24270) Change IdleVerifyResult output

2025-01-21 Thread Nikolay Izhikov (Jira)


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

Nikolay Izhikov updated IGNITE-24270:
-
Labels: IEP-132 ise  (was: ise)

> Change IdleVerifyResult output 
> ---
>
> Key: IGNITE-24270
> URL: https://issues.apache.org/jira/browse/IGNITE-24270
> Project: Ignite
>  Issue Type: Task
>Reporter: Maksim Davydov
>Priority: Trivial
>  Labels: IEP-132, ise
>
> IdleVerifyResult#printConflicts(Consumer) output depends on 
> code-specific class naming, like PartitionKey#toString(), and 
> PartitionHashRecord#toString()
> It's better to change the output, so that the IdleVerify command output 
> doesn't depend on class naming



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


[jira] [Updated] (IGNITE-24031) Sql schema. Extend IgniteCatalog API with supporting qualified names.

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-24031:

Fix Version/s: 3.1
   (was: 3.0)

> Sql schema. Extend IgniteCatalog API with supporting qualified names.
> -
>
> Key: IGNITE-24031
> URL: https://issues.apache.org/jira/browse/IGNITE-24031
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Pereslegin
>Assignee: Evgeny Stanilovsky
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.1
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Extend {{IgniteCatalog}} interface with methods for creating/dropping 
> schemas, and fix table methods signatures, which require table name.
> {code:java}
> interface IgniteCatalog {
> TableDefinition tableDefinition(QualifiedName tableName);
> void dropTable(QualifiedName tableName);
> /* Existing methods should become shoutcuts to a new ones. */
> TableDefinition tableDefinition(String tableName);
> void dropTable(String tableName);
> } 
> {code}
> The methods that create TableDefinition, which accept String parameters, are 
> shortcuts to the new ones.
> String tablenames must satisfy QualifiedName.parse() parameter format.



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


[jira] [Updated] (IGNITE-21663) Cluster load balancing when 1 node is killed doesn't work

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-21663:

Fix Version/s: 3.0
   (was: 3.1)

> Cluster load balancing when 1 node is killed doesn't work
> -
>
> Key: IGNITE-21663
> URL: https://issues.apache.org/jira/browse/IGNITE-21663
> Project: Ignite
>  Issue Type: Bug
>  Components: persistence, sql
>Affects Versions: 3.0.0-beta1
>Reporter: Igor
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>
> *Steps to reproduce:*
>  # Start cluster with 2 nodes running locally.
>  # Make connection like this:
> {code:java}
> try (IgniteClient igniteClient = IgniteClient.builder().retryPolicy(new 
> RetryLimitPolicy()).addresses(thinClientEndpoints.toArray(new 
> String[]{"localhost:10800","localhost:10801"})).build()) {
>     try (Session session = igniteClient.sql().createSession()) {
>         //code here
>     }
> } {code}
> 3. Create table with replication 2
> 4. Execute insert 1 row and select from the table.
> 5. Kill first node (in list of connection)
> 6. Execute select from the table.
> *Expected:*
> Cluster works with one node.
> *Actual:*
> The exception on select after first node is killed, the select is not 
> executed.
> {code:java}
> org.apache.ignite.sql.SqlException: IGN-CMN-65535 
> TraceId:92e48867-2e6e-4730-9781-527a4e204b32 Unable to send fragment 
> [targetNode=ConnectionTest_cluster_0, fragmentId=1, 
> cause=io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection 
> refused: no further information: /192.168.100.5:3344]
>     at 
> java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
>     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.AbstractSession.execute(AbstractSession.java:63)
>     at 
> org.gridgain.ai3tests.tests.teststeps.ThinClientSteps.lambda$executeQuery$0(ThinClientSteps.java:61)
>     at io.qameta.allure.Allure.lambda$step$1(Allure.java:127)
>     at io.qameta.allure.Allure.step(Allure.java:181)
>     at io.qameta.allure.Allure.step(Allure.java:125)
>     at 
> org.gridgain.ai3tests.tests.teststeps.ThinClientSteps.executeQuery(ThinClientSteps.java:61)
>     at 
> org.gridgain.ai3tests.tests.ConnectionTest.testThinClientConnectionToMultipleHost(ConnectionTest.java:93)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>     at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
>     at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
> Caused by: java.util.concurrent.CompletionException: 
> org.apache.ignite.sql.SqlException: IGN-CMN-65535 
> TraceId:92e48867-2e6e-4730-9781-527a4e204b32 Unable to send fragment 
> [targetNode=ConnectionTest_cluster_0, fragmentId=1, 
> cause=io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection 
> refused: no further information: /192.168.100.5:3344]
>     at 
> java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
>     at 
> java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
>     at 
> java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:870)
>     at 
> java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
>     at 
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>     at 
> java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
>     at 
> org.apache.ignite.internal.client.TcpClientChannel.processNextMessage(TcpClientChannel.java:419)
>     at 
> org.apache.ignite.internal.client.TcpClientChannel.lambda$onMessage$3(TcpClientChannel.java:238)
>     at 
> java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426)
>     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.F

[jira] [Updated] (IGNITE-23466) Refactor DZM internals

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-23466:

Fix Version/s: 3.1
   (was: 3.0)

> Refactor DZM internals
> --
>
> Key: IGNITE-23466
> URL: https://issues.apache.org/jira/browse/IGNITE-23466
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexander Lapin
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3, important
> Fix For: 3.1
>
>
> h3. Motivation
> In order to simply DistributionZone dataNodes processing and meet meta 
> storage compaction requirements it's required not to use MG versioning. 
> Generally following logic should be implemented.
>  * On topology event
>  ** Check whether we already have corresponding pending scaleUp/Down timer. 
> If not: 
>  *** Serialised timer is written to MG synchronously. In timer's data bag 
> it's expected to have
>   Awake/DataNodes atomic switch timestamp.
>   Data nodes to apply. 
>  *** Else:
>   Rewrite existing timer by updating Awake/DataNodes timestamp along with 
> data nodes to apply. That should be done atomically in a way that calculated 
> topology event timestamp is used while comparison with already existing awake 
> one.
>  ** Timer is scheduled.
>  * On timer
>  ** Atomically remove the timer and set add new timestamp -> dataNodes entry 
> in dataNodes map in MG and DZM volatile cache.
>  * On node restart:
>  ** restore corresponding volatile state from the MG.
>  * On filter change:
>  ** Immediately trigger on timer.
>  * On timeout adjustments
>  ** Rewrite existing timers if exists.
> There's a chance that topology and node attributes should also be internally 
> versioned.
> h3. Definition of Done
>  * DZM manages dataNodes and related history internally in last MG key like 
> Catalog does.
>  * New robust mechanic of atomic timers to dataNodes application is used. 
> Details are described in Motivation section. 



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


[jira] [Updated] (IGNITE-23561) Refactor DZM dataNodes processing

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-23561:

Fix Version/s: 3.1
   (was: 3.0)

> Refactor DZM dataNodes processing
> -
>
> Key: IGNITE-23561
> URL: https://issues.apache.org/jira/browse/IGNITE-23561
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3, important
> Fix For: 3.1
>
>
> h3. Motivation
> see https://issues.apache.org/jira/browse/IGNITE-23466
>  * On dataNodes(timerstamp, zone). Yep, dataNodes() should be refactored in 
> order to use timestamp instead of revision, catalog version:
>  ** check whether there's nonAwaked timers with awakeTimestamp less or equal 
> to the requested one. If true - "fire" the timer.
>  ** Iterate over existing timestamp -> dataNodes entries and find closest one 
> to the left.
> h3. Definition of Done
>  * DZM dataNodes() uses HybridTimestamp instead of MG revision and catalog 
> version.



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


[jira] [Updated] (IGNITE-20166) Metastorage Compaction

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20166:

Fix Version/s: 3.1
   (was: 3.0)

> Metastorage Compaction
> --
>
> Key: IGNITE-20166
> URL: https://issues.apache.org/jira/browse/IGNITE-20166
> Project: Ignite
>  Issue Type: Epic
>Reporter: Sergey Chugunov
>Priority: Major
>  Labels: ignite-3, important
> Fix For: 3.1
>
>
> General logic of metastorage is that it supports multiple versions for the 
> same key corresponding to different timestamps.
> At the same time there is a concept of a low watermark - a moment in time 
> when all timestamps falling below that mark become obsolete and can be pruned 
> from Metastorage.
> We need to implement a mechanism to compact Metastorage to remove obsolete 
> keys. At the same time some components may rely on availability of history of 
> key's versions.



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


[jira] [Updated] (IGNITE-24206) Add index and term to RaftGroupConfiguration

2025-01-21 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-24206:
-
Description: 
h3. Motivation

in order to track raft index and term on which configuration was applied to 
raft, we need to add index and term to RaftGroupConfiguration

h3. Implementation notes
In order to achieve that, we have to propagate cfg index and term to snapshot 
meta

h3. Definition of done
* Index and term are added to RaftGroupConfiguration

  was:
h3. Motivation

in order to track raft index and term on which configuration was applied to 
raft, we need to add index and term to RaftGroupConfiguration

h3. Definition of done
* Index and term are added to RaftGroupConfiguration


> Add index and term to RaftGroupConfiguration
> 
>
> Key: IGNITE-24206
> URL: https://issues.apache.org/jira/browse/IGNITE-24206
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Mirza Aliev
>Assignee: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> h3. Motivation
> in order to track raft index and term on which configuration was applied to 
> raft, we need to add index and term to RaftGroupConfiguration
> h3. Implementation notes
> In order to achieve that, we have to propagate cfg index and term to snapshot 
> meta
> h3. Definition of done
> * Index and term are added to RaftGroupConfiguration



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


[jira] [Created] (IGNITE-24270) Change IdleVerifyResult output

2025-01-21 Thread Maksim Davydov (Jira)
Maksim Davydov created IGNITE-24270:
---

 Summary: Change IdleVerifyResult output 
 Key: IGNITE-24270
 URL: https://issues.apache.org/jira/browse/IGNITE-24270
 Project: Ignite
  Issue Type: Task
Reporter: Maksim Davydov


IdleVerifyResult#printConflicts(Consumer) output depends on 
code-specific class naming, like PartitionKey#toString(), and 
PartitionHashRecord#toString()

It's better to change the output, so that the IdleVerify command output doesn't 
depend on class naming



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


[jira] [Updated] (IGNITE-24269) Flaky ItStatisticTest.testStatisticsRowCount test

2025-01-21 Thread Iurii Gerzhedovich (Jira)


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

Iurii Gerzhedovich updated IGNITE-24269:

Description: 
We have periodically failed ItStatisticTest.testStatisticsRowCount test, which 
seems became flaky after IGNITE-23968.

Need to investigate the root cause and fix it.


{code:java}
java.lang.AssertionError: Invalid plan:
Exchange(distribution=[single]): rowcount = 48.15, cumulative cost = IgniteCost 
[rowCount=369.15, cpu=1332.15, memory=0.0, io=0.0, network=385.2], id = 357882
  TableScan(table=[[PUBLIC, T]], tableId=[16], filters=[=($t1, 502)], 
requiredColumns=[{0, 1}]): rowcount = 48.15, cumulative cost = IgniteCost 
[rowCount=321.0, cpu=1284.0, memory=0.0, io=0.0, network=0.0], id = 357881

Expected: a string contains once ".*(Table|Index)Scan\\(table=\\[\\[PUBLIC, 
T\\]\\].*\\]\\)\\:.*cumulative cost = IgniteCost \\[rowCount=500.0"
 but: was "Exchange(distribution=[single]): rowcount = 48.15, cumulative 
cost = IgniteCost [rowCount=369.15, cpu=1332.15, memory=0.0, io=0.0, 
network=385.2], id = 357882
  TableScan(table=[[PUBLIC, T]], tableId=[16], filters=[=($t1, 502)], 
requiredColumns=[{0, 1}]): rowcount = 48.15, cumulative cost = IgniteCost 
[rowCount=321.0, cpu=1284.0, memory=0.0, io=0.0, network=0.0], id = 357881
"java.lang.AssertionError: Invalid plan:Exchange(distribution=[single]): 
rowcount = 48.15, cumulative cost = IgniteCost [rowCount=369.15, cpu=1332.15, 
memory=0.0, io=0.0, network=385.2], id = 357882  TableScan(table=[[PUBLIC, T]], 
tableId=[16], filters=[=($t1, 502)], requiredColumns=[{0, 1}]): rowcount = 
48.15, cumulative cost = IgniteCost [rowCount=321.0, cpu=1284.0, memory=0.0, 
io=0.0, network=0.0], id = 357881Expected: a string contains once 
".*(Table|Index)Scan\\(table=\\[\\[PUBLIC, T\\]\\].*\\]\\)\\:.*cumulative cost 
= IgniteCost \\[rowCount=500.0" but: was "Exchange(distribution=[single]): 
rowcount = 48.15, cumulative cost = IgniteCost [rowCount=369.15, cpu=1332.15, 
memory=0.0, io=0.0, network=385.2], id = 357882  TableScan(table=[[PUBLIC, T]], 
tableId=[16], filters=[=($t1, 502)], requiredColumns=[{0, 1}]): rowcount = 
48.15, cumulative cost = IgniteCost [rowCount=321.0, cpu=1284.0, memory=0.0, 
io=0.0, network=0.0], id = 357881" {code}
  
[https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/8798092]

  was:
We have periodically failed ItStatisticTest.testStatisticsRowCount test, which 
seems became flaky after IGNITE-23968.

Need to investigate the root cause and fix it.

  
https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/8798092


> Flaky ItStatisticTest.testStatisticsRowCount test
> -
>
> Key: IGNITE-24269
> URL: https://issues.apache.org/jira/browse/IGNITE-24269
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We have periodically failed ItStatisticTest.testStatisticsRowCount test, 
> which seems became flaky after IGNITE-23968.
> Need to investigate the root cause and fix it.
> {code:java}
> java.lang.AssertionError: Invalid plan:
> Exchange(distribution=[single]): rowcount = 48.15, cumulative cost = 
> IgniteCost [rowCount=369.15, cpu=1332.15, memory=0.0, io=0.0, network=385.2], 
> id = 357882
>   TableScan(table=[[PUBLIC, T]], tableId=[16], filters=[=($t1, 502)], 
> requiredColumns=[{0, 1}]): rowcount = 48.15, cumulative cost = IgniteCost 
> [rowCount=321.0, cpu=1284.0, memory=0.0, io=0.0, network=0.0], id = 357881
> Expected: a string contains once ".*(Table|Index)Scan\\(table=\\[\\[PUBLIC, 
> T\\]\\].*\\]\\)\\:.*cumulative cost = IgniteCost \\[rowCount=500.0"
>  but: was "Exchange(distribution=[single]): rowcount = 48.15, cumulative 
> cost = IgniteCost [rowCount=369.15, cpu=1332.15, memory=0.0, io=0.0, 
> network=385.2], id = 357882
>   TableScan(table=[[PUBLIC, T]], tableId=[16], filters=[=($t1, 502)], 
> requiredColumns=[{0, 1}]): rowcount = 48.15, cumulative cost = IgniteCost 
> [rowCount=321.0, cpu=1284.0, memory=0.0, io=0.0, network=0.0], id = 357881
> "java.lang.AssertionError: Invalid plan:Exchange(distribution=[single]): 
> rowcount = 48.15, cumulative cost = IgniteCost [rowCount=369.15, cpu=1332.15, 
> memory=0.0, io=0.0, network=385.2], id = 357882  TableScan(table=[[PUBLIC, 
> T]], tableId=[16], filters=[=($t1, 502)], requiredColumns=[{0, 1}]): rowcount 
> = 48.15, cumulative cost = IgniteCost [rowCount=321.0, cpu=1284.0, 
> memory=0.0, io=0.0, network=0.0], id = 357881Expected: a string contains once 
> ".*(Table|Index)Scan\\(table=\\[\\[PUBLIC, T\\]\\].*\\]\\)\\:.*cumulative 
> cost = IgniteCost \\[rowCount=500.0" but: was 
> "Exchange(distribution=[single]): rowcount = 48.15, cumulative cost = 
> IgniteCost [rowCount=

[jira] [Updated] (IGNITE-24269) Flaky ItStatisticTest.testStatisticsRowCount test

2025-01-21 Thread Iurii Gerzhedovich (Jira)


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

Iurii Gerzhedovich updated IGNITE-24269:

Component/s: sql

> Flaky ItStatisticTest.testStatisticsRowCount test
> -
>
> Key: IGNITE-24269
> URL: https://issues.apache.org/jira/browse/IGNITE-24269
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We have periodically failed ItStatisticTest.testStatisticsRowCount test, 
> which seems became flaky after IGNITE-23968.
> Need to investigate the root cause and fix it.
>   
> https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/8798092



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


[jira] [Assigned] (IGNITE-24238) ItIgniteDistributionZoneManagerNodeRestartTest#testCreationZoneWhenDataNodesAreDeletedIsNotSuccessful

2025-01-21 Thread Aleksandr Polovtsev (Jira)


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

Aleksandr Polovtsev reassigned IGNITE-24238:


Assignee: Aleksandr Polovtsev

> ItIgniteDistributionZoneManagerNodeRestartTest#testCreationZoneWhenDataNodesAreDeletedIsNotSuccessful
>   
> ---
>
> Key: IGNITE-24238
> URL: https://issues.apache.org/jira/browse/IGNITE-24238
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Mirza Aliev
>Assignee: Aleksandr Polovtsev
>Priority: Major
>  Labels: ignite-3
>
> {{ItIgniteDistributionZoneManagerNodeRestartTest#testCreationZoneWhenDataNodesAreDeletedIsNotSuccessful}}
>  is flaky with 
> {noformat}
> org.mockito.exceptions.misusing.UnfinishedStubbingException: 
> Unfinished stubbing detected here:
> -> at 
> org.apache.ignite.internal.distributionzones.ItIgniteDistributionZoneManagerNodeRestartTest.testCreationZoneWhenDataNodesAreDeletedIsNotSuccessful(ItIgniteDistributionZoneManagerNodeRestartTest.java:642)
> E.g. thenReturn() may be missing.
> Examples of correct stubbing:
> when(mock.isOk()).thenReturn(true);
> when(mock.isOk()).thenThrow(exception);
> doThrow(exception).when(mock).someVoidMethod();
> Hints:
>  1. missing thenReturn()
>  2. you are trying to stub a final method, which is not supported
>  3. you are stubbing the behaviour of another mock inside before 'thenReturn' 
> instruction is completed
> org.mockito.exceptions.misusing.UnfinishedStubbingException:
> Unfinished stubbing detected here:
> -> at 
> org.apache.ignite.internal.distributionzones.ItIgniteDistributionZoneManagerNodeRestartTest.testCreationZoneWhenDataNodesAreDeletedIsNotSuccessful(ItIgniteDistributionZoneManagerNodeRestartTest.java:642)
> E.g. thenReturn() may be missing.
> Examples of correct stubbing:
> when(mock.isOk()).thenReturn(true);
> when(mock.isOk()).thenThrow(exception);
> doThrow(exception).when(mock).someVoidMethod();
> Hints:
>  1. missing thenReturn()
>  2. you are trying to stub a final method, which is not supported
>  3. you are stubbing the behaviour of another mock inside before 'thenReturn' 
> instruction is completed
>   at 
> app//org.apache.ignite.internal.metastorage.impl.MetaStorageManagerImpl.invoke(MetaStorageManagerImpl.java:991)
>   at 
> app//org.apache.ignite.internal.distributionzones.ItIgniteDistributionZoneManagerNodeRestartTest.testCreationZoneWhenDataNodesAreDeletedIsNotSuccessful(ItIgniteDistributionZoneManagerNodeRestartTest.java:651)
>   at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
>   at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
>   at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
> {noformat}
> It seems that we have some concurrent access to MS that is supposed to be 
> stubed.
> Form Mockito docs: 
> {noformat}
> However Mockito is only thread-safe in healthy tests, that is tests without 
> multiple threads stubbing/verifying a shared mock. 
> Stubbing or verification of a shared mock from different threads is NOT the 
> proper way of testing because it will always lead to intermittent behavior. 
> In general, mutable state + assertions in multi-threaded environment lead to 
> random results. 
> If you do stub/verify a shared mock across threads you will face occasional 
> exceptions like: WrongTypeOfReturnValue, etc.*
> {noformat}



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


[jira] [Created] (IGNITE-24273) Investigate flaky ItNodeTest#testInstallSnapshot

2025-01-21 Thread Kirill Tkalenko (Jira)
Kirill Tkalenko created IGNITE-24273:


 Summary: Investigate flaky ItNodeTest#testInstallSnapshot
 Key: IGNITE-24273
 URL: https://issues.apache.org/jira/browse/IGNITE-24273
 Project: Ignite
  Issue Type: Task
Reporter: Kirill Tkalenko
Assignee: Kirill Tkalenko


We need to deal with flaky 
*org.apache.ignite.raft.jraft.core.ItNodeTest#testInstallSnapshot*.

Link to 
[TC|https://ci.ignite.apache.org/viewLog.html?buildId=8794190&buildTypeId=ApacheIgnite3xGradle_Test_IntegrationTests_ModuleRaft&tab=buildResultsDiv].

{noformat}
org.opentest4j.AssertionFailedError: expected: <2> but was: <1>
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at 
app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at 
app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
at 
app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
at 
app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:531)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.triggerLeaderSnapshot(ItNodeTest.java:4635)
at 
app//org.apache.ignite.raft.jraft.core.ItNodeTest.testInstallSnapshot(ItNodeTest.java:2274)
at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base@17.0.6/java.util.ArrayList.forEach(ArrayList.java:1511)
{noformat}



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


[jira] [Updated] (IGNITE-24242) Add Configuration keys for Transaction Timeout

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-24242:
-
Labels: ignite-3  (was: )

> Add Configuration keys for Transaction Timeout
> --
>
> Key: IGNITE-24242
> URL: https://issues.apache.org/jira/browse/IGNITE-24242
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr
>Assignee: Aleksandr
>Priority: Major
>  Labels: ignite-3
>
> transaction.roTimeout and transaction.rwTimeout should be added. Also, the 
> following configuration keys might be added: 
> transaction: {
>   minRoTimeout, maxRoTimeout, minRwTimeout, maxRwTimeout
> }



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


[jira] [Updated] (IGNITE-24246) Benchmarks for Transaction Timeout

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-24246:
-
Labels: ignite-3  (was: )

> Benchmarks for Transaction Timeout
> --
>
> Key: IGNITE-24246
> URL: https://issues.apache.org/jira/browse/IGNITE-24246
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr
>Priority: Major
>  Labels: ignite-3
>
> The "tracking" of transactions must not introduce any performance 
> degradation. Benchmarks should prove that.



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


[jira] [Updated] (IGNITE-24245) Introduce a error code for Transaction Timeout.

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-24245:
-
Labels: ignite-3  (was: )

> Introduce a error code for Transaction Timeout. 
> 
>
> Key: IGNITE-24245
> URL: https://issues.apache.org/jira/browse/IGNITE-24245
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr
>Priority: Major
>  Labels: ignite-3
>
> TransactionException is thrown with the corresponding message and error code 
> TX_TIMEOUT_EXCEEDED. The exception is the same as we throw for finished 
> transactions but for different reasons.
> The “reason” is held in TxMeta.reason.



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


[jira] [Updated] (IGNITE-24244) Track Rw transactions timeout

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-24244:
-
Labels: ignite-3  (was: )

> Track Rw transactions timeout
> -
>
> Key: IGNITE-24244
> URL: https://issues.apache.org/jira/browse/IGNITE-24244
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr
>Priority: Major
>  Labels: ignite-3
>
> TransactionExpirationRegistry is used to track Ro transactions. Rw should be 
> tracked there as well.



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


[jira] [Updated] (IGNITE-24243) SQL: query_timeout should be used as transaction timeout

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-24243:
-
Labels: ignite-3  (was: )

> SQL: query_timeout should be used as transaction timeout
> 
>
> Key: IGNITE-24243
> URL: https://issues.apache.org/jira/browse/IGNITE-24243
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr
>Priority: Major
>  Labels: ignite-3
>
> In SQL query_timeout can be re-used for the transaction timeout. This 
> property is already used for the query timeout. The only thing that should be 
> done is to set the query_timeout as the transaction timeout for the 
> transaction that is started implicitly.



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


[jira] [Updated] (IGNITE-24088) Introduce chain and link abstractions

2025-01-21 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-24088:
-
Labels: ignite-3  (was: )

> Introduce chain and link abstractions
> -
>
> Key: IGNITE-24088
> URL: https://issues.apache.org/jira/browse/IGNITE-24088
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>




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


[jira] [Updated] (IGNITE-24029) Sql schema. Extend Table API with supporting qualified names.

2025-01-21 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-24029:
--
Description: 
It is necessary to introduce new methods in IgniteTables that use 
{{QualifiedName}} instead of simple String.
And change the old ones to use the new ones using the helper method 
{{{}QualifiedName.parseof(String){}}}.
{code:java}
interface IgniteTables {
/** Gets a list of all tables */
List tables();

/** Gets a list of tables that belong to requested schema. */
List tables(String schemaName); // optional

/** Gets a table with specified name. */
@Nullable Table table(QualifiedName tableName);
@Nullable Table table(String tableName) {
return table(QualifiedName.parseof(tableName));
}

/* ... + async methods ... */
}

public interface Table {   
    /** Returns table's qualified name. */
QualifiedName tableName();
} 
{code}
Add integration tests, which checks cache names are correctly resolved.
Add table::name that returns a QualifiedName.

  was:
It is necessary to introduce new methods in IgniteTables that use 
{{QualifiedName}} instead of simple String.
And change the old ones to use the new ones using the helper method 
{{{}QualifiedName.parseof(String){}}}.
{code:java}
interface IgniteTables {
/** Gets a list of all tables */
List tables();

/** Gets a list of tables that belong to requested schema. */
List tables(String schemaName); // optional

/** Gets a table with specified name. */
@Nullable Table table(QualifiedName tableName);
@Nullable Table table(String tableName) {
return table(QualifiedName.parseof(tableName));
}

/* ... + async methods ... */
}

public interface Table {   
    /** Returns table's qualified name. */
QualifiedName tableName();
} 
{code}
Add integration tests, which checks cache names are correctly resolved.
Add table::name that returns a QualifiedName.
Mark table::name that returns a string as deprecated.


> Sql schema. Extend Table API with supporting qualified names.
> -
>
> Key: IGNITE-24029
> URL: https://issues.apache.org/jira/browse/IGNITE-24029
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Pereslegin
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> It is necessary to introduce new methods in IgniteTables that use 
> {{QualifiedName}} instead of simple String.
> And change the old ones to use the new ones using the helper method 
> {{{}QualifiedName.parseof(String){}}}.
> {code:java}
> interface IgniteTables {
> /** Gets a list of all tables */
> List tables();
> /** Gets a list of tables that belong to requested schema. */
> List tables(String schemaName); // optional
> /** Gets a table with specified name. */
> @Nullable Table table(QualifiedName tableName);
> @Nullable Table table(String tableName) {
> return table(QualifiedName.parseof(tableName));
> }
> /* ... + async methods ... */
> }
> public interface Table {   
>     /** Returns table's qualified name. */
> QualifiedName tableName();
> } 
> {code}
> Add integration tests, which checks cache names are correctly resolved.
> Add table::name that returns a QualifiedName.



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


[jira] [Created] (IGNITE-24269) Flaky ItStatisticTest.testStatisticsRowCount test

2025-01-21 Thread Iurii Gerzhedovich (Jira)
Iurii Gerzhedovich created IGNITE-24269:
---

 Summary: Flaky ItStatisticTest.testStatisticsRowCount test
 Key: IGNITE-24269
 URL: https://issues.apache.org/jira/browse/IGNITE-24269
 Project: Ignite
  Issue Type: Bug
Reporter: Iurii Gerzhedovich


We have periodically failed ItStatisticTest.testStatisticsRowCount test, which 
seems became flaky after IGNITE-23968.

Need to investigate the root cause and fix it.

  
https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/8798092



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


[jira] [Updated] (IGNITE-24029) Sql schema. Extend Table API with supporting qualified names.

2025-01-21 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-24029:

Fix Version/s: 3.0

> Sql schema. Extend Table API with supporting qualified names.
> -
>
> Key: IGNITE-24029
> URL: https://issues.apache.org/jira/browse/IGNITE-24029
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Pereslegin
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> It is necessary to introduce new methods in IgniteTables that use 
> {{QualifiedName}} instead of simple String.
> And change the old ones to use the new ones using the helper method 
> {{{}QualifiedName.parseof(String){}}}.
> {code:java}
> interface IgniteTables {
> /** Gets a list of all tables */
> List tables();
> /** Gets a list of tables that belong to requested schema. */
> List tables(String schemaName); // optional
> /** Gets a table with specified name. */
> @Nullable Table table(QualifiedName tableName);
> @Nullable Table table(String tableName) {
> return table(QualifiedName.parseof(tableName));
> }
> /* ... + async methods ... */
> }
> public interface Table {   
>     /** Returns table's qualified name. */
> QualifiedName tableName();
> } 
> {code}
> Add integration tests, which checks cache names are correctly resolved.
> Add table::name that returns a QualifiedName.



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


[jira] [Assigned] (IGNITE-24269) Flaky ItStatisticTest.testStatisticsRowCount test

2025-01-21 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov reassigned IGNITE-24269:
-

Assignee: Konstantin Orlov

> Flaky ItStatisticTest.testStatisticsRowCount test
> -
>
> Key: IGNITE-24269
> URL: https://issues.apache.org/jira/browse/IGNITE-24269
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Iurii Gerzhedovich
>Assignee: Konstantin Orlov
>Priority: Major
>  Labels: ignite-3
>
> We have periodically failed ItStatisticTest.testStatisticsRowCount test, 
> which seems became flaky after IGNITE-23968.
> Need to investigate the root cause and fix it.
> {code:java}
> java.lang.AssertionError: Invalid plan:
> Exchange(distribution=[single]): rowcount = 48.15, cumulative cost = 
> IgniteCost [rowCount=369.15, cpu=1332.15, memory=0.0, io=0.0, network=385.2], 
> id = 357882
>   TableScan(table=[[PUBLIC, T]], tableId=[16], filters=[=($t1, 502)], 
> requiredColumns=[{0, 1}]): rowcount = 48.15, cumulative cost = IgniteCost 
> [rowCount=321.0, cpu=1284.0, memory=0.0, io=0.0, network=0.0], id = 357881
> Expected: a string contains once ".*(Table|Index)Scan\\(table=\\[\\[PUBLIC, 
> T\\]\\].*\\]\\)\\:.*cumulative cost = IgniteCost \\[rowCount=500.0"
>  but: was "Exchange(distribution=[single]): rowcount = 48.15, cumulative 
> cost = IgniteCost [rowCount=369.15, cpu=1332.15, memory=0.0, io=0.0, 
> network=385.2], id = 357882
>   TableScan(table=[[PUBLIC, T]], tableId=[16], filters=[=($t1, 502)], 
> requiredColumns=[{0, 1}]): rowcount = 48.15, cumulative cost = IgniteCost 
> [rowCount=321.0, cpu=1284.0, memory=0.0, io=0.0, network=0.0], id = 357881
> "java.lang.AssertionError: Invalid plan:Exchange(distribution=[single]): 
> rowcount = 48.15, cumulative cost = IgniteCost [rowCount=369.15, cpu=1332.15, 
> memory=0.0, io=0.0, network=385.2], id = 357882  TableScan(table=[[PUBLIC, 
> T]], tableId=[16], filters=[=($t1, 502)], requiredColumns=[{0, 1}]): rowcount 
> = 48.15, cumulative cost = IgniteCost [rowCount=321.0, cpu=1284.0, 
> memory=0.0, io=0.0, network=0.0], id = 357881Expected: a string contains once 
> ".*(Table|Index)Scan\\(table=\\[\\[PUBLIC, T\\]\\].*\\]\\)\\:.*cumulative 
> cost = IgniteCost \\[rowCount=500.0" but: was 
> "Exchange(distribution=[single]): rowcount = 48.15, cumulative cost = 
> IgniteCost [rowCount=369.15, cpu=1332.15, memory=0.0, io=0.0, network=385.2], 
> id = 357882  TableScan(table=[[PUBLIC, T]], tableId=[16], filters=[=($t1, 
> 502)], requiredColumns=[{0, 1}]): rowcount = 48.15, cumulative cost = 
> IgniteCost [rowCount=321.0, cpu=1284.0, memory=0.0, io=0.0, network=0.0], id 
> = 357881" {code}
>   
> [https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/8798092]



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


[jira] [Commented] (IGNITE-24178) Remove idleVerifyV1 related code

2025-01-21 Thread Maksim Davydov (Jira)


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

Maksim Davydov commented on IGNITE-24178:
-

https://tcbot2.sbt-ignite-dev.ru/pr.html?serverId=apache&suiteId=IgniteTests24Java8_RunAll&branchForTc=pull/11801/head&action=Latest

> Remove idleVerifyV1 related code
> 
>
> Key: IGNITE-24178
> URL: https://issues.apache.org/jira/browse/IGNITE-24178
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Maksim Davydov
>Assignee: Maksim Davydov
>Priority: Major
>  Labels: IEP-132, ise
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> The code related to the old idleVerifyV1 task is still present in the code 
> base. Since it is not used the classes like 
> RetrieveConflictPartitionValuesTask, CollectConflictPartitionKeysTask, and 
> related code need to be removed.



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


[jira] [Created] (IGNITE-24274) Sql. Inbox push throws Assertion error when called after Inbox close

2025-01-21 Thread Maksim Zhuravkov (Jira)
Maksim Zhuravkov created IGNITE-24274:
-

 Summary: Sql. Inbox push throws Assertion error when called after 
Inbox close
 Key: IGNITE-24274
 URL: https://issues.apache.org/jira/browse/IGNITE-24274
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Maksim Zhuravkov


Inbox operator does not handle closing properly, because it is possible to 
invoke Inbox close, then to get a queued call to Inbox doPush and get 
AssertionError as a result. 

Can be reproduced by ItSqlSynchronousApiTest cancelLongRunningStatement that 
cancels a DML query during execution. 




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


[jira] [Updated] (IGNITE-24274) Sql. Inbox push throws AssertionError when called after Inbox close

2025-01-21 Thread Maksim Zhuravkov (Jira)


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

Maksim Zhuravkov updated IGNITE-24274:
--
Summary: Sql. Inbox push throws AssertionError when called after Inbox 
close  (was: Sql. Inbox push throws Assertion error when called after Inbox 
close)

> Sql. Inbox push throws AssertionError when called after Inbox close
> ---
>
> Key: IGNITE-24274
> URL: https://issues.apache.org/jira/browse/IGNITE-24274
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
>
> Inbox operator does not handle closing properly, because it is possible to 
> invoke Inbox close, then to get a queued call to Inbox doPush and get an 
> AssertionError.
> Can be reproduced by ItSqlSynchronousApiTest cancelLongRunningStatement that 
> cancels a DML query during execution. 



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


[jira] [Updated] (IGNITE-24274) Sql. Inbox push throws Assertion error when called after Inbox close

2025-01-21 Thread Maksim Zhuravkov (Jira)


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

Maksim Zhuravkov updated IGNITE-24274:
--
Description: 
Inbox operator does not handle closing properly, because it is possible to 
invoke Inbox close, then to get a queued call to Inbox doPush and get an 
AssertionError.

Can be reproduced by ItSqlSynchronousApiTest cancelLongRunningStatement that 
cancels a DML query during execution. 


  was:
Inbox operator does not handle closing properly, because it is possible to 
invoke Inbox close, then to get a queued call to Inbox doPush and get 
AssertionError as a result. 

Can be reproduced by ItSqlSynchronousApiTest cancelLongRunningStatement that 
cancels a DML query during execution. 



> Sql. Inbox push throws Assertion error when called after Inbox close
> 
>
> Key: IGNITE-24274
> URL: https://issues.apache.org/jira/browse/IGNITE-24274
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
>
> Inbox operator does not handle closing properly, because it is possible to 
> invoke Inbox close, then to get a queued call to Inbox doPush and get an 
> AssertionError.
> Can be reproduced by ItSqlSynchronousApiTest cancelLongRunningStatement that 
> cancels a DML query during execution. 



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


[jira] [Updated] (IGNITE-24224) Broken serialization of communication messages in cluster with SSL enabled.

2025-01-21 Thread Nikita Amelchev (Jira)


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

Nikita Amelchev updated IGNITE-24224:
-
Fix Version/s: 2.17

> Broken serialization of communication messages in cluster with SSL enabled.
> ---
>
> Key: IGNITE-24224
> URL: https://issues.apache.org/jira/browse/IGNITE-24224
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mikhail Petrov
>Assignee: Mikhail Petrov
>Priority: Blocker
>  Labels: ise
> Fix For: 2.17
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> The following code can be considered as a reproducer of the problem.
> Its main goal is to cause Ignite to be overloaded with communication 
> messages. In this particular case it will be GridJobExecuteRequest and 
> GridJobExecuteResponce spamming.
> {code:java}
> /** */
> public class BrokenSerializationTest extends AbstractSecurityTest {
> /** {@inheritDoc} */
> @Override protected IgniteConfiguration getConfiguration(String 
> igniteInstanceName) throws Exception {
> SslContextFactory factory = 
> (SslContextFactory)sslTrustedFactory("server", "trustone");
> IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName)
> .setSslContextFactory(factory)
> .setFailureHandler(new StopNodeOrHaltFailureHandler());
> cfg.setCommunicationSpi(new 
> TcpCommunicationSpi().setUnacknowledgedMessagesBufferSize(160)); // Small 
> values of this property causes Ignite to frequently reestablish connection 
> between nodes.
> return cfg;
> }
> /** Tests task execution security context in case task was initiated from 
> the {@link IgniteClient}. */
> @Test
> public void test() throws Exception {
> IgniteEx ignite = startGridAllowAll("crd");
> startGridAllowAll("srv1");
> startGridAllowAll("srv2");
> startGridAllowAll("srv3");
> startGridAllowAll("srv4");
> startGridAllowAll("srv5");
> awaitPartitionMapExchange();
> Set errors = ConcurrentHashMap.newKeySet();
> Set> futs = ConcurrentHashMap.newKeySet();
> CountDownLatch latch = new CountDownLatch(16 * 1);
> for (int i = 0; i < 16; i++) {
> GridTestUtils.runAsync(() -> {
> try {
> U.sleep(1000);
> for (int j = 0; j < 1; j++) {
> futs.add(ignite.context().task(). Integer>execute(
> TestTask.class.getName(),
> null,
> 
> TaskExecutionOptions.options().asPublicRequest().withProjection(ignite.cluster().nodes())
> ).publicFuture());
> latch.countDown();
> }
> }
> catch (Throwable e) {
> errors.add(e);
> }
> });
> }
> latch.await(getTestTimeout(), TimeUnit.MILLISECONDS);
> assertTrue(errors.isEmpty());
> for (ComputeTaskFuture fut : futs) {
> assertTrue(null == fut.get(getTestTimeout()));
> }
> }
> /** */
> public static class TestTask implements ComputeTask {
> /** {@inheritDoc} */
> @Override public @NotNull Map map(
> List subgrid,
> @Nullable Void arg
> ) throws IgniteException {
> Map res = new HashMap<>();
> for (ClusterNode node : subgrid) {
> res.put(new ComputeJob() {
> @Override public void cancel() {
> // No-op.
> }
> @Override public Object execute() throws IgniteException {
> return null;
> }
> }, node);
> }
> return res;
> }
> /** {@inheritDoc} */
> @Override public ComputeJobResultPolicy result(ComputeJobResult res, 
> List rcvd) {
> if (res.getException() != null)
> throw new IgniteException(res.getException());
> return ComputeJobResultPolicy.WAIT;
> }
> /** {@inheritDoc} */
> @Override public @Nullable Integer reduce(List 
> results) throws IgniteException {
> assertEquals(allGrids().size(), results.size());
> return null;
> }
> }
> }
> {code}
> It does not reproduce the problem sequentially because the problem is related 
> to cases when only part of the message is read into the application buffer 
> while reading from the socket.
> While this reproducer is in progress you can witness different errors related 
> to communication message handling e.g.
> {code:java}

[jira] [Updated] (IGNITE-24095) Remove FORCE_AFF_REASSIGNMENT_SINCE

2025-01-21 Thread Vladislav Novikov (Jira)


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

Vladislav Novikov updated IGNITE-24095:
---
Fix Version/s: 2.18

> Remove FORCE_AFF_REASSIGNMENT_SINCE
> ---
>
> Key: IGNITE-24095
> URL: https://issues.apache.org/jira/browse/IGNITE-24095
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Nikolay Izhikov
>Assignee: Vladislav Novikov
>Priority: Major
>  Labels: IEP-132, ise
> Fix For: 2.18
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>




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