[jira] [Created] (IGNITE-18170) Deadlock in TableManager#updateAssignmentInternal()

2022-11-15 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-18170:
--

 Summary: Deadlock in TableManager#updateAssignmentInternal()
 Key: IGNITE-18170
 URL: https://issues.apache.org/jira/browse/IGNITE-18170
 Project: Ignite
  Issue Type: Bug
Reporter: Roman Puchkovskiy
Assignee: Roman Puchkovskiy
 Fix For: 3.0.0-beta2


TBD



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


[jira] [Updated] (IGNITE-18163) Old-style join on different column types fails with ClassCastException

2022-11-15 Thread Evgeny Stanilovsky (Jira)


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

Evgeny Stanilovsky updated IGNITE-18163:

Labels: calcite3-required ignite-3  (was: ignite-3)

> Old-style join on different column types fails with ClassCastException
> --
>
> Key: IGNITE-18163
> URL: https://issues.apache.org/jira/browse/IGNITE-18163
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: calcite3-required, ignite-3
> Fix For: 3.0.0-beta2
>
>
> Query:
> {code}
> select _T0.KEY, _T1.VAL from PUBLIC.TBL1 as _T0, PUBLIC.TBL_INT32 as _T1 
> where _T0.KEY IS NOT DISTINCT FROM _T1.KEY
> {code}
> Result:
> {code}
> org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
> TraceId:ef4217b1-04ef-4f08-b1c3-76effc3fc262 class java.lang.Long cannot be 
> cast to class java.lang.Integer (java.lang.Long and java.lang.Integer are in 
> module java.base of loader 'bootstrap')
>   at org.apache.ignite.lang.IgniteException.wrap(IgniteException.java:289)
>   at 
> org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$0(AsyncSqlCursorImpl.java:77)
>   at 
> java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
>   at 
> java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
>   at 
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>   at 
> java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.lambda$closeAsync$0(AsyncRootNode.java:193)
>   at 
> java.base/java.util.concurrent.LinkedBlockingQueue.forEachFrom(LinkedBlockingQueue.java:1010)
>   at 
> java.base/java.util.concurrent.LinkedBlockingQueue.forEach(LinkedBlockingQueue.java:979)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.closeAsync(AsyncRootNode.java:193)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.onError(AsyncRootNode.java:148)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.onError(MergeJoinNode.java:124)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:205)
>   at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$2(ExchangeServiceImpl.java:81)
>   at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:164)
>   at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$3(MessageServiceImpl.java:133)
>   at 
> org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:80)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>   at java.base/java.lang.Thread.run(Thread.java:829)
> Caused by: java.lang.ClassCastException: class java.lang.Long cannot be cast 
> to class java.lang.Integer (java.lang.Long and java.lang.Integer are in 
> module java.base of loader 'bootstrap')
>   at java.base/java.lang.Integer.compareTo(Integer.java:59)
>   at 
> org.apache.calcite.rel.RelFieldCollation.compare(RelFieldCollation.java:43)
>   at 
> org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl.compare(ExpressionFactoryImpl.java:235)
>   at 
> org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl$2.compare(ExpressionFactoryImpl.java:217)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$InnerJoin.join(MergeJoinNode.java:318)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode.pushLeft(MergeJoinNode.java:162)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.push(MergeJoinNode.java:112)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushOrdered(Inbox.java:259)
>   at 
> org.apache.ignite.intern

[jira] [Updated] (IGNITE-18168) SQL: incorrect sum of several FLOAT values

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18168:
---
Labels: calcite calcite2-required calcite3-required  (was: 
calcite2-required calcite3-required)

> SQL: incorrect sum of several FLOAT values
> --
>
> Key: IGNITE-18168
> URL: https://issues.apache.org/jira/browse/IGNITE-18168
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: calcite, calcite2-required, calcite3-required
>
> This behavior seems incorrect:
> {code:sql}
> create table xx (key_field INT PRIMARY KEY,field2 FLOAT);
> insert into xx (key_field,field2) values (1, 10);
> insert into xx (key_field,field2) values (2, 5);
> insert into xx (key_field,field2) values (3, 3);
> insert into xx (key_field,field2) values (4, 5.1);
> insert into xx (key_field,field2) values (5, 3);
> insert into xx (key_field,field2) values (6, 4);
> insert into xx (key_field,field2) values (7, 2);
> insert into xx (key_field,field2) values (8, 8);
> insert into xx (key_field,field2) values (9, 3);
> insert into xx (key_field,field2) values (10,9);
> insert into xx (key_field,field2) values (11,9);
> SELECT SUM(field2) FROM xx;
> --> returns 61.1015625, expected 61.1
> {code}
>  



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


[jira] [Updated] (IGNITE-18168) SQL: incorrect sum of several FLOAT values

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18168:
---
Labels: calcite2-required calcite3-required  (was: ignite-3)

> SQL: incorrect sum of several FLOAT values
> --
>
> Key: IGNITE-18168
> URL: https://issues.apache.org/jira/browse/IGNITE-18168
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: calcite2-required, calcite3-required
>
> This behavior seems incorrect:
> {code:sql}
> create table xx (key_field INT PRIMARY KEY,field2 FLOAT);
> insert into xx (key_field,field2) values (1, 10);
> insert into xx (key_field,field2) values (2, 5);
> insert into xx (key_field,field2) values (3, 3);
> insert into xx (key_field,field2) values (4, 5.1);
> insert into xx (key_field,field2) values (5, 3);
> insert into xx (key_field,field2) values (6, 4);
> insert into xx (key_field,field2) values (7, 2);
> insert into xx (key_field,field2) values (8, 8);
> insert into xx (key_field,field2) values (9, 3);
> insert into xx (key_field,field2) values (10,9);
> insert into xx (key_field,field2) values (11,9);
> SELECT SUM(field2) FROM xx;
> --> returns 61.1015625, expected 61.1
> {code}
>  



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


[jira] [Updated] (IGNITE-18166) SQL: LIKE predicate is not supported for BINARY data

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18166:
---
Labels: calcite calcite2-required calcite3-required  (was: )

> SQL: LIKE predicate is not supported for BINARY data
> 
>
> Key: IGNITE-18166
> URL: https://issues.apache.org/jira/browse/IGNITE-18166
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: calcite, calcite2-required, calcite3-required
>
> A 'T022' feature in SQL standard allows to use LIKE predicate for BINARY 
> data. Unfortunately, it is not supported in AI3 beta1:
> {code:sql}
> create table tmp_table_binary (key_field INT PRIMARY KEY,field1 BINARY);
> INSERT INTO tmp_table_binary (key_field, field1) values(1, '00ffaa');
> INSERT INTO tmp_table_binary (key_field, field1) values(2, 'ffcc');
> select * from tmp_table_binary where field1 like '%ff%'; -- 
> expected to return both rows
> select * from tmp_table_binary where field1 like '_f%';  -- 
> expected to return 'ffcc'
> select * from tmp_table_binary where field1 like '_fc_'; -- 
> expected to return 'ffcc'
> {code}
> Instead of returning data, all queries show the following error:
> {code:java}
> Error: Exception while executing query [query=select * from tmp_table_binary 
> where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, 
> column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, 
> )'. Supported form(s): 'LIKE(, , )' 
> (state=5,code=0)
> java.sql.SQLException: Exception while executing query [query=select * from 
> tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 
> 38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 
> 'LIKE(, )'. Supported form(s): 'LIKE(, , 
> )'
> at 
> org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57)
> at 
> org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:148)
> at 
> org.apache.ignite.internal.jdbc.JdbcStatement.execute(JdbcStatement.java:341)
> ...
> {code}



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


[jira] [Updated] (IGNITE-18167) SQL: incorrect NULLIF behavior

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18167:
---
Labels: calcite calcite2-required calcite3-required  (was: )

> SQL: incorrect NULLIF behavior
> --
>
> Key: IGNITE-18167
> URL: https://issues.apache.org/jira/browse/IGNITE-18167
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: calcite, calcite2-required, calcite3-required
>
> A SQL spec says the following:
> ??NULLIF (V1 , V2) is equivalent to the following : CASE 
> WHEN V1 = V2 THEN NULL ELSE V1 END??
> When I try to run it, the rule above is true only for the simplest cases.
> {code:sql}
> select NULLIF(25, 25);  --> null(OK)
> select NULLIF(24, 25);  --> 24  (OK)
> select NULLIF('test', 'abc');   --> 'test'  (OK)
> select NULLIF('test', 'test');  --> ''  (should be null!)
> select NULLIF(24 + 1, 26 - 1);  --> error IGN-SQL-27(should be null!)
> {code}
> Probably, there are two defects: one is for wrong return value in case of 
> textual data, and another one is for error when expression within NULLIF is 
> used.



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


[jira] [Updated] (IGNITE-18168) SQL: incorrect sum of several FLOAT values

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18168:
---
Labels: ignite-3  (was: )

> SQL: incorrect sum of several FLOAT values
> --
>
> Key: IGNITE-18168
> URL: https://issues.apache.org/jira/browse/IGNITE-18168
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: ignite-3
>
> This behavior seems incorrect:
> {code:sql}
> create table xx (key_field INT PRIMARY KEY,field2 FLOAT);
> insert into xx (key_field,field2) values (1, 10);
> insert into xx (key_field,field2) values (2, 5);
> insert into xx (key_field,field2) values (3, 3);
> insert into xx (key_field,field2) values (4, 5.1);
> insert into xx (key_field,field2) values (5, 3);
> insert into xx (key_field,field2) values (6, 4);
> insert into xx (key_field,field2) values (7, 2);
> insert into xx (key_field,field2) values (8, 8);
> insert into xx (key_field,field2) values (9, 3);
> insert into xx (key_field,field2) values (10,9);
> insert into xx (key_field,field2) values (11,9);
> SELECT SUM(field2) FROM xx;
> --> returns 61.1015625, expected 61.1
> {code}
>  



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


[jira] [Created] (IGNITE-18169) IoomFailureHandlerTest.testIoomErrorPdsHandling fails on 64 core machines

2022-11-15 Thread Semyon Danilov (Jira)
Semyon Danilov created IGNITE-18169:
---

 Summary: IoomFailureHandlerTest.testIoomErrorPdsHandling fails on 
64 core machines
 Key: IGNITE-18169
 URL: https://issues.apache.org/jira/browse/IGNITE-18169
 Project: Ignite
  Issue Type: Bug
Affects Versions: 2.14
Reporter: Semyon Danilov
Assignee: Semyon Danilov


It seems like minimal fragment size of the data region is 1 megabyte. The 
quantity of fragments is equal to concurrency level + 1 (checkpoint buffer). So 
in case if we set up region size to 10 megabytes and we have 64 cores, then by 
default we will have concurrency level 64 and instead of 10 megabytes region 
size + 10 megabytes checkpoint buffer size we will have 64 megabytes region 
size.



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


[jira] [Created] (IGNITE-18168) SQL: incorrect sum of several FLOAT values

2022-11-15 Thread Andrey Khitrin (Jira)
Andrey Khitrin created IGNITE-18168:
---

 Summary: SQL: incorrect sum of several FLOAT values
 Key: IGNITE-18168
 URL: https://issues.apache.org/jira/browse/IGNITE-18168
 Project: Ignite
  Issue Type: Bug
  Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Andrey Khitrin


This behavior seems incorrect:
{code:sql}
create table xx (key_field INT PRIMARY KEY,field2 FLOAT);
insert into xx (key_field,field2) values (1, 10);
insert into xx (key_field,field2) values (2, 5);
insert into xx (key_field,field2) values (3, 3);
insert into xx (key_field,field2) values (4, 5.1);
insert into xx (key_field,field2) values (5, 3);
insert into xx (key_field,field2) values (6, 4);
insert into xx (key_field,field2) values (7, 2);
insert into xx (key_field,field2) values (8, 8);
insert into xx (key_field,field2) values (9, 3);
insert into xx (key_field,field2) values (10,9);
insert into xx (key_field,field2) values (11,9);
SELECT SUM(field2) FROM xx;
--> returns 61.1015625, expected 61.1
{code}
 



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


[jira] [Created] (IGNITE-18167) SQL: incorrect NULLIF behavior

2022-11-15 Thread Andrey Khitrin (Jira)
Andrey Khitrin created IGNITE-18167:
---

 Summary: SQL: incorrect NULLIF behavior
 Key: IGNITE-18167
 URL: https://issues.apache.org/jira/browse/IGNITE-18167
 Project: Ignite
  Issue Type: Bug
  Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Andrey Khitrin


A SQL spec says the following:

??NULLIF (V1 , V2) is equivalent to the following : CASE 
WHEN V1 = V2 THEN NULL ELSE V1 END??

When I try to run it, the rule above is true only for the simplest cases.

{code:sql}
select NULLIF(25, 25);  --> null(OK)
select NULLIF(24, 25);  --> 24  (OK)
select NULLIF('test', 'abc');   --> 'test'  (OK)
select NULLIF('test', 'test');  --> ''  (should be null!)
select NULLIF(24 + 1, 26 - 1);  --> error IGN-SQL-27(should be null!)
{code}

Probably, there are two defects: one is for wrong return value in case of 
textual data, and another one is for error when expression within NULLIF is 
used.



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


[jira] [Created] (IGNITE-18166) SQL: LIKE predicate is not supported for BINARY data

2022-11-15 Thread Andrey Khitrin (Jira)
Andrey Khitrin created IGNITE-18166:
---

 Summary: SQL: LIKE predicate is not supported for BINARY data
 Key: IGNITE-18166
 URL: https://issues.apache.org/jira/browse/IGNITE-18166
 Project: Ignite
  Issue Type: Bug
  Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Andrey Khitrin


A 'T022' feature in SQL standard allows to use LIKE predicate for BINARY data. 
Unfortunately, it is not supported in AI3 beta1:
{code:sql}
create table tmp_table_binary (key_field INT PRIMARY KEY,field1 BINARY);
INSERT INTO tmp_table_binary (key_field, field1) values(1, '00ffaa');
INSERT INTO tmp_table_binary (key_field, field1) values(2, 'ffcc');
select * from tmp_table_binary where field1 like '%ff%'; -- 
expected to return both rows
select * from tmp_table_binary where field1 like '_f%';  -- 
expected to return 'ffcc'
select * from tmp_table_binary where field1 like '_fc_'; -- 
expected to return 'ffcc'
{code}
Instead of returning data, all queries show the following error:
{code:java}
Error: Exception while executing query [query=select * from tmp_table_binary 
where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, 
column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, 
)'. Supported form(s): 'LIKE(, , )' 
(state=5,code=0)
java.sql.SQLException: Exception while executing query [query=select * from 
tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 
38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 
'LIKE(, )'. Supported form(s): 'LIKE(, , 
)'
at 
org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57)
at 
org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:148)
at 
org.apache.ignite.internal.jdbc.JdbcStatement.execute(JdbcStatement.java:341)
...
{code}



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


[jira] [Commented] (IGNITE-18052) Introduce short term locks for sorted indexes operations

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov commented on IGNITE-18052:
---

[~v.pyatkov] lgtm.

> Introduce short term locks for sorted indexes operations
> 
>
> Key: IGNITE-18052
> URL: https://issues.apache.org/jira/browse/IGNITE-18052
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> *Motivation:*
> In some case, required to release a specific lock before to release all locks 
> for the key in transaction. This temporary lock is also called a short term 
> lock.
> The issue is the implementation of HeapLockManager is release all locks for 
> specific key just worth to invoke a release method one time.
> There are no counters to conduct how many times lock was taken.
> *Definition of done:*
> Short term locks are acquired and released as described above.
> *Implementation notes:*
> A new method should be added:
> {code:java}
> // Some comments here
> void release(UUID txId, LockKey lockKey, LockMode lockMode);
> {code}



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


[jira] [Updated] (IGNITE-18052) Introduce short term locks for sorted indexes operations

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov updated IGNITE-18052:
--
Reviewer: Denis Chudov

> Introduce short term locks for sorted indexes operations
> 
>
> Key: IGNITE-18052
> URL: https://issues.apache.org/jira/browse/IGNITE-18052
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> *Motivation:*
> In some case, required to release a specific lock before to release all locks 
> for the key in transaction. This temporary lock is also called a short term 
> lock.
> The issue is the implementation of HeapLockManager is release all locks for 
> specific key just worth to invoke a release method one time.
> There are no counters to conduct how many times lock was taken.
> *Definition of done:*
> Short term locks are acquired and released as described above.
> *Implementation notes:*
> A new method should be added:
> {code:java}
> // Some comments here
> void release(UUID txId, LockKey lockKey, LockMode lockMode);
> {code}



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


[jira] (IGNITE-18162) PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky

2022-11-15 Thread Vyacheslav Koptilin (Jira)


[ https://issues.apache.org/jira/browse/IGNITE-18162 ]


Vyacheslav Koptilin deleted comment on IGNITE-18162:
--

was (Author: slava.koptilin):
LGTM

> PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky
> 
>
> Key: IGNITE-18162
> URL: https://issues.apache.org/jira/browse/IGNITE-18162
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Chudov
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> History: 
> https://ci.ignite.apache.org/project.html?branch_ignite3_Test=__all_branches__&tab=testDetails&projectId=ignite3_Test&testNameId=-7002518451967434454



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


[jira] [Updated] (IGNITE-18052) Introduce short term locks for sorted indexes operations

2022-11-15 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-18052:
---
Description: 
*Motivation:*
In some case, required to release a specific lock before to release all locks 
for the key in transaction. This temporary lock is also called a short term 
lock.
The issue is the implementation of HeapLockManager is release all locks for 
specific key just worth to invoke a release method one time.
There are no counters to conduct how many times lock was taken.

*Definition of done:*
Short term locks are acquired and released as described above.

*Implementation notes:*
A new method should be added:
{code:java}
// Some comments here
void release(UUID txId, LockKey lockKey, LockMode lockMode);
{code}

  was:
*Motivation:*
According to the transaction protocol IEP [1] insert operation in RW 
transactions for sortex index looks as follows:

_Unique index:_
// insert
IX_short(nextKey) // released after the insertion
X_commit(currentKey) // acquired before releasing IX_short

_Non-unique index:_
// insert
IX_short(nextKey)
X_commit(currentKey) if nextKey previously locked in S, X or SIX mode
IX_commit(currentKey) otherwise

This is necessary to avoid races between insert and scan operations. However, 
it's not yet implemented.

*Definition of done:*
Short term locks are acquired and released as described above.

*Implementation notes:*
For the code related to locks for indexes, see 
{{org.apache.ignite.internal.table.distributed.IndexLocker}}. We are interested 
in {{SortedIndexLocker}} implementation, method {{locksForInsert}}. Actually, 
there is some draft, but it is commented. 

[1] 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-91%3A+Transaction+protocol


> Introduce short term locks for sorted indexes operations
> 
>
> Key: IGNITE-18052
> URL: https://issues.apache.org/jira/browse/IGNITE-18052
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> *Motivation:*
> In some case, required to release a specific lock before to release all locks 
> for the key in transaction. This temporary lock is also called a short term 
> lock.
> The issue is the implementation of HeapLockManager is release all locks for 
> specific key just worth to invoke a release method one time.
> There are no counters to conduct how many times lock was taken.
> *Definition of done:*
> Short term locks are acquired and released as described above.
> *Implementation notes:*
> A new method should be added:
> {code:java}
> // Some comments here
> void release(UUID txId, LockKey lockKey, LockMode lockMode);
> {code}



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


[jira] [Updated] (IGNITE-18165) Apply short term loks to sorted indexes

2022-11-15 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-18165:
---
Description: 
*Motivation:*
Transaction isolation requires using short term locks in insert operation over 
sorted indexes. It was not implemented because short term locks had not 
supported.
According to the transaction protocol IEP [1] insert operation in RW 
transactions for sortex index looks as follows:

Unique index:
// insert
IX_short(nextKey) // released after the insertion
X_commit(currentKey) // acquired before releasing IX_short

Non-unique index:
// insert
IX_short(nextKey)
X_commit(currentKey) if nextKey previously locked in S, X or SIX mode
IX_commit(currentKey) otherwise

*Implementation notes:*
For the code related to locks for indexes, see 
org.apache.ignite.internal.table.distributed.IndexLocker. We are interested in 
SortedIndexLocker implementation, method locksForInsert. Actually, there is 
some draft, but it is commented.

[1] 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-91%3A+Transaction+protocol

  was:
*Motivation:*
Transaction isolation requires using short term locks in insert operation over 
sorted indexes. It was not implemented because short term locks had not 
supported.

*Implementation notes:*
According to the transaction protocol IEP [1] insert operation in RW 
transactions for sortex index looks as follows:

Unique index:
// insert
IX_short(nextKey) // released after the insertion
X_commit(currentKey) // acquired before releasing IX_short

Non-unique index:
// insert
IX_short(nextKey)
X_commit(currentKey) if nextKey previously locked in S, X or SIX mode
IX_commit(currentKey) otherwise

[1] 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-91%3A+Transaction+protocol


> Apply short term loks to sorted indexes
> ---
>
> Key: IGNITE-18165
> URL: https://issues.apache.org/jira/browse/IGNITE-18165
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> *Motivation:*
> Transaction isolation requires using short term locks in insert operation 
> over sorted indexes. It was not implemented because short term locks had not 
> supported.
> According to the transaction protocol IEP [1] insert operation in RW 
> transactions for sortex index looks as follows:
> Unique index:
> // insert
> IX_short(nextKey) // released after the insertion
> X_commit(currentKey) // acquired before releasing IX_short
> Non-unique index:
> // insert
> IX_short(nextKey)
> X_commit(currentKey) if nextKey previously locked in S, X or SIX mode
> IX_commit(currentKey) otherwise
> *Implementation notes:*
> For the code related to locks for indexes, see 
> org.apache.ignite.internal.table.distributed.IndexLocker. We are interested 
> in SortedIndexLocker implementation, method locksForInsert. Actually, there 
> is some draft, but it is commented.
> [1] 
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-91%3A+Transaction+protocol



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


[jira] [Created] (IGNITE-18165) Apply short term loks to sorted indexes

2022-11-15 Thread Vladislav Pyatkov (Jira)
Vladislav Pyatkov created IGNITE-18165:
--

 Summary: Apply short term loks to sorted indexes
 Key: IGNITE-18165
 URL: https://issues.apache.org/jira/browse/IGNITE-18165
 Project: Ignite
  Issue Type: Improvement
Reporter: Vladislav Pyatkov


*Motivation:*
Transaction isolation requires using short term locks in insert operation over 
sorted indexes. It was not implemented because short term locks had not 
supported.

*Implementation notes:*
According to the transaction protocol IEP [1] insert operation in RW 
transactions for sortex index looks as follows:

Unique index:
// insert
IX_short(nextKey) // released after the insertion
X_commit(currentKey) // acquired before releasing IX_short

Non-unique index:
// insert
IX_short(nextKey)
X_commit(currentKey) if nextKey previously locked in S, X or SIX mode
IX_commit(currentKey) otherwise

[1] 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-91%3A+Transaction+protocol



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


[jira] [Assigned] (IGNITE-18162) PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov reassigned IGNITE-18162:
-

Assignee: Aleksandr Polovtcev  (was: Denis Chudov)

> PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky
> 
>
> Key: IGNITE-18162
> URL: https://issues.apache.org/jira/browse/IGNITE-18162
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Chudov
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> History: 
> https://ci.ignite.apache.org/project.html?branch_ignite3_Test=__all_branches__&tab=testDetails&projectId=ignite3_Test&testNameId=-7002518451967434454



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


[jira] [Assigned] (IGNITE-18162) PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov reassigned IGNITE-18162:
-

Assignee: Denis Chudov  (was: Aleksandr Polovtcev)

> PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky
> 
>
> Key: IGNITE-18162
> URL: https://issues.apache.org/jira/browse/IGNITE-18162
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> History: 
> https://ci.ignite.apache.org/project.html?branch_ignite3_Test=__all_branches__&tab=testDetails&projectId=ignite3_Test&testNameId=-7002518451967434454



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


[jira] [Commented] (IGNITE-18162) PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky

2022-11-15 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin commented on IGNITE-18162:
--

LGTM

> PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky
> 
>
> Key: IGNITE-18162
> URL: https://issues.apache.org/jira/browse/IGNITE-18162
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Chudov
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> History: 
> https://ci.ignite.apache.org/project.html?branch_ignite3_Test=__all_branches__&tab=testDetails&projectId=ignite3_Test&testNameId=-7002518451967434454



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


[jira] [Created] (IGNITE-18164) Interface javadoc link to internals

2022-11-15 Thread Alexander Belyak (Jira)
Alexander Belyak created IGNITE-18164:
-

 Summary: Interface javadoc link to internals
 Key: IGNITE-18164
 URL: https://issues.apache.org/jira/browse/IGNITE-18164
 Project: Ignite
  Issue Type: Improvement
  Components: documentation
Affects Versions: 2.14
Reporter: Alexander Belyak


[https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/Ignite.java]
 contains links to the internal 

{color:#00}+org.apache.ignite.internal.util.typedef.G+
{color}

{color:#00}interface. Instead, for example, of {color}

+{color:#172b4d}org.apache.ignite.Ignition{color}+

Let's clean interface documentation from internal links.



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


[jira] [Updated] (IGNITE-17478) CLI commands with argument groups reuse previous option values

2022-11-15 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-17478:
-
Fix Version/s: 3.0.0-beta2
 Reviewer: Kirill Gusakov

> CLI commands with argument groups reuse previous option values
> --
>
> Key: IGNITE-17478
> URL: https://issues.apache.org/jira/browse/IGNITE-17478
> Project: Ignite
>  Issue Type: Bug
>  Components: cli
>Reporter: Vadim Pakhnushev
>Assignee: Vadim Pakhnushev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Due to the picocli [issue|https://github.com/remkop/picocli/issues/1768], 
> running sql command first time with -f option and second time without 
> produces incorrect result where second time it runs as if -f option was 
> passed.
> {noformat}
> [test]> sql -f filename
> File with command not found.
> [test]> sql
> File with command not found.{noformat}



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


[jira] [Updated] (IGNITE-18163) Old-style join on different column types fails with ClassCastException

2022-11-15 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-18163:

Description: 
Query:
{code}
select _T0.KEY, _T1.VAL from PUBLIC.TBL1 as _T0, PUBLIC.TBL_INT32 as _T1 where 
_T0.KEY IS NOT DISTINCT FROM _T1.KEY
{code}

Result:
{code}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:ef4217b1-04ef-4f08-b1c3-76effc3fc262 class java.lang.Long cannot be 
cast to class java.lang.Integer (java.lang.Long and java.lang.Integer are in 
module java.base of loader 'bootstrap')
at org.apache.ignite.lang.IgniteException.wrap(IgniteException.java:289)
at 
org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$0(AsyncSqlCursorImpl.java:77)
at 
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at 
java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at 
java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.lambda$closeAsync$0(AsyncRootNode.java:193)
at 
java.base/java.util.concurrent.LinkedBlockingQueue.forEachFrom(LinkedBlockingQueue.java:1010)
at 
java.base/java.util.concurrent.LinkedBlockingQueue.forEach(LinkedBlockingQueue.java:979)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.closeAsync(AsyncRootNode.java:193)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.onError(AsyncRootNode.java:148)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.onError(MergeJoinNode.java:124)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:205)
at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$2(ExchangeServiceImpl.java:81)
at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:164)
at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$3(MessageServiceImpl.java:133)
at 
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:80)
at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ClassCastException: class java.lang.Long cannot be cast to 
class java.lang.Integer (java.lang.Long and java.lang.Integer are in module 
java.base of loader 'bootstrap')
at java.base/java.lang.Integer.compareTo(Integer.java:59)
at 
org.apache.calcite.rel.RelFieldCollation.compare(RelFieldCollation.java:43)
at 
org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl.compare(ExpressionFactoryImpl.java:235)
at 
org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl$2.compare(ExpressionFactoryImpl.java:217)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$InnerJoin.join(MergeJoinNode.java:318)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode.pushLeft(MergeJoinNode.java:162)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.push(MergeJoinNode.java:112)
at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushOrdered(Inbox.java:259)
at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:205)
at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:181)
at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:203)
... 7 more

{code}

T0.KEY is int32, T1.KEY is int64.

  was:
Query:
{code}
select _T0.KEY, _T1.VAL from PUBLIC.TBL1 as _T0, PUBLIC.TBL_INT32 as _T1 where 
_T0.KEY IS NOT DISTINCT FROM _T1.KEY
{code}

Result:
{code}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:ef4217b1-04ef-4f08-b1c3-76effc3fc262 class java.lang.Long cannot be 
cast to class java.lang.Integer (java.lang.Long and java.lan

[jira] [Updated] (IGNITE-18163) Old-style join on different column types fails with ClassCastException

2022-11-15 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-18163:

Description: 
Query:
{code}
select _T0.KEY, _T1.VAL from PUBLIC.TBL1 as _T0, PUBLIC.TBL_INT32 as _T1 where 
_T0.KEY IS NOT DISTINCT FROM _T1.KEY
{code}

Result:
{code}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:ef4217b1-04ef-4f08-b1c3-76effc3fc262 class java.lang.Long cannot be 
cast to class java.lang.Integer (java.lang.Long and java.lang.Integer are in 
module java.base of loader 'bootstrap')
at org.apache.ignite.lang.IgniteException.wrap(IgniteException.java:289)
at 
org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$0(AsyncSqlCursorImpl.java:77)
at 
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at 
java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at 
java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.lambda$closeAsync$0(AsyncRootNode.java:193)
at 
java.base/java.util.concurrent.LinkedBlockingQueue.forEachFrom(LinkedBlockingQueue.java:1010)
at 
java.base/java.util.concurrent.LinkedBlockingQueue.forEach(LinkedBlockingQueue.java:979)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.closeAsync(AsyncRootNode.java:193)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.onError(AsyncRootNode.java:148)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.onError(MergeJoinNode.java:124)
at 
org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:205)
at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$2(ExchangeServiceImpl.java:81)
at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:164)
at 
org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$3(MessageServiceImpl.java:133)
at 
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:80)
at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ClassCastException: class java.lang.Long cannot be cast to 
class java.lang.Integer (java.lang.Long and java.lang.Integer are in module 
java.base of loader 'bootstrap')
at java.base/java.lang.Integer.compareTo(Integer.java:59)
at 
org.apache.calcite.rel.RelFieldCollation.compare(RelFieldCollation.java:43)
at 
org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl.compare(ExpressionFactoryImpl.java:235)
at 
org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl$2.compare(ExpressionFactoryImpl.java:217)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$InnerJoin.join(MergeJoinNode.java:318)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode.pushLeft(MergeJoinNode.java:162)
at 
org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.push(MergeJoinNode.java:112)
at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushOrdered(Inbox.java:259)
at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.push(Inbox.java:205)
at 
org.apache.ignite.internal.sql.engine.exec.rel.Inbox.onBatchReceived(Inbox.java:181)
at 
org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:203)
... 7 more

{code}

> Old-style join on different column types fails with ClassCastException
> --
>
> Key: IGNITE-18163
> URL: https://issues.apache.org/jira/browse/IGNITE-18163
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Affects Versions: 3.0.0-beta1
>  

[jira] [Updated] (IGNITE-18163) Old-style join on different column types fails with ClassCastException

2022-11-15 Thread Evgeny Stanilovsky (Jira)


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

Evgeny Stanilovsky updated IGNITE-18163:

Ignite Flags:   (was: Docs Required,Release Notes Required)

> Old-style join on different column types fails with ClassCastException
> --
>
> Key: IGNITE-18163
> URL: https://issues.apache.org/jira/browse/IGNITE-18163
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Query:
> {code}
> select _T0.KEY, _T1.VAL from PUBLIC.TBL1 as _T0, PUBLIC.TBL_INT32 as _T1 
> where _T0.KEY IS NOT DISTINCT FROM _T1.KEY
> {code}
> Result:
> {code}
> org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
> TraceId:ef4217b1-04ef-4f08-b1c3-76effc3fc262 class java.lang.Long cannot be 
> cast to class java.lang.Integer (java.lang.Long and java.lang.Integer are in 
> module java.base of loader 'bootstrap')
>   at org.apache.ignite.lang.IgniteException.wrap(IgniteException.java:289)
>   at 
> org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$0(AsyncSqlCursorImpl.java:77)
>   at 
> java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
>   at 
> java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
>   at 
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>   at 
> java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.lambda$closeAsync$0(AsyncRootNode.java:193)
>   at 
> java.base/java.util.concurrent.LinkedBlockingQueue.forEachFrom(LinkedBlockingQueue.java:1010)
>   at 
> java.base/java.util.concurrent.LinkedBlockingQueue.forEach(LinkedBlockingQueue.java:979)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.closeAsync(AsyncRootNode.java:193)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.onError(AsyncRootNode.java:148)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.onError(MergeJoinNode.java:124)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:155)
>   at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.onMessage(ExchangeServiceImpl.java:205)
>   at 
> org.apache.ignite.internal.sql.engine.exec.ExchangeServiceImpl.lambda$start$2(ExchangeServiceImpl.java:81)
>   at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:164)
>   at 
> org.apache.ignite.internal.sql.engine.message.MessageServiceImpl.lambda$onMessage$3(MessageServiceImpl.java:133)
>   at 
> org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:80)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>   at java.base/java.lang.Thread.run(Thread.java:829)
> Caused by: java.lang.ClassCastException: class java.lang.Long cannot be cast 
> to class java.lang.Integer (java.lang.Long and java.lang.Integer are in 
> module java.base of loader 'bootstrap')
>   at java.base/java.lang.Integer.compareTo(Integer.java:59)
>   at 
> org.apache.calcite.rel.RelFieldCollation.compare(RelFieldCollation.java:43)
>   at 
> org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl.compare(ExpressionFactoryImpl.java:235)
>   at 
> org.apache.ignite.internal.sql.engine.exec.exp.ExpressionFactoryImpl$2.compare(ExpressionFactoryImpl.java:217)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$InnerJoin.join(MergeJoinNode.java:318)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode.pushLeft(MergeJoinNode.java:162)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.MergeJoinNode$1.push(MergeJoinNode.java:112)
>   at 
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushOrdered(Inbox.java:259)
>   at 
> org.apache.ignite.internal.sql.engi

[jira] [Created] (IGNITE-18163) Old-style join on different column types fails with ClassCastException

2022-11-15 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-18163:
---

 Summary: Old-style join on different column types fails with 
ClassCastException
 Key: IGNITE-18163
 URL: https://issues.apache.org/jira/browse/IGNITE-18163
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-18161) Standalone JDBC driver

2022-11-15 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-18161:

Labels: ignite-3  (was: )

> Standalone JDBC driver 
> ---
>
> Key: IGNITE-18161
> URL: https://issues.apache.org/jira/browse/IGNITE-18161
> Project: Ignite
>  Issue Type: Improvement
>  Components: jdbc
>Affects Versions: 3.0
>Reporter: Alexander Belyak
>Priority: Major
>  Labels: ignite-3
>
> Need to pack jdbc driver into separate, stand alone (or fat) jar to use in 
> external tools, etc.



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


[jira] [Assigned] (IGNITE-18162) PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev reassigned IGNITE-18162:


Assignee: Aleksandr Polovtcev

> PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky
> 
>
> Key: IGNITE-18162
> URL: https://issues.apache.org/jira/browse/IGNITE-18162
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Chudov
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> History: 
> https://ci.ignite.apache.org/project.html?branch_ignite3_Test=__all_branches__&tab=testDetails&projectId=ignite3_Test&testNameId=-7002518451967434454



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


[jira] [Resolved] (IGNITE-17050) Bump commons-io version

2022-11-15 Thread Nikita Amelchev (Jira)


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

Nikita Amelchev resolved IGNITE-17050.
--
Resolution: Duplicate

> Bump commons-io version
> ---
>
> Key: IGNITE-17050
> URL: https://issues.apache.org/jira/browse/IGNITE-17050
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Nikolay Izhikov
>Assignee: Aleksandr
>Priority: Major
>  Labels: ise
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> commons-io prior 2.7 version contains several CVEs.
> We should bump version to the latest 2.11.0
> https://mvnrepository.com/artifact/commons-io/commons-io/2.6



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


[jira] [Updated] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18156:
---
Parent: IGNITE-18140
Issue Type: Sub-task  (was: Task)

> Sql. Extend SQL grammar with CREATE/DROP ZONE statement
> ---
>
> Key: IGNITE-18156
> URL: https://issues.apache.org/jira/browse/IGNITE-18156
> Project: Ignite
>  Issue Type: Sub-task
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> We need to provide an ability to configure distribution zones  by DDL 
> commands.
> Let's extend SQL grammar with following syntax:
> {code:java}
> CREATE ZONE
>     { fq_zone_name | simple_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> {code:java}
> DROP ZONE {fq_zone_name | simple_zone_name}{code}
> As a result the parser should be able to parse mentioned statements and 
> provide a valid AST representing those statements.



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


[jira] [Created] (IGNITE-18162) PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky

2022-11-15 Thread Denis Chudov (Jira)
Denis Chudov created IGNITE-18162:
-

 Summary: 
PendingComparableValuesTrackerTest.testMultithreadedWaitFor is flaky
 Key: IGNITE-18162
 URL: https://issues.apache.org/jira/browse/IGNITE-18162
 Project: Ignite
  Issue Type: Bug
Reporter: Denis Chudov


History: 
https://ci.ignite.apache.org/project.html?branch_ignite3_Test=__all_branches__&tab=testDetails&projectId=ignite3_Test&testNameId=-7002518451967434454




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


[jira] [Updated] (IGNITE-18157) Sql. Provide commands and handlers for distributed zones related operations

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18157:
---
Parent: IGNITE-18140
Issue Type: Sub-task  (was: Task)

> Sql. Provide commands and handlers for distributed zones related operations
> ---
>
> Key: IGNITE-18157
> URL: https://issues.apache.org/jira/browse/IGNITE-18157
> Project: Ignite
>  Issue Type: Sub-task
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> After implementing IGNITE-18156 Need to provide DDL commands and their 
> handlers to configure zones configuration in, as well as translation to these 
> command from AST representation.
> As a result, we will be able to translate AST to a command (see 
> {{{}DdlSqlToCommandConverter{}}}) and execute this command in order to apply 
> changes to configuration (see {{{}DdlCommandHandler{}}}).



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


[jira] [Updated] (IGNITE-18158) Sql. Investigate possible syntax and abilities for ALTER ZONE command

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18158:
---
Parent: IGNITE-18140
Issue Type: Sub-task  (was: Task)

> Sql. Investigate possible syntax and abilities for ALTER ZONE command
> -
>
> Key: IGNITE-18158
> URL: https://issues.apache.org/jira/browse/IGNITE-18158
> Project: Ignite
>  Issue Type: Sub-task
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> As we can CREATE and DROP a  distributed zones [1] [2], need to have ability 
> to modify the distributed zones. Let's investigate possible syntax and 
> abilities for the modification.
> As result we should have a few new tickets with proposed syntax and 
> integration into the system.
> [1] https://issues.apache.org/jira/browse/IGNITE-18156
> [2] https://issues.apache.org/jira/browse/IGNITE-18157



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


[jira] [Updated] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18156:
---
Issue Type: Task  (was: Improvement)

> Sql. Extend SQL grammar with CREATE/DROP ZONE statement
> ---
>
> Key: IGNITE-18156
> URL: https://issues.apache.org/jira/browse/IGNITE-18156
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> We need to provide an ability to configure distribution zones  by DDL 
> commands.
> Let's extend SQL grammar with following syntax:
> {code:java}
> CREATE ZONE
>     { fq_zone_name | simple_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> {code:java}
> DROP ZONE {fq_zone_name | simple_zone_name}{code}
> As a result the parser should be able to parse mentioned statements and 
> provide a valid AST representing those statements.



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


[jira] [Updated] (IGNITE-18157) Sql. Provide commands and handlers for distributed zones related operations

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18157:
---
Issue Type: Task  (was: Improvement)

> Sql. Provide commands and handlers for distributed zones related operations
> ---
>
> Key: IGNITE-18157
> URL: https://issues.apache.org/jira/browse/IGNITE-18157
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> After implementing IGNITE-18156 Need to provide DDL commands and their 
> handlers to configure zones configuration in, as well as translation to these 
> command from AST representation.
> As a result, we will be able to translate AST to a command (see 
> {{{}DdlSqlToCommandConverter{}}}) and execute this command in order to apply 
> changes to configuration (see {{{}DdlCommandHandler{}}}).



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


[jira] [Commented] (IGNITE-18160) Delete physical data after a Raft Group is stopped

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev commented on IGNITE-18160:
--

Looks like this method is already being implemented in Page Memory: 
IGNITE-17132 

> Delete physical data after a Raft Group is stopped
> --
>
> Key: IGNITE-18160
> URL: https://issues.apache.org/jira/browse/IGNITE-18160
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> After a Raft Group is stopped on a node as a consequence of partition 
> reassignment, we need to remove the partition data and the corresponding Raft 
> log. This implies that for every storage a {{destroy}} method should be 
> implemented with the following behaviour: it should return control to the 
> caller as soon as possible, i.e. be asynchronous. Ideally this method should 
> perform some minimal actions to pose failover guarantees and not wait for the 
> data to be removed.
> We need to check that every storage type supports this method and add 
> corresponding tests.



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


[jira] [Updated] (IGNITE-18160) Delete physical data after a Raft Group is stopped

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-18160:
-
Description: 
After a Raft Group is stopped on a node as a consequence of partition 
reassignment, we need to remove the partition data and the corresponding Raft 
log. This implies that for every storage a {{destroy}} method should be 
implemented with the following behaviour: it should return control to the 
caller as soon as possible, i.e. be asynchronous. Ideally this method should 
perform some minimal actions to pose failover guarantees and not wait for the 
data to be removed.

We need to check that every storage type supports this method and add 
corresponding tests.

> Delete physical data after a Raft Group is stopped
> --
>
> Key: IGNITE-18160
> URL: https://issues.apache.org/jira/browse/IGNITE-18160
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> After a Raft Group is stopped on a node as a consequence of partition 
> reassignment, we need to remove the partition data and the corresponding Raft 
> log. This implies that for every storage a {{destroy}} method should be 
> implemented with the following behaviour: it should return control to the 
> caller as soon as possible, i.e. be asynchronous. Ideally this method should 
> perform some minimal actions to pose failover guarantees and not wait for the 
> data to be removed.
> We need to check that every storage type supports this method and add 
> corresponding tests.



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


[jira] [Created] (IGNITE-18161) Standalone JDBC driver

2022-11-15 Thread Alexander Belyak (Jira)
Alexander Belyak created IGNITE-18161:
-

 Summary: Standalone JDBC driver 
 Key: IGNITE-18161
 URL: https://issues.apache.org/jira/browse/IGNITE-18161
 Project: Ignite
  Issue Type: Improvement
  Components: jdbc
Affects Versions: 3.0
Reporter: Alexander Belyak


Need to pack jdbc driver into separate, stand alone (or fat) jar to use in 
external tools, etc.



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


[jira] [Updated] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-18091:
-
Reviewer: Vladislav Pyatkov

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Created] (IGNITE-18160) Delete physical data after a Raft Group is stopped

2022-11-15 Thread Aleksandr Polovtcev (Jira)
Aleksandr Polovtcev created IGNITE-18160:


 Summary: Delete physical data after a Raft Group is stopped
 Key: IGNITE-18160
 URL: https://issues.apache.org/jira/browse/IGNITE-18160
 Project: Ignite
  Issue Type: Task
Reporter: Aleksandr Polovtcev






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


[jira] [Updated] (IGNITE-18158) Sql. Investigate possible syntax and abilities for ALTER ZONE command

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18158:
---
Epic Link: (was: IGNITE-18140)

> Sql. Investigate possible syntax and abilities for ALTER ZONE command
> -
>
> Key: IGNITE-18158
> URL: https://issues.apache.org/jira/browse/IGNITE-18158
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> As we can CREATE and DROP a  distributed zones [1] [2], need to have ability 
> to modify the distributed zones. Let's investigate possible syntax and 
> abilities for the modification.
> As result we should have a few new tickets with proposed syntax and 
> integration into the system.
> [1] https://issues.apache.org/jira/browse/IGNITE-18156
> [2] https://issues.apache.org/jira/browse/IGNITE-18157



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


[jira] [Updated] (IGNITE-18157) Sql. Provide commands and handlers for distributed zones related operations

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18157:
---
Epic Link: (was: IGNITE-18140)

> Sql. Provide commands and handlers for distributed zones related operations
> ---
>
> Key: IGNITE-18157
> URL: https://issues.apache.org/jira/browse/IGNITE-18157
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> After implementing IGNITE-18156 Need to provide DDL commands and their 
> handlers to configure zones configuration in, as well as translation to these 
> command from AST representation.
> As a result, we will be able to translate AST to a command (see 
> {{{}DdlSqlToCommandConverter{}}}) and execute this command in order to apply 
> changes to configuration (see {{{}DdlCommandHandler{}}}).



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


[jira] [Updated] (IGNITE-18140) Add ability to create, alter and drop distribution zones from within sql-like public API

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18140:
---
Epic Link: IGNITE-17924

> Add ability to create, alter and drop distribution zones from within sql-like 
> public API
> 
>
> Key: IGNITE-18140
> URL: https://issues.apache.org/jira/browse/IGNITE-18140
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> [IEP-97|https://cwiki.apache.org/confluence/display/IGNITE/IEP-97%3A+Distribution+Zones]
>  introduces new concept of distribution zone along with some assumptions of a 
> corresponding [manager|https://issues.apache.org/jira/browse/IGNITE-18093] 
> that will provide an API to create, alter, and drop zones. It's however an 
> internal API and thus it's required to provide a public one:
> {code:java}
> CREATE ZONE
>     { database_name.schema_name.distribution_zone_name | 
> schema_name.distribution_zone_name | distribution_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> Few examples
> {code:java}
> Ex 1.1: CREATE ZONE zone1 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> PARTITIONS = 1024, REPLICAS = 3, AFFINITY_FUNCTION = rendezvous; // Scale up 
> only.
>  
> Ex 1.2: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = 300; // Both scale up and scale down. 
> Default partitions count, replicas count and affinity function will be used.
>  
> Ex 1.3: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST = 100; // Same value 
> for both scale up and scale down. Default partitions count, replicas count 
> and affinity function will be used. {code}
> And yes, similar syntax is expected for altering and dropping distribution 
> zones.
> h3. Definition of Done
>  * It's possible to create/alter/drop distribution zones, meaning that 
> corresponding methods of distribution zone manager are called. 
>  * Exceptions if any, e.g. validation ones are properly wrapped and returned 
> back to the user.



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


[jira] [Updated] (IGNITE-18140) Add ability to create, alter and drop distribution zones from within sql-like public API

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18140:
---
Issue Type: Improvement  (was: Epic)

> Add ability to create, alter and drop distribution zones from within sql-like 
> public API
> 
>
> Key: IGNITE-18140
> URL: https://issues.apache.org/jira/browse/IGNITE-18140
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> [IEP-97|https://cwiki.apache.org/confluence/display/IGNITE/IEP-97%3A+Distribution+Zones]
>  introduces new concept of distribution zone along with some assumptions of a 
> corresponding [manager|https://issues.apache.org/jira/browse/IGNITE-18093] 
> that will provide an API to create, alter, and drop zones. It's however an 
> internal API and thus it's required to provide a public one:
> {code:java}
> CREATE ZONE
>     { database_name.schema_name.distribution_zone_name | 
> schema_name.distribution_zone_name | distribution_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> Few examples
> {code:java}
> Ex 1.1: CREATE ZONE zone1 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> PARTITIONS = 1024, REPLICAS = 3, AFFINITY_FUNCTION = rendezvous; // Scale up 
> only.
>  
> Ex 1.2: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = 300; // Both scale up and scale down. 
> Default partitions count, replicas count and affinity function will be used.
>  
> Ex 1.3: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST = 100; // Same value 
> for both scale up and scale down. Default partitions count, replicas count 
> and affinity function will be used. {code}
> And yes, similar syntax is expected for altering and dropping distribution 
> zones.
> h3. Definition of Done
>  * It's possible to create/alter/drop distribution zones, meaning that 
> corresponding methods of distribution zone manager are called. 
>  * Exceptions if any, e.g. validation ones are properly wrapped and returned 
> back to the user.



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


[jira] [Updated] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18156:
---
Epic Link: (was: IGNITE-18140)

> Sql. Extend SQL grammar with CREATE/DROP ZONE statement
> ---
>
> Key: IGNITE-18156
> URL: https://issues.apache.org/jira/browse/IGNITE-18156
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> We need to provide an ability to configure distribution zones  by DDL 
> commands.
> Let's extend SQL grammar with following syntax:
> {code:java}
> CREATE ZONE
>     { fq_zone_name | simple_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> {code:java}
> DROP ZONE {fq_zone_name | simple_zone_name}{code}
> As a result the parser should be able to parse mentioned statements and 
> provide a valid AST representing those statements.



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


[jira] [Updated] (IGNITE-18063) MessageService should use conistent IDs instead of node IDs

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-18063:
-
Epic Link: IGNITE-17956

> MessageService should use conistent IDs instead of node IDs
> ---
>
> Key: IGNITE-18063
> URL: https://issues.apache.org/jira/browse/IGNITE-18063
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> For some reason {{MessageService}} class and its users (e.g. 
> `InternalTable#assignments`) use node IDs, which can change if a node is 
> restarted (and lead to unknown and untested bugs). This also leads to 
> ineffective code in the implementation, because it has to scan over the whole 
> topology to find a node by its ID. Instead, these classes should operate with 
> consistent IDs.



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


[jira] [Updated] (IGNITE-18159) Implement splitting of an Ignite node hosting a learner and a follower from the same Raft group

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-18159:
-
Description: 
As described in IGNITE-18070, we need to implement one of the scenarios that 
will allow us to have a single Ignite node hosting a follower and a learner 
from the same Raft group. This ticket focuses on a case when a node gets 
"split", that is, when after calculating the assignments, a follower (or a 
learner) gets moved to a different Ignite node. 

The algorithm looks like the following: after stable assignments have been 
changes, we simply destroy the follower's (or learner's, whichever gets moved)  
storage data (looks like a good place for that would be inside the 
{{metaStorageMgr.registerWatchByPrefix(ByteArray.fromString(STABLE_ASSIGNMENTS_PREFIX)}}
 listener in the {{TableManager}}) on the node that gets "split" . The other 
node should simply start the corresponding Raft service as usual, its data 
would be transferred by Raft replication.

> Implement splitting of an Ignite node hosting a learner and a follower from 
> the same Raft group
> ---
>
> Key: IGNITE-18159
> URL: https://issues.apache.org/jira/browse/IGNITE-18159
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> As described in IGNITE-18070, we need to implement one of the scenarios that 
> will allow us to have a single Ignite node hosting a follower and a learner 
> from the same Raft group. This ticket focuses on a case when a node gets 
> "split", that is, when after calculating the assignments, a follower (or a 
> learner) gets moved to a different Ignite node. 
> The algorithm looks like the following: after stable assignments have been 
> changes, we simply destroy the follower's (or learner's, whichever gets 
> moved)  storage data (looks like a good place for that would be inside the 
> {{metaStorageMgr.registerWatchByPrefix(ByteArray.fromString(STABLE_ASSIGNMENTS_PREFIX)}}
>  listener in the {{TableManager}}) on the node that gets "split" . The other 
> node should simply start the corresponding Raft service as usual, its data 
> would be transferred by Raft replication.



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


[jira] [Created] (IGNITE-18159) Implement splitting of an Ignite node hosting a learner and a follower from the same Raft group

2022-11-15 Thread Aleksandr Polovtcev (Jira)
Aleksandr Polovtcev created IGNITE-18159:


 Summary: Implement splitting of an Ignite node hosting a learner 
and a follower from the same Raft group
 Key: IGNITE-18159
 URL: https://issues.apache.org/jira/browse/IGNITE-18159
 Project: Ignite
  Issue Type: Task
Reporter: Aleksandr Polovtcev






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


[jira] [Updated] (IGNITE-8801) Change default behaviour of atomic operations inside transactions

2022-11-15 Thread Julia Bakulina (Jira)


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

Julia Bakulina updated IGNITE-8801:
---
Release Note: 
IGNITE_ALLOW_ATOMIC_OPS_IN_TX turned false by default. To return the previous 
behaviour and to allow transactions in operations with atomic caches set
IGNITE_ALLOW_ATOMIC_OPS_IN_TX to true in IgniteSystemProperties

  was:IGNITE_ALLOW_ATOMIC_OPS_IN_TX turned false by default


> Change default behaviour of atomic operations inside transactions
> -
>
> Key: IGNITE-8801
> URL: https://issues.apache.org/jira/browse/IGNITE-8801
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Ryabov Dmitrii
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
> Fix For: 2.15
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Need to change default behaviour of atomic operations to fail inside 
> transactions.
> 1) Remove IGNITE_ALLOW_ATOMIC_OPS_IN_TX system property.
> 2) Set default value to restrict atomic operations in 
> {{CacheOperationContext}} constructor without arguments and arguments for 
> calls of another constructor.
> 3) Fix javadocs.
> As per the latest round of discussion on Ignite Dev List as of 28/10/2022 we 
> agreed on the following:
> 1) Revert deprecation IGNITE-17916 - reverted
> 2) Change default value in 2.15.
> 3) Notify users in release notes, an exception message - how to change the
> behavior back.



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


[jira] [Updated] (IGNITE-18158) Sql. Investigate possible syntax and abilities for ALTER ZONE command

2022-11-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov updated IGNITE-18158:
--
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Sql. Investigate possible syntax and abilities for ALTER ZONE command
> -
>
> Key: IGNITE-18158
> URL: https://issues.apache.org/jira/browse/IGNITE-18158
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> As we can CREATE and DROP a  distributed zones [1] [2], need to have ability 
> to modify the distributed zones. Let's investigate possible syntax and 
> abilities for the modification.
> As result we should have a few new tickets with proposed syntax and 
> integration into the system.
> [1] https://issues.apache.org/jira/browse/IGNITE-18156
> [2] https://issues.apache.org/jira/browse/IGNITE-18157



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


[jira] [Updated] (IGNITE-18158) Sql. Investigate possible syntax and abilities for ALTER ZONE command

2022-11-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov updated IGNITE-18158:
--
Issue Type: Task  (was: Improvement)

> Sql. Investigate possible syntax and abilities for ALTER ZONE command
> -
>
> Key: IGNITE-18158
> URL: https://issues.apache.org/jira/browse/IGNITE-18158
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> As we can CREATE and DROP a  distributed zones [1] [2], need to have ability 
> to modify the distributed zones. Let's investigate possible syntax and 
> abilities for the modification.
> As result we should have a few new tickets with proposed syntax and 
> integration into the system.
> [1] https://issues.apache.org/jira/browse/IGNITE-18156
> [2] https://issues.apache.org/jira/browse/IGNITE-18157



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


[jira] [Updated] (IGNITE-18158) Sql. Investigate possible syntax and abilities for ALTER ZONE command

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18158:
---
Description: 
As we can CREATE and DROP a  distributed zones [1] [2], need to have ability to 
modify the distributed zones. Let's investigate possible syntax and abilities 
for the modification.
As result we should have a few new tickets with proposed syntax and integration 
into the system.

[1] https://issues.apache.org/jira/browse/IGNITE-18156
[2] https://issues.apache.org/jira/browse/IGNITE-18157

  was:
As we can CREATE and DROP a  distributed zones, need to have ability to modify 
the distributed zones. Let's investigate possible syntax and abilities for the 
modification.
As result we should have a few new tickets with proposed syntax and integration 
into the system.


> Sql. Investigate possible syntax and abilities for ALTER ZONE command
> -
>
> Key: IGNITE-18158
> URL: https://issues.apache.org/jira/browse/IGNITE-18158
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> As we can CREATE and DROP a  distributed zones [1] [2], need to have ability 
> to modify the distributed zones. Let's investigate possible syntax and 
> abilities for the modification.
> As result we should have a few new tickets with proposed syntax and 
> integration into the system.
> [1] https://issues.apache.org/jira/browse/IGNITE-18156
> [2] https://issues.apache.org/jira/browse/IGNITE-18157



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


[jira] [Updated] (IGNITE-18157) Sql. Provide commands and handlers for distributed zones related operations

2022-11-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov updated IGNITE-18157:
--
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Sql. Provide commands and handlers for distributed zones related operations
> ---
>
> Key: IGNITE-18157
> URL: https://issues.apache.org/jira/browse/IGNITE-18157
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> After implementing IGNITE-18156 Need to provide DDL commands and their 
> handlers to configure zones configuration in, as well as translation to these 
> command from AST representation.
> As a result, we will be able to translate AST to a command (see 
> {{{}DdlSqlToCommandConverter{}}}) and execute this command in order to apply 
> changes to configuration (see {{{}DdlCommandHandler{}}}).



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


[jira] [Updated] (IGNITE-18157) Sql. Provide commands and handlers for distributed zones related operations

2022-11-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov updated IGNITE-18157:
--
Fix Version/s: 3.0.0-beta2

> Sql. Provide commands and handlers for distributed zones related operations
> ---
>
> Key: IGNITE-18157
> URL: https://issues.apache.org/jira/browse/IGNITE-18157
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> After implementing IGNITE-18156 Need to provide DDL commands and their 
> handlers to configure zones configuration in, as well as translation to these 
> command from AST representation.
> As a result, we will be able to translate AST to a command (see 
> {{{}DdlSqlToCommandConverter{}}}) and execute this command in order to apply 
> changes to configuration (see {{{}DdlCommandHandler{}}}).



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


[jira] [Created] (IGNITE-18158) Sql. Investigate possible syntax and abilities for ALTER ZONE command

2022-11-15 Thread Yury Gerzhedovich (Jira)
Yury Gerzhedovich created IGNITE-18158:
--

 Summary: Sql. Investigate possible syntax and abilities for ALTER 
ZONE command
 Key: IGNITE-18158
 URL: https://issues.apache.org/jira/browse/IGNITE-18158
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Yury Gerzhedovich


As we can CREATE and DROP a  distributed zones, need to have ability to modify 
the distributed zones. Let's investigate possible syntax and abilities for the 
modification.
As result we should have a few new tickets with proposed syntax and integration 
into the system.



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


[jira] [Updated] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov updated IGNITE-18156:
--
Fix Version/s: 3.0.0-beta2

> Sql. Extend SQL grammar with CREATE/DROP ZONE statement
> ---
>
> Key: IGNITE-18156
> URL: https://issues.apache.org/jira/browse/IGNITE-18156
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> We need to provide an ability to configure distribution zones  by DDL 
> commands.
> Let's extend SQL grammar with following syntax:
> {code:java}
> CREATE ZONE
>     { fq_zone_name | simple_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> {code:java}
> DROP ZONE {fq_zone_name | simple_zone_name}{code}
> As a result the parser should be able to parse mentioned statements and 
> provide a valid AST representing those statements.



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


[jira] [Updated] (IGNITE-18157) Sql. Provide commands and handlers for distributed zones related operations

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18157:
---
Labels: ignite-3  (was: )

> Sql. Provide commands and handlers for distributed zones related operations
> ---
>
> Key: IGNITE-18157
> URL: https://issues.apache.org/jira/browse/IGNITE-18157
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> After implementing IGNITE-18156 Need to provide DDL commands and their 
> handlers to configure zones configuration in, as well as translation to these 
> command from AST representation.
> As a result, we will be able to translate AST to a command (see 
> {{{}DdlSqlToCommandConverter{}}}) and execute this command in order to apply 
> changes to configuration (see {{{}DdlCommandHandler{}}}).



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


[jira] [Created] (IGNITE-18157) Sql. Provide commands and handlers for distributed zones related operations

2022-11-15 Thread Yury Gerzhedovich (Jira)
Yury Gerzhedovich created IGNITE-18157:
--

 Summary: Sql. Provide commands and handlers for distributed zones 
related operations
 Key: IGNITE-18157
 URL: https://issues.apache.org/jira/browse/IGNITE-18157
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Yury Gerzhedovich


After implementing IGNITE-18156 Need to provide DDL commands and their handlers 
to configure zones configuration in, as well as translation to these command 
from AST representation.

As a result, we will be able to translate AST to a command (see 
{{{}DdlSqlToCommandConverter{}}}) and execute this command in order to apply 
changes to configuration (see {{{}DdlCommandHandler{}}}).



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


[jira] [Updated] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18156:
---
Labels: ignite-3  (was: )

> Sql. Extend SQL grammar with CREATE/DROP ZONE statement
> ---
>
> Key: IGNITE-18156
> URL: https://issues.apache.org/jira/browse/IGNITE-18156
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We need to provide an ability to configure distribution zones  by DDL 
> commands.
> Let's extend SQL grammar with following syntax:
> {code:java}
> CREATE ZONE
>     { fq_zone_name | simple_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> {code:java}
> DROP ZONE {fq_zone_name | simple_zone_name}{code}
> As a result the parser should be able to parse mentioned statements and 
> provide a valid AST representing those statements.



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


[jira] [Updated] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18156:
---
Epic Link: IGNITE-18140

> Sql. Extend SQL grammar with CREATE/DROP ZONE statement
> ---
>
> Key: IGNITE-18156
> URL: https://issues.apache.org/jira/browse/IGNITE-18156
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>
> We need to provide an ability to configure distribution zones  by DDL 
> commands.
> Let's extend SQL grammar with following syntax:
> {code:java}
> CREATE ZONE
>     { fq_zone_name | simple_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> {code:java}
> DROP ZONE {fq_zone_name | simple_zone_name}{code}
> As a result the parser should be able to parse mentioned statements and 
> provide a valid AST representing those statements.



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


[jira] [Created] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Yury Gerzhedovich (Jira)
Yury Gerzhedovich created IGNITE-18156:
--

 Summary: Sql. Extend SQL grammar with CREATE/DROP ZONE statement
 Key: IGNITE-18156
 URL: https://issues.apache.org/jira/browse/IGNITE-18156
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Yury Gerzhedovich


We need to provide an ability to configure distribution zones  by DDL commands.

Let's extend SQL grammar with following syntax:
CREATE ZONE
    \{ fq_zone_name | simple_zone_name }
    [WITH
        [
             |
            DATA_NODES_FILTER filter |
            (, DATA_NODES_FILTER filter)
        ],
        [PARTITIONS = partitions],
        [REPLICAS = replicas],
        [AFFINITY_FUNCTION = function]
    ]
[;]
 
 ::= [
    DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
    DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
    (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | DATA_NODES_AUTO_ADJUST  
= auto_adjust_value
]


{code:java}
DROP ZONE {fq_zone_name | simple_zone_name}{code}

As a result the parser should be able to parse mentioned statements and provide 
a valid AST representing those statements.



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


[jira] [Updated] (IGNITE-18156) Sql. Extend SQL grammar with CREATE/DROP ZONE statement

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18156:
---
Description: 
We need to provide an ability to configure distribution zones  by DDL commands.

Let's extend SQL grammar with following syntax:
{code:java}
CREATE ZONE
    { fq_zone_name | simple_zone_name }
    [WITH
        [
             |
            DATA_NODES_FILTER filter |
            (, DATA_NODES_FILTER filter)
        ],
        [PARTITIONS = partitions],
        [REPLICAS = replicas],
        [AFFINITY_FUNCTION = function]
    ]
[;]
 
 ::= [
    DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
    DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
    (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | DATA_NODES_AUTO_ADJUST  
= auto_adjust_value
]{code}
{code:java}
DROP ZONE {fq_zone_name | simple_zone_name}{code}
As a result the parser should be able to parse mentioned statements and provide 
a valid AST representing those statements.

  was:
We need to provide an ability to configure distribution zones  by DDL commands.

Let's extend SQL grammar with following syntax:
CREATE ZONE
    \{ fq_zone_name | simple_zone_name }
    [WITH
        [
             |
            DATA_NODES_FILTER filter |
            (, DATA_NODES_FILTER filter)
        ],
        [PARTITIONS = partitions],
        [REPLICAS = replicas],
        [AFFINITY_FUNCTION = function]
    ]
[;]
 
 ::= [
    DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
    DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
    (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | DATA_NODES_AUTO_ADJUST  
= auto_adjust_value
]


{code:java}
DROP ZONE {fq_zone_name | simple_zone_name}{code}

As a result the parser should be able to parse mentioned statements and provide 
a valid AST representing those statements.


> Sql. Extend SQL grammar with CREATE/DROP ZONE statement
> ---
>
> Key: IGNITE-18156
> URL: https://issues.apache.org/jira/browse/IGNITE-18156
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>
> We need to provide an ability to configure distribution zones  by DDL 
> commands.
> Let's extend SQL grammar with following syntax:
> {code:java}
> CREATE ZONE
>     { fq_zone_name | simple_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> {code:java}
> DROP ZONE {fq_zone_name | simple_zone_name}{code}
> As a result the parser should be able to parse mentioned statements and 
> provide a valid AST representing those statements.



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


[jira] [Updated] (IGNITE-18140) Add ability to create, alter and drop distribution zones from within sql-like public API

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18140:
---
Issue Type: Epic  (was: Improvement)

> Add ability to create, alter and drop distribution zones from within sql-like 
> public API
> 
>
> Key: IGNITE-18140
> URL: https://issues.apache.org/jira/browse/IGNITE-18140
> Project: Ignite
>  Issue Type: Epic
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> [IEP-97|https://cwiki.apache.org/confluence/display/IGNITE/IEP-97%3A+Distribution+Zones]
>  introduces new concept of distribution zone along with some assumptions of a 
> corresponding [manager|https://issues.apache.org/jira/browse/IGNITE-18093] 
> that will provide an API to create, alter, and drop zones. It's however an 
> internal API and thus it's required to provide a public one:
> {code:java}
> CREATE ZONE
>     { database_name.schema_name.distribution_zone_name | 
> schema_name.distribution_zone_name | distribution_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> Few examples
> {code:java}
> Ex 1.1: CREATE ZONE zone1 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> PARTITIONS = 1024, REPLICAS = 3, AFFINITY_FUNCTION = rendezvous; // Scale up 
> only.
>  
> Ex 1.2: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = 300; // Both scale up and scale down. 
> Default partitions count, replicas count and affinity function will be used.
>  
> Ex 1.3: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST = 100; // Same value 
> for both scale up and scale down. Default partitions count, replicas count 
> and affinity function will be used. {code}
> And yes, similar syntax is expected for altering and dropping distribution 
> zones.
> h3. Definition of Done
>  * It's possible to create/alter/drop distribution zones, meaning that 
> corresponding methods of distribution zone manager are called. 
>  * Exceptions if any, e.g. validation ones are properly wrapped and returned 
> back to the user.



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


[jira] [Updated] (IGNITE-18140) Add ability to create, alter and drop distribution zones from within sql-like public API

2022-11-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18140:
---
Epic Link: (was: IGNITE-17924)

> Add ability to create, alter and drop distribution zones from within sql-like 
> public API
> 
>
> Key: IGNITE-18140
> URL: https://issues.apache.org/jira/browse/IGNITE-18140
> Project: Ignite
>  Issue Type: Epic
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> [IEP-97|https://cwiki.apache.org/confluence/display/IGNITE/IEP-97%3A+Distribution+Zones]
>  introduces new concept of distribution zone along with some assumptions of a 
> corresponding [manager|https://issues.apache.org/jira/browse/IGNITE-18093] 
> that will provide an API to create, alter, and drop zones. It's however an 
> internal API and thus it's required to provide a public one:
> {code:java}
> CREATE ZONE
>     { database_name.schema_name.distribution_zone_name | 
> schema_name.distribution_zone_name | distribution_zone_name }
>     [WITH
>         [
>              |
>             DATA_NODES_FILTER filter |
>             (, DATA_NODES_FILTER filter)
>         ],
>         [PARTITIONS = partitions],
>         [REPLICAS = replicas],
>         [AFFINITY_FUNCTION = function]
>     ]
> [;]
>  
>  ::= [
>     DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value |
>     DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value |
>     (DATA_NODES_AUTO_ADJUST_SCALE_UP = scale_up_value & 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = scale_down_value) | 
> DATA_NODES_AUTO_ADJUST  = auto_adjust_value
> ]{code}
> Few examples
> {code:java}
> Ex 1.1: CREATE ZONE zone1 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> PARTITIONS = 1024, REPLICAS = 3, AFFINITY_FUNCTION = rendezvous; // Scale up 
> only.
>  
> Ex 1.2: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST_SCALE_UP = 300, 
> DATA_NODES_AUTO_ADJUST_SCALE_DOWN = 300; // Both scale up and scale down. 
> Default partitions count, replicas count and affinity function will be used.
>  
> Ex 1.3: CREATE ZONE zone2 WITH DATA_NODES_AUTO_ADJUST = 100; // Same value 
> for both scale up and scale down. Default partitions count, replicas count 
> and affinity function will be used. {code}
> And yes, similar syntax is expected for altering and dropping distribution 
> zones.
> h3. Definition of Done
>  * It's possible to create/alter/drop distribution zones, meaning that 
> corresponding methods of distribution zone manager are called. 
>  * Exceptions if any, e.g. validation ones are properly wrapped and returned 
> back to the user.



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


[jira] [Commented] (IGNITE-17704) Get rid of usage of RelDataType in execution nodes

2022-11-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov commented on IGNITE-17704:
---

[~xtern], LGTM!

> Get rid of usage of RelDataType in execution nodes
> --
>
> Key: IGNITE-17704
> URL: https://issues.apache.org/jira/browse/IGNITE-17704
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Yury Gerzhedovich
>Assignee: Pavel Pereslegin
>Priority: Major
>  Labels: ignite-3, tech-debt
> Fix For: 3.0.0-beta2
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Execution-related classes have no third-party dependencies except for apache 
> calcite. The only thing connecting them is the RelDataType class, describing 
> a type of the row.
> Seems the only actual usage of row type is inside 
> {{CorrelatedNestedLoopJoinNode}}.
> So let's get rid of unnecessary coupling by reworking 
> {{CorrelatedNestedLoopJoinNode}} class.



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


[jira] [Assigned] (IGNITE-18148) Dynamic completions improvements

2022-11-15 Thread Aleksandr (Jira)


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

Aleksandr reassigned IGNITE-18148:
--

Assignee: Aleksandr

> Dynamic completions improvements
> 
>
> Key: IGNITE-18148
> URL: https://issues.apache.org/jira/browse/IGNITE-18148
> Project: Ignite
>  Issue Type: Task
>  Components: rest
>Reporter: Aleksandr
>Assignee: Aleksandr
>Priority: Minor
>  Labels: ignite-3
>
> The current state of DynamicCompletions is a first iteration that might be 
> improved. Also, some inconsistency might be observed for the following case:
> - user sees the list of completions on `node config show`
> - user adds one more configuration key, say key1.key2
> - `node config show` does not display key1.key2.
> It happens because the list of keys is calculated once on the first call. 
> After the cached value is used. This is done just for simplicity and is 
> expected to be improved.
> The goal of this ticket is to develop an API for operating with cluster state 
> from CLI perspective. The actual set of configuration keys, the actual map of 
> node names and urls, etc. 
> The API should be generic and flexible. In the future, we might use some 
> notification mechanism and this API should be extended by this easily.



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


[jira] [Updated] (IGNITE-17383) IdleVerify hangs when called on inactive cluster with persistence

2022-11-15 Thread Julia Bakulina (Jira)


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

Julia Bakulina updated IGNITE-17383:

Reviewer: Maksim Timonin

> IdleVerify hangs when called on inactive cluster with persistence
> -
>
> Key: IGNITE-17383
> URL: https://issues.apache.org/jira/browse/IGNITE-17383
> Project: Ignite
>  Issue Type: Bug
>  Components: control.sh
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
> Fix For: 2.15
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When you call {{control.sh --cache idle_verify}} on inactive cluster with 
> persistence, control script hangs and no actions are performed. As you can 
> see below in 'rest' thread dump, {{VerifyBackupPartitionsTaskV2}} waits for 
> checkpoint start in {{GridCacheDatabaseSharedManager#waitForCheckpoint}}.
> It seems, that we can interrupt task execution and print message in control 
> script output, that IdleVerify can't work on inactive cluster.
> {code:title=Thread dump}
> "rest-#82%ignite-server%" #146 prio=5 os_prio=31 tid=0x7fe0cf97c000 
> nid=0x3607 waiting on condition [0x700010149000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:304)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:178)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
>   at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.waitForCheckpoint(GridCacheDatabaseSharedManager.java:1869)
>   at 
> org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager.waitForCheckpoint(IgniteCacheDatabaseSharedManager.java:1107)
>   at 
> org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsTaskV2$VerifyBackupPartitionsJobV2.execute(VerifyBackupPartitionsTaskV2.java:199)
>   at 
> org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsTaskV2$VerifyBackupPartitionsJobV2.execute(VerifyBackupPartitionsTaskV2.java:171)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
>   at 
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7366)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:614)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:539)
>   at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>   at 
> org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1343)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1444)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:674)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:540)
>   at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:860)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:470)
>   at 
> org.apache.ignite.internal.IgniteComputeImpl.executeAsync0(IgniteComputeImpl.java:514)
>   at 
> org.apache.ignite.internal.IgniteComputeImpl.executeAsync(IgniteComputeImpl.java:496)
>   at 
> org.apache.ignite.internal.visor.verify.VisorIdleVerifyJob.run(VisorIdleVerifyJob.java:70)
>   at 
> org.apache.ignite.internal.visor.verify.VisorIdleVerifyJob.run(VisorIdleVerifyJob.java:35)
>   at org.apache.ignite.internal.visor.VisorJob.execute(VisorJob.java:69)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
>   at 
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7366)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:614)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:539)
>   at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>   at 
> org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1343)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1444)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.processMappe

[jira] [Updated] (IGNITE-18000) Sql. Unmute SqlLogicTest

2022-11-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov updated IGNITE-18000:
--
Fix Version/s: 3.0.0-beta2

> Sql. Unmute SqlLogicTest
> 
>
> Key: IGNITE-18000
> URL: https://issues.apache.org/jira/browse/IGNITE-18000
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Konstantin Orlov
>Assignee: Konstantin Orlov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Due to the high instability of the ItSqlLogicTest, these tests were disabled 
> until the reason will be found and fixed.



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


[jira] [Commented] (IGNITE-18070) Design the process of having a single storage for a follower and a learner on the same node

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev commented on IGNITE-18070:
--

When implementing option 2, we have the following challenges:
# A node that hosts both a follower and a learner gets split, e.g. a learner 
gets assigned to a different Ignite node. This case is pretty straightforward: 
we can simply start the learner on the second node (data will be transferred to 
it via Raft), but we need to destroy the old storage from the first node. Looks 
like it can be done after the rebalance procedure completes, after Stable 
Assignments Metastorage key gets updated and Raft groups are stopped.
# A node that hosts a follower and a node that hosts a learner get merged into 
one. This is a tricky case, because we need to request a snapshot from the 
leader (however, a leaner may copy the data from the follower it gets merge 
into, but that is out of scope now), while buffering the incoming update and 
avoiding corrupting the already existing raft log. I currently have no idea how 
to do that, it requires additional investigation.

> Design the process of having a single storage for a follower and a learner on 
> the same node
> ---
>
> Key: IGNITE-18070
> URL: https://issues.apache.org/jira/browse/IGNITE-18070
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> Secondary Storage consistency is going to be implemented through the Raft 
> Learners. However, there exists a challenge: what if a partition's Primary 
> Storage will be assigned to the same node as its Secondary Storage? This 
> means that both a follower and learner for the same partition will be hosted 
> on a single node with the same consistent ID. Currently JRaft is not able to 
> distinguish two nodes with the same consistent ID. There are two ways to 
> solve this problem:
> # Use {{PeerId#idx}} functionality. This is a built-in JRaft mechanism to 
> have multiple Raft nodes on a single physical nodes.
> # Use a single Raft node that will write into multiple storages. 
> While option 1 is easy and straightforward to implement, this ticket focuses 
> on investigation of the option 2. The second option has a priority because it 
> is potentially more effective: since there will be less Raft nodes, there 
> will be less network traffic. The main problem with this approach is when a 
> learner or a follower hosted on such physical node gets moved to a different 
> physical node (or two nodes get merged into one). We should check if this is 
> technically possible to implement.



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


[jira] [Commented] (IGNITE-17383) IdleVerify hangs when called on inactive cluster with persistence

2022-11-15 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-17383:


{panel:title=Branch: [pull/10328/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/10328/head] Base: [master] : New Tests 
(1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#8b}PDS 2{color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=6841400]]
* {color:#013220}IgnitePdsTestSuite2: 
IgnitePdsCorruptedStoreTest.testNodeInvalidatedWhenPersistenceIsCorrupted - 
PASSED{color}

{panel}
[TeamCity *--> Run :: All* 
Results|https://ci2.ignite.apache.org/viewLog.html?buildId=6841329&buildTypeId=IgniteTests24Java8_RunAll]

> IdleVerify hangs when called on inactive cluster with persistence
> -
>
> Key: IGNITE-17383
> URL: https://issues.apache.org/jira/browse/IGNITE-17383
> Project: Ignite
>  Issue Type: Bug
>  Components: control.sh
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
> Fix For: 2.15
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When you call {{control.sh --cache idle_verify}} on inactive cluster with 
> persistence, control script hangs and no actions are performed. As you can 
> see below in 'rest' thread dump, {{VerifyBackupPartitionsTaskV2}} waits for 
> checkpoint start in {{GridCacheDatabaseSharedManager#waitForCheckpoint}}.
> It seems, that we can interrupt task execution and print message in control 
> script output, that IdleVerify can't work on inactive cluster.
> {code:title=Thread dump}
> "rest-#82%ignite-server%" #146 prio=5 os_prio=31 tid=0x7fe0cf97c000 
> nid=0x3607 waiting on condition [0x700010149000]
>java.lang.Thread.State: WAITING (parking)
>   at sun.misc.Unsafe.park(Native Method)
>   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:304)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:178)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
>   at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.waitForCheckpoint(GridCacheDatabaseSharedManager.java:1869)
>   at 
> org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager.waitForCheckpoint(IgniteCacheDatabaseSharedManager.java:1107)
>   at 
> org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsTaskV2$VerifyBackupPartitionsJobV2.execute(VerifyBackupPartitionsTaskV2.java:199)
>   at 
> org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsTaskV2$VerifyBackupPartitionsJobV2.execute(VerifyBackupPartitionsTaskV2.java:171)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
>   at 
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7366)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:614)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:539)
>   at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>   at 
> org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1343)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1444)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:674)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:540)
>   at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:860)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:470)
>   at 
> org.apache.ignite.internal.IgniteComputeImpl.executeAsync0(IgniteComputeImpl.java:514)
>   at 
> org.apache.ignite.internal.IgniteComputeImpl.executeAsync(IgniteComputeImpl.java:496)
>   at 
> org.apache.ignite.internal.visor.verify.VisorIdleVerifyJob.run(VisorIdleVerifyJob.java:70)
>   at 
> org.apache.ignite.internal.visor.verify.VisorIdleVerifyJob.run(VisorIdleVerifyJob.java:35)
>   at org.apache.ignite.internal.visor.VisorJob.execute(VisorJob.java:69)
>   at 
> org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:620)
>   at 
> org.apache.ignite.interna

[jira] [Commented] (IGNITE-18154) Move from travis to github actions

2022-11-15 Thread Nikita Amelchev (Jira)


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

Nikita Amelchev commented on IGNITE-18154:
--

[~ivandasch], LGTM.

> Move from travis to github actions
> --
>
> Key: IGNITE-18154
> URL: https://issues.apache.org/jira/browse/IGNITE-18154
> Project: Ignite
>  Issue Type: Task
>Reporter: Ivan Daschinsky
>Assignee: Ivan Daschinsky
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>




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


[jira] [Updated] (IGNITE-18155) Update changePeersAsync method to support learners configuration

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-18155:
-
Description: 
Update {{RaftGroupService#changePeersAsync}} method to support changing 
learners configuration. It should work the same way, we simply need to update 
internal Raft configuration for learners as well as for peers. The new 
signature will look like the following: 

{code:java}
/**
 * @param peers New peers.
 * @param learners New leaners.
 * @param term Current known leader term.
 * If real raft group term will be different - changePeers will be 
skipped.
 * @return A future.
 */
CompletableFuture changePeersAsync(List peers, List learners, 
long term);
{code}

This also implies changing the signature of 
{{RaftGroupEventsListener#onNewPeersConfigurationApplied}}:

{code:java}
/**
 * Invoked on the leader, when new peers' configuration applied to raft group.
 *
 * @param peers list of peers, which was applied by raft group membership 
configuration.
 * @param learners list of learners, which was applied by raft group membership 
configuration.
 */
void onNewPeersConfigurationApplied(List peers, List learners);
{code}


  was:
Update {{RaftGroupService#changePeersAsync}} method to support changing 
learners configuration, for example:

{code:java}
/**
 * @param peers New peers.
 * @param learners New leaners.
 * @param term Current known leader term.
 * If real raft group term will be different - changePeers will be 
skipped.
 * @return A future.
 */
CompletableFuture changePeersAsync(List peers, List learners, 
long term);
{code}

This also implies changing the signature of 
{{RaftGroupEventsListener#onNewPeersConfigurationApplied}}:

{code:java}
/**
 * Invoked on the leader, when new peers' configuration applied to raft group.
 *
 * @param peers list of peers, which was applied by raft group membership 
configuration.
 * @param learners list of learners, which was applied by raft group membership 
configuration.
 */
void onNewPeersConfigurationApplied(List peers, List learners);
{code}



> Update changePeersAsync method to support learners configuration
> 
>
> Key: IGNITE-18155
> URL: https://issues.apache.org/jira/browse/IGNITE-18155
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> Update {{RaftGroupService#changePeersAsync}} method to support changing 
> learners configuration. It should work the same way, we simply need to update 
> internal Raft configuration for learners as well as for peers. The new 
> signature will look like the following: 
> {code:java}
> /**
>  * @param peers New peers.
>  * @param learners New leaners.
>  * @param term Current known leader term.
>  * If real raft group term will be different - changePeers will 
> be skipped.
>  * @return A future.
>  */
> CompletableFuture changePeersAsync(List peers, List 
> learners, long term);
> {code}
> This also implies changing the signature of 
> {{RaftGroupEventsListener#onNewPeersConfigurationApplied}}:
> {code:java}
> /**
>  * Invoked on the leader, when new peers' configuration applied to raft group.
>  *
>  * @param peers list of peers, which was applied by raft group membership 
> configuration.
>  * @param learners list of learners, which was applied by raft group 
> membership configuration.
>  */
> void onNewPeersConfigurationApplied(List peers, List 
> learners);
> {code}



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


[jira] [Updated] (IGNITE-18155) Update changePeersAsync method to support learners configuration

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-18155:
-
Description: 
Update {{RaftGroupService#changePeersAsync}} method to support changing 
learners configuration, for example:

{code:java}
/**
 * @param peers New peers.
 * @param learners New leaners.
 * @param term Current known leader term.
 * If real raft group term will be different - changePeers will be 
skipped.
 * @return A future.
 */
CompletableFuture changePeersAsync(List peers, List learners, 
long term);
{code}

This also implies changing the signature of 
{{RaftGroupEventsListener#onNewPeersConfigurationApplied}}:

{code:java}
/**
 * Invoked on the leader, when new peers' configuration applied to raft group.
 *
 * @param peers list of peers, which was applied by raft group membership 
configuration.
 * @param learners list of learners, which was applied by raft group membership 
configuration.
 */
void onNewPeersConfigurationApplied(List peers, List learners);
{code}


> Update changePeersAsync method to support learners configuration
> 
>
> Key: IGNITE-18155
> URL: https://issues.apache.org/jira/browse/IGNITE-18155
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> Update {{RaftGroupService#changePeersAsync}} method to support changing 
> learners configuration, for example:
> {code:java}
> /**
>  * @param peers New peers.
>  * @param learners New leaners.
>  * @param term Current known leader term.
>  * If real raft group term will be different - changePeers will 
> be skipped.
>  * @return A future.
>  */
> CompletableFuture changePeersAsync(List peers, List 
> learners, long term);
> {code}
> This also implies changing the signature of 
> {{RaftGroupEventsListener#onNewPeersConfigurationApplied}}:
> {code:java}
> /**
>  * Invoked on the leader, when new peers' configuration applied to raft group.
>  *
>  * @param peers list of peers, which was applied by raft group membership 
> configuration.
>  * @param learners list of learners, which was applied by raft group 
> membership configuration.
>  */
> void onNewPeersConfigurationApplied(List peers, List 
> learners);
> {code}



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


[jira] [Updated] (IGNITE-18154) Move from travis to github actions

2022-11-15 Thread Ivan Daschinsky (Jira)


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

Ivan Daschinsky updated IGNITE-18154:
-
Priority: Minor  (was: Major)

> Move from travis to github actions
> --
>
> Key: IGNITE-18154
> URL: https://issues.apache.org/jira/browse/IGNITE-18154
> Project: Ignite
>  Issue Type: Task
>Reporter: Ivan Daschinsky
>Assignee: Ivan Daschinsky
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>




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


[jira] [Created] (IGNITE-18155) Update changePeersAsync method to support learners configuration

2022-11-15 Thread Aleksandr Polovtcev (Jira)
Aleksandr Polovtcev created IGNITE-18155:


 Summary: Update changePeersAsync method to support learners 
configuration
 Key: IGNITE-18155
 URL: https://issues.apache.org/jira/browse/IGNITE-18155
 Project: Ignite
  Issue Type: Task
Reporter: Aleksandr Polovtcev
Assignee: Aleksandr Polovtcev






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


[jira] [Updated] (IGNITE-18154) Move from travis to github actions

2022-11-15 Thread Ivan Daschinsky (Jira)


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

Ivan Daschinsky updated IGNITE-18154:
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Move from travis to github actions
> --
>
> Key: IGNITE-18154
> URL: https://issues.apache.org/jira/browse/IGNITE-18154
> Project: Ignite
>  Issue Type: Task
>Reporter: Ivan Daschinsky
>Assignee: Ivan Daschinsky
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>




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


[jira] [Updated] (IGNITE-18155) Update changePeersAsync method to support learners configuration

2022-11-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-18155:
-
Labels: ignite-3  (was: )

> Update changePeersAsync method to support learners configuration
> 
>
> Key: IGNITE-18155
> URL: https://issues.apache.org/jira/browse/IGNITE-18155
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>




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


[jira] [Resolved] (IGNITE-18055) Sql. Support index scans with NULL conditions.

2022-11-15 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov resolved IGNITE-18055.
---
Resolution: Duplicate

> Sql. Support index scans with NULL conditions.
> --
>
> Key: IGNITE-18055
> URL: https://issues.apache.org/jira/browse/IGNITE-18055
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
>
> Query {{SELECT * FROM T1 WHERE val IS NULL}} look fine, but next cases has to 
> be fixed.
> * {{SELECT * FROM T1 WHERE val IS NOT NULL}} - returns nothing.
> * {{SELECT * FROM T1 WHERE (val <= 5) or (val IS NULL)}} - returns duplicate 
> rows.
> Startpoint is ItSecondaryIndexTest.



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


[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:44 AM:
-

*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  \\ var 
key1 = key("test"); \\  \\ xlock(tx2, key1).join(); \\  \\ CompletableFuture 
xlockFutTx1 = xlock(tx1, key1); \\ assertFalse(xlockFutTx1.isDone()); \\ 
commitTx(tx2); \\ xlockFutTx1.join();|Tx2 waits on attempt to acquire 
x-lock.\\*Note:* works correctly with reverse transaction order.|correct|X-lock 
for tx2 fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it 
should DIE instead.|
|2|*testWaitDie1* \\  \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  \\ 
var key1 = key("test"); \\  \\ xlock(tx2, key1).join(); \\  \\ 
CompletableFuture xlockFutTx1 = xlock(tx1, key1); \\ 
assertFalse(xlockFutTx1.isDone()); \\  \\ commitTx(tx2); \\ 
xlockFutTx1.join();|Tx1 fails on attempt of acquiring the x-lock \\  \\ Note: 
works correctly with reverse transaction order.|correct|tx2 successfully 
acquires x-lock. \\ tx1 waits on attempt of acquiring x-lock. \\ After tx2 is 
committed, the future for tx1 is completed without exception. \\ |
|3|*testWaitDieSlocks0* \\  \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  
\\ var key1 = key("test"); \\  \\ slock(tx1, key1).join(); \\ slock(tx2, 
key1).join(); \\  \\ CompletableFuture xlockTx1 = xlock(tx1, key1); \\ 
assertFalse(xlockTx1.isDone()); \\  \\ commitTx(tx2); \\ 
xlockTx1.join();|X-lock for tx1 returns future that is completed exceptionally 
with LockException \\  \\ Note: works correctly with reverse transaction 
order.|correct|Tx1 waits for tx2 to commit, then x-lock for tx1 is acquired.|
|4|*testWaitDieSlocks1* \\  \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  
\\ var key1 = key("test"); \\  \\ slock(tx1, key1).join(); \\ slock(tx2, 
key1).join(); \\  \\ assertThrowsException(() -> xlock(tx2, key1));|Tx2 waits 
on attempt to acquire x-lock. \\  \\ Note: works correctly with reverse 
transaction order.|correct|Tx2 should fail on attempt to acquire x-lock, as tx1 
is holding s-lock and tx2 can’t wait for tx1.|
|5|*testWaitDieSlocks2* \\  \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  
\\ var key1 = key("test"); \\  \\ slock(tx1, key1).join(); \\ slock(tx2, 
key1).join(); \\  \\ CompletableFuture xlockTx1 = xlock(tx1, key1); \\ 
assertFalse(xlockTx1.isDone()); \\  \\ assertThrowsException(() -> xlock(tx2, 
key1)); \\  \\ rollbackTx(tx2); \\  \\ xlockTx1.join();|Tx2 waits on attempt to 
acquire x-lock.|correct|Tx1 should wait after attempt to acquire x-lock, as tx2 
is holding s-lock. \\ Tx2 should fail on attempt to acquire x-lock, as tx1 is 
holding s-lock and tx2 can’t wait for tx1. \\ Then tx2 rolls back, and tx1 
successfully acquires x-lock. \\  \\ |
|6|*testNonFair* \\  \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\ var tx3 
= beginTx(); \\  \\ var k = key("test"); \\  \\ slock(tx3, k).join(); \\  \\ 
CompletableFuture futTx2 = xlock(tx2, k); \\ assertFalse(futTx2.isDone()); 
\\  \\ CompletableFuture futTx1 = xlock(tx1, k); \\ 
assertFalse(futTx1.isDone()); \\  \\ commitTx(tx3); \\  \\ futTx2.join(); \\  
\\ assertFalse(futTx1.isDone()); \\  \\ commitTx(tx2); \\  \\ 
futTx1.join();|Tx2 waits on attempt to acquire x-lock. \\  \\ Note: works 
correctly with reverse transaction order.|correct|Tx1 and tx2 wait for tx3 to 
commit in order to acquire x-lock. After tx3 is committed, tx2 as more young 
acquires x-lock first, and tx1 continues to wait. After tx2 is committed, tx1 
acquires x-lock. So conflict between waiting transactions is resolved in an 
order allowing all transactions to succeed.|
|7|*testReenterWithConflict* \\  \\ var tx1 = beginTx(); \\ var tx2 = 
beginTx(); \\  \\ var k = key("test"); \\  \\ slock(tx2, k).join(); \\ 
slock(tx1, k).join(); \\  \\ CompletableFuture futTx1 = xlock(tx1, k); \\ 
assertFalse(futTx1.isDone()); \\  \\ commitTx(tx2); \\  \\ futTx1.join();|Tx1 
waits on attempt to acquire x-lock. \\  \\ Note: works correctly with reverse 
transaction order.|correct|Tx1 should wait for tx1 to commit in order to 
upgrade s-lock to x-lock.|
|8|*testReenterWithConflictAndAbort* \\  \\ var tx1 = beginTx(); \\ var tx2 = 
beginTx(); \\  \\ var k = key("test"); \\  \\ slock(tx2, k).join(); \\ 
slock(tx1, k).join(); \\  \\assertThrowsException(() -> xlock(tx2, k));|Tx2 
waits for tx1 \\  \\Note: works correctly with reverse transaction 
order.|correct|Tx2 is not allowed to wait for tx1 to commit.|
|9|*testReenterAllowed* \\  \\ var tx1 = beginTx(); \\  \\ var k = key("test"); 
\\  \\ slock(tx1, k).join(); \\ xlock(tx1, k).join();|correct|correct|Reenter 
allowed|
|10|*testNonFairConflictWithAlreadyWaiting* \\  \\ var tx1 = 

[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:29 AM:
-

*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* 
var tx1 = beginTx(); 
var tx2 = beginTx(); 
 
var key1 = key("test"); 
 
xlock(tx2, key1).join(); 
 
CompletableFuture xlockFutTx1 = xlock(tx1, key1); 
assertFalse(xlockFutTx1.isDone()); 
commitTx(tx2); 
xlockFutTx1.join();|Tx2 waits on attempt to acquire x-lock.
*Note:* works correctly with reverse transaction order.|correct|X-lock for tx2 
fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it should 
DIE instead.|
|2|*testWaitDie1*
 
var tx1 = beginTx();var tx2 = beginTx();
 
var key1 = key("test");
 
xlock(tx2, key1).join();
CompletableFuture xlockFutTx1 = xlock(tx1, key1);
{_}assertFalse{_}(xlockFutTx1.isDone());
 
commitTx(tx2);
xlockFutTx1.join();|Tx1 fails on attempt of acquiring the x-lock
 
*Note:* works correctly with reverse transaction order.|correct|tx2 
successfully acquires x-lock.
tx1 waits on attempt of acquiring x-lock.
After tx2 is committed, the future for tx1 is completed without exception.|
|3|*testWaitDieSlocks0*
 
*var tx1 = beginTx();var tx2 = beginTx();
*
*var key1 = key("test");
*
*slock(tx1, key1).join();slock(tx2, key1).join();*
*CompletableFuture xlockTx1 = xlock(tx1, key1);

{_}assertFalse{_}(xlockTx1.isDone());*
*commitTx(tx2);xlockTx1.join();*|X-lock for tx1 returns future that is 
completed exceptionally with LockException

*Note:* works correctly with reverse transaction order.|correct|Tx1 waits for 
tx2 to commit, then x-lock for tx1 is acquired.|

 


was (Author: denis chudov):
*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* 
var tx1 = beginTx(); 
var tx2 = beginTx(); 
 
var key1 = key("test"); 
 
xlock(tx2, key1).join(); 
 
CompletableFuture xlockFutTx1 = xlock(tx1, key1); 
assertFalse(xlockFutTx1.isDone()); 
commitTx(tx2); 
xlockFutTx1.join();|Tx2 waits on attempt to acquire x-lock.
*Note:* works correctly with reverse transaction order.|correct|X-lock for tx2 
fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it should 
DIE instead.|
|2|*testWaitDie1*
 
var tx1 = beginTx();var tx2 = beginTx();
 
var key1 = key("test");
 
xlock(tx2, key1).join();
CompletableFuture xlockFutTx1 = xlock(tx1, key1);
{_}assertFalse{_}(xlockFutTx1.isDone());
 
commitTx(tx2);
xlockFutTx1.join();|Tx1 fails on attempt of acquiring the x-lock
 
*Note:* works correctly with reverse transaction order.|correct|tx2 
successfully acquires x-lock.
tx1 waits on attempt of acquiring x-lock.
After tx2 is committed, the future for tx1 is completed without exception.|

 

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:28 AM:
-

*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* 
var tx1 = beginTx(); 
var tx2 = beginTx(); 
 
var key1 = key("test"); 
 
xlock(tx2, key1).join(); 
 
CompletableFuture xlockFutTx1 = xlock(tx1, key1); 
assertFalse(xlockFutTx1.isDone()); 
commitTx(tx2); 
xlockFutTx1.join();|Tx2 waits on attempt to acquire x-lock.
*Note:* works correctly with reverse transaction order.|correct|X-lock for tx2 
fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it should 
DIE instead.|
|2|*testWaitDie1*
 
var tx1 = beginTx();var tx2 = beginTx();
 
var key1 = key("test");
 
xlock(tx2, key1).join();
CompletableFuture xlockFutTx1 = xlock(tx1, key1);
{_}assertFalse{_}(xlockFutTx1.isDone());
 
commitTx(tx2);
xlockFutTx1.join();|Tx1 fails on attempt of acquiring the x-lock
 
*Note:* works correctly with reverse transaction order.|correct|tx2 
successfully acquires x-lock.
tx1 waits on attempt of acquiring x-lock.
After tx2 is committed, the future for tx1 is completed without exception.|

 


was (Author: denis chudov):
*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* 
var tx1 = beginTx(); 
var tx2 = beginTx(); 
 
var key1 = key("test"); 
 
xlock(tx2, key1).join(); 
 
CompletableFuture xlockFutTx1 = xlock(tx1, key1); 
assertFalse(xlockFutTx1.isDone()); 
commitTx(tx2); 
xlockFutTx1.join();|Tx2 waits on attempt to acquire x-lock.
*Note:* works correctly with reverse transaction order.|correct|X-lock for tx2 
fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it should 
DIE instead.|
|2|*testWaitDie1*
*var tx1 = beginTx();var tx2 = beginTx();
*
*var key1 = key("test");
*
*xlock(tx2, key1).join();*
*CompletableFuture xlockFutTx1 = xlock(tx1, key1);
{_}assertFalse{_}(xlockFutTx1.isDone());
*
*commitTx(tx2);
xlockFutTx1.join();*|Tx1 fails on attempt of acquiring the x-lock
*Note:* works correctly with reverse transaction order.|correct|tx2 
successfully acquires x-lock.
tx1 waits on attempt of acquiring x-lock.
After tx2 is committed, the future for tx1 is completed without exception.|

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:27 AM:
-

*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* 
var tx1 = beginTx(); 
var tx2 = beginTx(); 
 
var key1 = key("test"); 
 
xlock(tx2, key1).join(); 
 
CompletableFuture xlockFutTx1 = xlock(tx1, key1); 
assertFalse(xlockFutTx1.isDone()); 
commitTx(tx2); 
xlockFutTx1.join();|Tx2 waits on attempt to acquire x-lock.
*Note:* works correctly with reverse transaction order.|correct|X-lock for tx2 
fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it should 
DIE instead.|
|2|*testWaitDie1*
*var tx1 = beginTx();var tx2 = beginTx();
*
*var key1 = key("test");
*
*xlock(tx2, key1).join();*
*CompletableFuture xlockFutTx1 = xlock(tx1, key1);
{_}assertFalse{_}(xlockFutTx1.isDone());
*
*commitTx(tx2);
xlockFutTx1.join();*|Tx1 fails on attempt of acquiring the x-lock
*Note:* works correctly with reverse transaction order.|correct|tx2 
successfully acquires x-lock.
tx1 waits on attempt of acquiring x-lock.
After tx2 is committed, the future for tx1 is completed without exception.|


was (Author: denis chudov):
*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  \\ var 
key1 = key("test"); \\  \\ xlock(tx2, key1).join(); \\  \\ CompletableFuture 
xlockFutTx1 = xlock(tx1, key1); \\ assertFalse(xlockFutTx1.isDone()); \\ 
commitTx(tx2); \\ xlockFutTx1.join();|Tx2 waits on attempt to acquire 
x-lock.\\*Note:* works correctly with reverse transaction order.|correct|X-lock 
for tx2 fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it 
should DIE instead.|

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:24 AM:
-

*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  \\ var 
key1 = key("test"); \\  \\ xlock(tx2, key1).join(); \\  \\ CompletableFuture 
xlockFutTx1 = xlock(tx1, key1); \\ assertFalse(xlockFutTx1.isDone()); \\ 
commitTx(tx2); \\ xlockFutTx1.join();|Tx2 waits on attempt to acquire 
x-lock.\\Note: works correctly with reverse transaction order.|correct|X-lock 
for tx2 fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it 
should DIE instead.|


was (Author: denis chudov):
||Heading 1||Heading 2||
|Col A1 \\ w\\a|Col A2|

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:24 AM:
-

*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  \\ var 
key1 = key("test"); \\  \\ xlock(tx2, key1).join(); \\  \\ CompletableFuture 
xlockFutTx1 = xlock(tx1, key1); \\ assertFalse(xlockFutTx1.isDone()); \\ 
commitTx(tx2); \\ xlockFutTx1.join();|Tx2 waits on attempt to acquire 
x-lock.\\*Note:* works correctly with reverse transaction order.|correct|X-lock 
for tx2 fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it 
should DIE instead.|


was (Author: denis chudov):
*Correct* means that the behavior matches the expectations.
||N||Scenario||Ignite 3||MVP||Expected||
|1|*testWaitDie0* \\ var tx1 = beginTx(); \\ var tx2 = beginTx(); \\  \\ var 
key1 = key("test"); \\  \\ xlock(tx2, key1).join(); \\  \\ CompletableFuture 
xlockFutTx1 = xlock(tx1, key1); \\ assertFalse(xlockFutTx1.isDone()); \\ 
commitTx(tx2); \\ xlockFutTx1.join();|Tx2 waits on attempt to acquire 
x-lock.\\Note: works correctly with reverse transaction order.|correct|X-lock 
for tx2 fails, as tx2 younger than tx1 and is not allowed to wait for tx1, it 
should DIE instead.|

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:21 AM:
-

||Heading 1||Heading 2||
|Col A1 \\ w\\a|Col A2|


was (Author: denis chudov):
||Heading 1||Heading 2||
|Col A1
 
 
|Col A2|

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Created] (IGNITE-18154) Move from travis to github actions

2022-11-15 Thread Ivan Daschinsky (Jira)
Ivan Daschinsky created IGNITE-18154:


 Summary: Move from travis to github actions
 Key: IGNITE-18154
 URL: https://issues.apache.org/jira/browse/IGNITE-18154
 Project: Ignite
  Issue Type: Task
Reporter: Ivan Daschinsky
Assignee: Ivan Daschinsky






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


[jira] [Commented] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov commented on IGNITE-18091:
---

||Heading 1||Heading 2||
|Col A1
 
 
|Col A2|

> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Comment Edited] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov edited comment on IGNITE-18091 at 11/15/22 9:17 AM:
-

||Heading 1||Heading 2||
|Col A1|Col A2|
Col A3|Col A4|



was (Author: denis chudov):

||Heading 1||Heading 2||
|Col A1|Col A2|
|Col A3|Col A4|


> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


[ https://issues.apache.org/jira/browse/IGNITE-18091 ]


Denis Chudov deleted comment on IGNITE-18091:
---

was (Author: denis chudov):
||Heading 1||Heading 2||
|Col A1|Col A2|
Col A3|Col A4|


> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Commented] (IGNITE-18091) Compare deadlock prevention implementations and work out decisions about correct behavior in corner cases

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov commented on IGNITE-18091:
---


||Heading 1||Heading 2||
|Col A1|Col A2|
|Col A3|Col A4|


> Compare deadlock prevention implementations and work out decisions about 
> correct behavior in corner cases
> -
>
> Key: IGNITE-18091
> URL: https://issues.apache.org/jira/browse/IGNITE-18091
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Today we have several possible implementations of deadlock prevention: AI 3 
> [1], transactions POC [2], and possible implementation based on concurrency 
> control paper [3]. Moreover, we have a multiple granularity lock model [4] 
> where some lock modes are compatible, others are not, which allows 
> reenterability in some cases, and sharing of locks between transactions. We 
> should understand the differences of behavior of each implementation in 
> different scenarios, and how it matches with our expectations.
> *Definition of done*
> Table with a set of scenarios and description of behavior, including the 
> expected one.
> [1] org.apache.ignite.internal.tx.impl.HeapLockManager
> [2] https://github.com/ascherbakoff/ai3-txn-mvp
> [3] https://dl.acm.org/doi/pdf/10.1145/320251.320260
> [4] https://web.stanford.edu/class/cs245/readings/granularity-of-locks.pdf



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


[jira] [Commented] (IGNITE-18142) Update Ignite dependency: PostgreSQL JDBC to 42.5.0

2022-11-15 Thread Nikita Amelchev (Jira)


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

Nikita Amelchev commented on IGNITE-18142:
--

LGTM. Merged into the master.

[~aonikolaev], Thank you for the contribution.

> Update Ignite dependency: PostgreSQL JDBC to 42.5.0
> ---
>
> Key: IGNITE-18142
> URL: https://issues.apache.org/jira/browse/IGNITE-18142
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr
>Assignee: Aleksandr
>Priority: Major
>  Labels: ise
> Fix For: 2.15
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Update Ignite dependency: PostgreSQL JDBC 42.3.3 to 42.5.0



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


[jira] [Assigned] (IGNITE-18043) Replaceable deadlock prevention mechanism

2022-11-15 Thread Denis Chudov (Jira)


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

Denis Chudov reassigned IGNITE-18043:
-

Assignee: Denis Chudov

> Replaceable deadlock prevention mechanism
> -
>
> Key: IGNITE-18043
> URL: https://issues.apache.org/jira/browse/IGNITE-18043
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation:*
> We have an embedded deadlock prevention strategy (presently, it is 
> _Wait-Die_). Although, [the original 
> paper|https://dl.acm.org/doi/pdf/10.1145/320251.320260] about deadlock 
> prevention contains another two strategies: _priorities_ and _Wound-Wait_. 
> Also, the mechanism should give a possibility to not use any strategy to 
> prevent deadlock.
> All told, above shows we need to separate the prevention strategy in dedicate 
> interface (which even has one implementation _Wait-Die_).  Another 
> implementation will be released by necessary.
> *Definition of Done:*
> A deadlock resolution strategy (_ResolutionStrategy_) has to be extracted to 
> interface, which parametrizes _LockManager_. Wait-Die strategy 
> (_WaitDieLockResolutionStrategy_) will be the only one implementation of 
> _ResolutionStrategy_.
> _HeapLockManager_ should be parametrized by _WaitDieLockResolutionStrategy_.



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