[jira] [Commented] (IGNITE-21313) Incorrect behaviour when invalid zone filter is applied to zone

2024-02-01 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-21313:


Merged 9e7288ab46924324a576af30009e4021efdfd849

> Incorrect behaviour when invalid zone filter is applied to zone 
> 
>
> Key: IGNITE-21313
> URL: https://issues.apache.org/jira/browse/IGNITE-21313
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mirza Aliev
>Assignee: Sergey Uttsel
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Let's consider this code to be run in a test:
>  
> {code:java}
> sql("CREATE ZONE ZONE1 WITH DATA_NODES_FILTER = 'INCORRECT_FILTER'");
> sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT) WITH 
> PRIMARY_ZONE='ZONE1'"); {code}
>  Current behaviour is that test hangs with spamming 
>  
> {noformat}
> [2024-01-19T12:56:25,163][ERROR][%ictdt_n_0%metastorage-watch-executor-2][WatchProcessor]
>  Error occurred when notifying safe time advanced callback
>  java.util.concurrent.CompletionException: 
> com.jayway.jsonpath.PathNotFoundException: No results for path: 
> $['INCORRECT_FILTER']
>     at 
> java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:870)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:883)
>  [?:?]
>     at 
> java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2257)
>  [?:?]
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyWatches(WatchProcessor.java:213)
>  ~[main/:?]
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatches$3(WatchProcessor.java:169)
>  ~[main/:?]
>     at 
> java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
>  [?:?]
>     at 
> java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
>  [?:?]
>     at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>  [?:?]
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>  [?:?]
>     at java.lang.Thread.run(Thread.java:829) [?:?]
> Caused by: com.jayway.jsonpath.PathNotFoundException: No results for path: 
> $['INCORRECT_FILTER']{noformat}
>  
> We need to fix that and formulate a reaction to an incorrect filter
>  
> *Implementation notes:*
> To fix it we need to change implementation of DistributionZonesUtil#filter.
> Instead of 
> {code:java}
> List> res = JsonPath.read(convertedAttributes, 
> filter);{code}
> need to use
> {code:java}
> Configuration configuration = new Configuration.ConfigurationBuilder()
> .options(Option.SUPPRESS_EXCEPTIONS, Option.ALWAYS_RETURN_LIST)
> .build();
> List> res = 
> JsonPath.using(configuration).parse(convertedAttributes).read(filter);{code}
> In this case incorrect filter will not throw PathNotFoundException and 
> returns empty 'res'.



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


[jira] [Updated] (IGNITE-21366) AssertionError during the execution of the request

2024-02-01 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-21366:
---
Ignite Flags: Release Notes Required  (was: Docs Required,Release Notes 
Required)

> AssertionError during the execution of the request 
> ---
>
> Key: IGNITE-21366
> URL: https://issues.apache.org/jira/browse/IGNITE-21366
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksandr Nikolaev
>Assignee: Aleksandr Nikolaev
>Priority: Major
>  Labels: ise
> Fix For: 2.17
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> If GridH2Table#cache size is greater than int, then we get an AssertionError:
> {code}
> -26T19:32:35,247][ERROR][main][] Test failed 
> [test=RowCountTableStatisticsUsageTest#compareJoinsWithConditionsOnBothTables[cacheMode=REPLICATED],
>  duration=10]
>  java.lang.AssertionError: totalRowCnt=-4294967096, localRowCount=-2147483548
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.TableStatistics.(TableStatistics.java:34)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.refreshStatsIfNeeded(GridH2Table.java:1055)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.getRowCountApproximation(GridH2Table.java:1013)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase.getRowCountApproximation(GridH2IndexBase.java:226)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.H2ScanIndex.getRowCountApproximation(H2ScanIndex.java:158)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.H2ScanIndex.getCost(H2ScanIndex.java:289)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.H2TableScanIndex.getCost(H2TableScanIndex.java:74)
>  ~[classes/:?]
>   at org.h2.table.Table.getBestPlanItem(Table.java:714) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.table.TableFilter.getBestPlanItem(TableFilter.java:224) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.table.Plan.calculateCost(Plan.java:121) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Optimizer.testPlan(Optimizer.java:180) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Optimizer.calculateBestPlan(Optimizer.java:81) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Optimizer.optimize(Optimizer.java:239) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Select.preparePlan(Select.java:1018) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Select.prepare(Select.java:884) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Explain.prepare(Explain.java:49) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.Parser.prepareCommand(Parser.java:283) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.engine.Session.prepareLocal(Session.java:611) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.engine.Session.prepareCommand(Session.java:549) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247) 
> ~[h2-1.4.197.jar:1.4.197]
>   at 
> org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:76) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:694) 
> ~[h2-1.4.197.jar:1.4.197]
>   at 
> org.apache.ignite.internal.processors.query.h2.H2Connection.prepareStatementNoCache(H2Connection.java:191)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.H2PooledConnection.prepareStatementNoCache(H2PooledConnection.java:109)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.QueryParser.parseH2(QueryParser.java:341)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.QueryParser.parse0(QueryParser.java:225)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.QueryParser.parse(QueryParser.java:138)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:1011)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:3115)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:3086)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:3821)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.lambda$querySqlFields$3(GridQueryProcessor.java:3132)
>  

[jira] [Commented] (IGNITE-21313) Incorrect behaviour when invalid zone filter is applied to zone

2024-02-01 Thread Mirza Aliev (Jira)


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

Mirza Aliev commented on IGNITE-21313:
--

LGTM

> Incorrect behaviour when invalid zone filter is applied to zone 
> 
>
> Key: IGNITE-21313
> URL: https://issues.apache.org/jira/browse/IGNITE-21313
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mirza Aliev
>Assignee: Sergey Uttsel
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Let's consider this code to be run in a test:
>  
> {code:java}
> sql("CREATE ZONE ZONE1 WITH DATA_NODES_FILTER = 'INCORRECT_FILTER'");
> sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT) WITH 
> PRIMARY_ZONE='ZONE1'"); {code}
>  Current behaviour is that test hangs with spamming 
>  
> {noformat}
> [2024-01-19T12:56:25,163][ERROR][%ictdt_n_0%metastorage-watch-executor-2][WatchProcessor]
>  Error occurred when notifying safe time advanced callback
>  java.util.concurrent.CompletionException: 
> com.jayway.jsonpath.PathNotFoundException: No results for path: 
> $['INCORRECT_FILTER']
>     at 
> java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:870)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:883)
>  [?:?]
>     at 
> java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2257)
>  [?:?]
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyWatches(WatchProcessor.java:213)
>  ~[main/:?]
>     at 
> org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatches$3(WatchProcessor.java:169)
>  ~[main/:?]
>     at 
> java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
>  [?:?]
>     at 
> java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
>  [?:?]
>     at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>  [?:?]
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>  [?:?]
>     at java.lang.Thread.run(Thread.java:829) [?:?]
> Caused by: com.jayway.jsonpath.PathNotFoundException: No results for path: 
> $['INCORRECT_FILTER']{noformat}
>  
> We need to fix that and formulate a reaction to an incorrect filter
>  
> *Implementation notes:*
> To fix it we need to change implementation of DistributionZonesUtil#filter.
> Instead of 
> {code:java}
> List> res = JsonPath.read(convertedAttributes, 
> filter);{code}
> need to use
> {code:java}
> Configuration configuration = new Configuration.ConfigurationBuilder()
> .options(Option.SUPPRESS_EXCEPTIONS, Option.ALWAYS_RETURN_LIST)
> .build();
> List> res = 
> JsonPath.using(configuration).parse(convertedAttributes).read(filter);{code}
> In this case incorrect filter will not throw PathNotFoundException and 
> returns empty 'res'.



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


[jira] [Commented] (IGNITE-21419) Optimize listener collection update in AbstractEventProducer

2024-02-01 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko commented on IGNITE-21419:
--

My variant not optimal, I have attached a benchmark and its results:
{noformat}
BenchmarkMode  Cnt 
Score Error  Units
RemoveWithCopyListMicroBenchmark.remove100_000_middle_newavgt   25
865788,301 �  139764,886  ns/op
RemoveWithCopyListMicroBenchmark.remove100_000_middle_oldavgt   25
717813,727 �   79712,872  ns/op
RemoveWithCopyListMicroBenchmark.remove100_middle_newavgt   25   
892,892 �  85,316  ns/op
RemoveWithCopyListMicroBenchmark.remove100_middle_oldavgt   25   
731,736 �  99,779  ns/op
RemoveWithCopyListMicroBenchmark.remove10_000_middle_new avgt   25 
85465,439 �   27578,902  ns/op
RemoveWithCopyListMicroBenchmark.remove10_000_middle_old avgt   25 
62351,185 �5958,444  ns/op
RemoveWithCopyListMicroBenchmark.remove10_middle_new avgt   25   
222,722 �  56,660  ns/op
RemoveWithCopyListMicroBenchmark.remove10_middle_old avgt   25
92,436 �  15,677  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_000_middle_new  avgt   25  
16297910,000 � 1053968,832  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_000_middle_old  avgt   25  
17191652,000 �  801548,036  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_middle_new  avgt   25  
8885,919 �1442,966  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_middle_old  avgt   25  
6076,685 � 907,782  ns/op
{noformat}


> Optimize listener collection update in AbstractEventProducer
> 
>
> Key: IGNITE-21419
> URL: https://issues.apache.org/jira/browse/IGNITE-21419
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Attachments: RemoveWithCopyListMicroBenchmark.java
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> I discovered that updating the collection of listeners in 
> *org.apache.ignite.internal.event.AbstractEventProducer* is a little not 
> optimal, I’m optimizing it.



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


[jira] [Comment Edited] (IGNITE-21419) Optimize listener collection update in AbstractEventProducer

2024-02-01 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko edited comment on IGNITE-21419 at 2/2/24 6:57 AM:
--

My variant not optimal, I have attached a  
[^RemoveWithCopyListMicroBenchmark.java]  and its results:
{noformat}
BenchmarkMode  Cnt 
Score Error  Units
RemoveWithCopyListMicroBenchmark.remove100_000_middle_newavgt   25
865788,301 �  139764,886  ns/op
RemoveWithCopyListMicroBenchmark.remove100_000_middle_oldavgt   25
717813,727 �   79712,872  ns/op
RemoveWithCopyListMicroBenchmark.remove100_middle_newavgt   25   
892,892 �  85,316  ns/op
RemoveWithCopyListMicroBenchmark.remove100_middle_oldavgt   25   
731,736 �  99,779  ns/op
RemoveWithCopyListMicroBenchmark.remove10_000_middle_new avgt   25 
85465,439 �   27578,902  ns/op
RemoveWithCopyListMicroBenchmark.remove10_000_middle_old avgt   25 
62351,185 �5958,444  ns/op
RemoveWithCopyListMicroBenchmark.remove10_middle_new avgt   25   
222,722 �  56,660  ns/op
RemoveWithCopyListMicroBenchmark.remove10_middle_old avgt   25
92,436 �  15,677  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_000_middle_new  avgt   25  
16297910,000 � 1053968,832  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_000_middle_old  avgt   25  
17191652,000 �  801548,036  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_middle_new  avgt   25  
8885,919 �1442,966  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_middle_old  avgt   25  
6076,685 � 907,782  ns/op
{noformat}



was (Author: ktkale...@gridgain.com):
My variant not optimal, I have attached a benchmark and its results:
{noformat}
BenchmarkMode  Cnt 
Score Error  Units
RemoveWithCopyListMicroBenchmark.remove100_000_middle_newavgt   25
865788,301 �  139764,886  ns/op
RemoveWithCopyListMicroBenchmark.remove100_000_middle_oldavgt   25
717813,727 �   79712,872  ns/op
RemoveWithCopyListMicroBenchmark.remove100_middle_newavgt   25   
892,892 �  85,316  ns/op
RemoveWithCopyListMicroBenchmark.remove100_middle_oldavgt   25   
731,736 �  99,779  ns/op
RemoveWithCopyListMicroBenchmark.remove10_000_middle_new avgt   25 
85465,439 �   27578,902  ns/op
RemoveWithCopyListMicroBenchmark.remove10_000_middle_old avgt   25 
62351,185 �5958,444  ns/op
RemoveWithCopyListMicroBenchmark.remove10_middle_new avgt   25   
222,722 �  56,660  ns/op
RemoveWithCopyListMicroBenchmark.remove10_middle_old avgt   25
92,436 �  15,677  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_000_middle_new  avgt   25  
16297910,000 � 1053968,832  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_000_middle_old  avgt   25  
17191652,000 �  801548,036  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_middle_new  avgt   25  
8885,919 �1442,966  ns/op
RemoveWithCopyListMicroBenchmark.remove1_000_middle_old  avgt   25  
6076,685 � 907,782  ns/op
{noformat}


> Optimize listener collection update in AbstractEventProducer
> 
>
> Key: IGNITE-21419
> URL: https://issues.apache.org/jira/browse/IGNITE-21419
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Attachments: RemoveWithCopyListMicroBenchmark.java
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> I discovered that updating the collection of listeners in 
> *org.apache.ignite.internal.event.AbstractEventProducer* is a little not 
> optimal, I’m optimizing it.



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


[jira] [Updated] (IGNITE-21419) Optimize listener collection update in AbstractEventProducer

2024-02-01 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko updated IGNITE-21419:
-
Attachment: RemoveWithCopyListMicroBenchmark.java

> Optimize listener collection update in AbstractEventProducer
> 
>
> Key: IGNITE-21419
> URL: https://issues.apache.org/jira/browse/IGNITE-21419
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Attachments: RemoveWithCopyListMicroBenchmark.java
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> I discovered that updating the collection of listeners in 
> *org.apache.ignite.internal.event.AbstractEventProducer* is a little not 
> optimal, I’m optimizing it.



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


[jira] [Resolved] (IGNITE-21112) Mechanism to wait for completion of transactions started on schema versions preceding a target schema version

2024-02-01 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko resolved IGNITE-21112.
--
Resolution: Fixed

Implemented in IGNITE-21155.

> Mechanism to wait for completion of transactions started on schema versions 
> preceding a target schema version
> -
>
> Key: IGNITE-21112
> URL: https://issues.apache.org/jira/browse/IGNITE-21112
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> A. Each node should handle the following message: 
> RwTransactionsFinishedRequest; it will have targetSchemaVersion field of type 
> int (which represents a Catalog version). The response will be 
> RwTransactionsFinishedResponse containing the only field: finished (of type 
> boolean).
> B. When the node gets such a request, it should (1) first check whether the 
> target version has activated (not just appeared in the local Catalog) on the 
> node. If not, (2) it should return false. If it has already been activated on 
> the node, then the node should atomically query its TxManager whether it has 
> any non-finished RW transactions that started on schema versions preceding 
> the target version (this is determined by the beginTs of the transaction).
> C. To avoid a race between starting an RW transaction and checking for 
> non-finished transactions, we need to start RW transactions in the following 
> way:
>  # beginTs = HLC.now()
>  # {*}Without doing a schema sync{*}, find the Catalog version active at 
> beginTs, assign it to TxCatalogVersion
>  # Atomically wrt checking for transactions existence on schemas before X 
> (see B.2), wrt finishing RW transactions and wrt raising the 'latest 
> activated Catalog version' (used in B.1), add the new transaction with 
> beginTs to the map of the currently active transactions (only if the 'latest 
> activated Catalog version' is not higher than TxCatalogVersion)
>  # If on item 3 it turned out that TxCatalogVersion is already lower than the 
> 'latest activated Catalog version', goto step 1
> Note that, as on step 2 we don't do schema sync, resolving the catalog 
> version corresponding to the beginTs might yield different results, so we 
> might increment one counter and decrement another counter for the same 
> transaction. To avoid this, we could resolve the 'catalog version for 
> counter' just once (when incrementing) and store it (for instance, in 
> TxStateMeta).



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


[jira] [Updated] (IGNITE-21112) Mechanism to wait for completion of transactions started on schema versions preceding a target schema version

2024-02-01 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko updated IGNITE-21112:
-
Fix Version/s: 3.0.0-beta2

> Mechanism to wait for completion of transactions started on schema versions 
> preceding a target schema version
> -
>
> Key: IGNITE-21112
> URL: https://issues.apache.org/jira/browse/IGNITE-21112
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> A. Each node should handle the following message: 
> RwTransactionsFinishedRequest; it will have targetSchemaVersion field of type 
> int (which represents a Catalog version). The response will be 
> RwTransactionsFinishedResponse containing the only field: finished (of type 
> boolean).
> B. When the node gets such a request, it should (1) first check whether the 
> target version has activated (not just appeared in the local Catalog) on the 
> node. If not, (2) it should return false. If it has already been activated on 
> the node, then the node should atomically query its TxManager whether it has 
> any non-finished RW transactions that started on schema versions preceding 
> the target version (this is determined by the beginTs of the transaction).
> C. To avoid a race between starting an RW transaction and checking for 
> non-finished transactions, we need to start RW transactions in the following 
> way:
>  # beginTs = HLC.now()
>  # {*}Without doing a schema sync{*}, find the Catalog version active at 
> beginTs, assign it to TxCatalogVersion
>  # Atomically wrt checking for transactions existence on schemas before X 
> (see B.2), wrt finishing RW transactions and wrt raising the 'latest 
> activated Catalog version' (used in B.1), add the new transaction with 
> beginTs to the map of the currently active transactions (only if the 'latest 
> activated Catalog version' is not higher than TxCatalogVersion)
>  # If on item 3 it turned out that TxCatalogVersion is already lower than the 
> 'latest activated Catalog version', goto step 1
> Note that, as on step 2 we don't do schema sync, resolving the catalog 
> version corresponding to the beginTs might yield different results, so we 
> might increment one counter and decrement another counter for the same 
> transaction. To avoid this, we could resolve the 'catalog version for 
> counter' just once (when incrementing) and store it (for instance, in 
> TxStateMeta).



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


[jira] [Created] (IGNITE-21424) ItScaleCubeNetworkMessagingTest.reconnectsAfterConnectionDrop causes an NPE to be logged

2024-02-01 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-21424:
--

 Summary: 
ItScaleCubeNetworkMessagingTest.reconnectsAfterConnectionDrop causes an NPE to 
be logged
 Key: IGNITE-21424
 URL: https://issues.apache.org/jira/browse/IGNITE-21424
 Project: Ignite
  Issue Type: Bug
Reporter: Roman Puchkovskiy
Assignee: Roman Puchkovskiy
 Fix For: 3.0.0-beta2


[2024-02-01T17:15:59,855][ERROR][%iscnmt_racd_3345%MessagingService-inbound-0-0][DefaultMessagingService]
 onMessage() failed while processing TestMessageImpl [map=null, 
msg=trailblazer] from iscnmt_racd_3344
java.lang.NullPointerException: null
    at java.util.Objects.requireNonNull(Objects.java:221) ~[?:?]
    at 
org.apache.ignite.network.scalecube.ItScaleCubeNetworkMessagingTest.lambda$reconnectsAfterConnectionDrop$16(ItScaleCubeNetworkMessagingTest.java:597)
 ~[integrationTest/:?]
    at 
org.apache.ignite.network.TrackableNetworkMessageHandler.onReceived(TrackableNetworkMessageHandler.java:48)
 ~[ignite-network-api-3.0.0-SNAPSHOT.jar:?]
    at 
org.apache.ignite.network.DefaultMessagingService.handleIncomingMessage(DefaultMessagingService.java:405)
 ~[ignite-network-3.0.0-SNAPSHOT.jar:?]
    at 
org.apache.ignite.network.DefaultMessagingService.lambda$onMessage$4(DefaultMessagingService.java:356)
 ~[ignite-network-3.0.0-SNAPSHOT.jar:?]
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
    at java.lang.Thread.run(Thread.java:834) [?:?]



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


[jira] [Commented] (IGNITE-21366) AssertionError during the execution of the request

2024-02-01 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-21366:


{panel:title=Branch: [pull/11214/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/11214/head] Base: [master] : No new tests 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}{panel}
[TeamCity *-- Run :: All* 
Results|https://ci2.ignite.apache.org/viewLog.html?buildId=7726050buildTypeId=IgniteTests24Java8_RunAll]

> AssertionError during the execution of the request 
> ---
>
> Key: IGNITE-21366
> URL: https://issues.apache.org/jira/browse/IGNITE-21366
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksandr Nikolaev
>Assignee: Aleksandr Nikolaev
>Priority: Major
>  Labels: ise
> Fix For: 2.17
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> If GridH2Table#cache size is greater than int, then we get an AssertionError:
> {code}
> -26T19:32:35,247][ERROR][main][] Test failed 
> [test=RowCountTableStatisticsUsageTest#compareJoinsWithConditionsOnBothTables[cacheMode=REPLICATED],
>  duration=10]
>  java.lang.AssertionError: totalRowCnt=-4294967096, localRowCount=-2147483548
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.TableStatistics.(TableStatistics.java:34)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.refreshStatsIfNeeded(GridH2Table.java:1055)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.getRowCountApproximation(GridH2Table.java:1013)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase.getRowCountApproximation(GridH2IndexBase.java:226)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.H2ScanIndex.getRowCountApproximation(H2ScanIndex.java:158)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.H2ScanIndex.getCost(H2ScanIndex.java:289)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.opt.H2TableScanIndex.getCost(H2TableScanIndex.java:74)
>  ~[classes/:?]
>   at org.h2.table.Table.getBestPlanItem(Table.java:714) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.table.TableFilter.getBestPlanItem(TableFilter.java:224) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.table.Plan.calculateCost(Plan.java:121) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Optimizer.testPlan(Optimizer.java:180) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Optimizer.calculateBestPlan(Optimizer.java:81) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Optimizer.optimize(Optimizer.java:239) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Select.preparePlan(Select.java:1018) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Select.prepare(Select.java:884) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.dml.Explain.prepare(Explain.java:49) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.command.Parser.prepareCommand(Parser.java:283) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.engine.Session.prepareLocal(Session.java:611) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.engine.Session.prepareCommand(Session.java:549) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247) 
> ~[h2-1.4.197.jar:1.4.197]
>   at 
> org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:76) 
> ~[h2-1.4.197.jar:1.4.197]
>   at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:694) 
> ~[h2-1.4.197.jar:1.4.197]
>   at 
> org.apache.ignite.internal.processors.query.h2.H2Connection.prepareStatementNoCache(H2Connection.java:191)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.H2PooledConnection.prepareStatementNoCache(H2PooledConnection.java:109)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.QueryParser.parseH2(QueryParser.java:341)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.QueryParser.parse0(QueryParser.java:225)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.QueryParser.parse(QueryParser.java:138)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:1011)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:3115)
>  ~[classes/:?]
>   at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:3086)
>  ~[classes/:?]
>   at 
> 

[jira] [Commented] (IGNITE-21342) Update guava and grpc in OpenCensus dependency

2024-02-01 Thread Aleksandr Nikolaev (Jira)


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

Aleksandr Nikolaev commented on IGNITE-21342:
-

[~PetrovMikhail] thnx for review

> Update guava and grpc in OpenCensus dependency
> --
>
> Key: IGNITE-21342
> URL: https://issues.apache.org/jira/browse/IGNITE-21342
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Nikolaev
>Assignee: Aleksandr Nikolaev
>Priority: Major
>  Labels: ise
> Fix For: 2.17
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>




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


[jira] [Commented] (IGNITE-21394) TimeoutException in the listener of pending assignments change shouldn't fail the watch processor

2024-02-01 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-21394:


Merged d1cb712f0667f80d9896ca15f39939ba00afdaca

> TimeoutException in the listener of pending assignments change shouldn't fail 
> the watch processor
> -
>
> Key: IGNITE-21394
> URL: https://issues.apache.org/jira/browse/IGNITE-21394
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Chudov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> *Motivation*
> The handler of pending assignments event change ( 
> TableManager#handleChangePendingAssignmentEvent() ) tries to do 
> changePeerAsync after starting the partition and client. In order to know 
> whether the calling of changePeerAsync is needed, it tries to get the current 
> leader of corresponding raft group. This call of 
> RaftGroupService#refreshAndGetLeaderWithTerm can fail with TimeoutException. 
> For example, there is no known leader on the node that the GetLeader request 
> is sent to, or that node is no more in the raft group, etc., and in the same 
> time that node is the only known peer of the raft group: in these cases the 
> GetLeader request will be constantly retried in hope to get a response with 
> leader finally, when it's elected, but this can never happen. So, the 
> TimeoutException is expected in this case.
> This exception should be handled within the mentioned listener of pending 
> assignments event change. otherwise it fails the watch processor, making it 
> unable to handle the further meta storage updates (and making the node 
> inoperable). This means that, most likely, the current node is not a leader 
> of the raft group, and changePeers shouln't be done, or it has not caught up 
> with the current assignments events, this means that some requests for this 
> node for this partition will fail, but the node will remain operable.
> *Definition of done*
> TimeoutException in the listener of pending assignments change doesn't fail 
> the watch processor and doesn't lead to multiple exceptions like this:
> {code:java}
> [2024-01-29T22:00:58,658][ERROR][%isckvt_tmccd_3344%Raft-Group-Client-5][WatchProcessor]
>  Error occurred when notifying safe time advanced callback
>  java.util.concurrent.CompletionException: 
> java.util.concurrent.TimeoutException
>     at 
> java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>  ~[?:?]
>     at 
> java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
>  ~[?:?]
>     at 
> org.apache.ignite.internal.raft.RaftGroupServiceImpl.sendWithRetry(RaftGroupServiceImpl.java:546)
>  ~[ignite-raft-3.0.0-SNAPSHOT.jar:?]
>     at 
> org.apache.ignite.internal.raft.RaftGroupServiceImpl.lambda$handleErrorResponse$42(RaftGroupServiceImpl.java:635)
>  ~[ignite-raft-3.0.0-SNAPSHOT.jar:?]
>     at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
>     at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
>     at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
>  [?:?]
>     at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>  [?:?]
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>  [?:?]
>     at java.lang.Thread.run(Thread.java:834) [?:?]
> Caused by: java.util.concurrent.TimeoutException
>     ... 8 more{code}
>  
> *Implementation notes*
> It can be reproduced in integration tests like 
> ItSchemaChangeKvViewTest#testMergeChangesColumnDefault when there are 3 nodes 
> starting, then a table with 25 partitions/1 replica created. During the table 
> start the rebalance is possible, like this:
>  * a replication group is moved from node A to node B
>  * some node C tries to perform GetLeader, and has only node A in local peers
>  * node A thinks it is the only member of the replication group, and is not 
> leader, sends "Unknown leader" response to C
>  * node C constatnly retries the request to node A.



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


[jira] [Created] (IGNITE-21423) Improve toString() implementations for classes representing Catalog objects

2024-02-01 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-21423:
--

 Summary: Improve toString() implementations for classes 
representing Catalog objects
 Key: IGNITE-21423
 URL: https://issues.apache.org/jira/browse/IGNITE-21423
 Project: Ignite
  Issue Type: Improvement
Reporter: Roman Puchkovskiy
 Fix For: 3.0.0-beta2


All classes that extend CatalogObjectDescriptor define toString() that miss a 
lot of important information. We always need it to output id and name of the 
object; also the important properties useful when debugging should be included 
in toString() (probably, everything that is not too long).



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


[jira] [Assigned] (IGNITE-21423) Improve toString() implementations for classes representing Catalog objects

2024-02-01 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy reassigned IGNITE-21423:
--

Assignee: Roman Puchkovskiy

> Improve toString() implementations for classes representing Catalog objects
> ---
>
> Key: IGNITE-21423
> URL: https://issues.apache.org/jira/browse/IGNITE-21423
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> All classes that extend CatalogObjectDescriptor define toString() that miss a 
> lot of important information. We always need it to output id and name of the 
> object; also the important properties useful when debugging should be 
> included in toString() (probably, everything that is not too long).



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


[jira] [Updated] (IGNITE-21132) Buffered disk writing when creating dump

2024-02-01 Thread Maksim Timonin (Jira)


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

Maksim Timonin updated IGNITE-21132:

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

> Buffered disk writing when creating dump
> 
>
> Key: IGNITE-21132
> URL: https://issues.apache.org/jira/browse/IGNITE-21132
> Project: Ignite
>  Issue Type: Task
>Reporter: Yuri Naryshkin
>Assignee: Yuri Naryshkin
>Priority: Major
>  Labels: IEP-109, ise
> Fix For: 2.17
>
>  Time Spent: 5h 10m
>  Remaining Estimate: 0h
>




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


[jira] [Resolved] (IGNITE-21132) Buffered disk writing when creating dump

2024-02-01 Thread Maksim Timonin (Jira)


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

Maksim Timonin resolved IGNITE-21132.
-
  Reviewer: Maksim Timonin
Resolution: Fixed

> Buffered disk writing when creating dump
> 
>
> Key: IGNITE-21132
> URL: https://issues.apache.org/jira/browse/IGNITE-21132
> Project: Ignite
>  Issue Type: Task
>Reporter: Yuri Naryshkin
>Assignee: Yuri Naryshkin
>Priority: Major
>  Labels: IEP-109, ise
>  Time Spent: 5h 10m
>  Remaining Estimate: 0h
>




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


[jira] [Updated] (IGNITE-21132) Buffered disk writing when creating dump

2024-02-01 Thread Maksim Timonin (Jira)


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

Maksim Timonin updated IGNITE-21132:

Fix Version/s: 2.17

> Buffered disk writing when creating dump
> 
>
> Key: IGNITE-21132
> URL: https://issues.apache.org/jira/browse/IGNITE-21132
> Project: Ignite
>  Issue Type: Task
>Reporter: Yuri Naryshkin
>Assignee: Yuri Naryshkin
>Priority: Major
>  Labels: IEP-109, ise
> Fix For: 2.17
>
>  Time Spent: 5h 10m
>  Remaining Estimate: 0h
>




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


[jira] [Created] (IGNITE-21422) Cancelling queued job should cancel result

2024-02-01 Thread Vadim Pakhnushev (Jira)
Vadim Pakhnushev created IGNITE-21422:
-

 Summary: Cancelling queued job should cancel result
 Key: IGNITE-21422
 URL: https://issues.apache.org/jira/browse/IGNITE-21422
 Project: Ignite
  Issue Type: Bug
  Components: compute
Reporter: Vadim Pakhnushev
Assignee: Vadim Pakhnushev


{{JobExecution.resultAsync}} should complete exceptionally with the 
{{CancellationException}} when the job is in the queue and is cancelled.



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


[jira] [Assigned] (IGNITE-21236) Handle DataStreamer entry version in dump

2024-02-01 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-21236:
-

Assignee: Vladimir Steshin

> Handle DataStreamer entry version in dump
> -
>
> Key: IGNITE-21236
> URL: https://issues.apache.org/jira/browse/IGNITE-21236
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maksim Timonin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: IEP-109, ise
>
> DataStreamer writes entries with fixed GridCacheVersion, that is greater than 
> any existing version.
> During dump creation it filters all such entries by version, and no entries 
> created by data streamer lands into the dump.
> Possible solution is to apply all entries with this DataStreamer version to 
> dump. Other hand, it might make the dump inconsistent when it's created 
> parallel to DataStreamer activity (we have the warn for this case in 
> Snapshots already)



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


[jira] [Updated] (IGNITE-20894) Add tests for ensuring transactional guarantees

2024-02-01 Thread Alexander Lapin (Jira)


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

Alexander Lapin updated IGNITE-20894:
-
Reviewer: Alexander Lapin  (was: Vladislav Pyatkov)

> Add tests for ensuring transactional guarantees
> ---
>
> Key: IGNITE-20894
> URL: https://issues.apache.org/jira/browse/IGNITE-20894
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 3.0
>Reporter: Alexey Scherbakov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 1h 50m
>  Remaining Estimate: 0h
>
> h3. Motivation
> The first purpose of the transaction flow tests is to preserve consistency in 
> storage. The reason for this might be partial commits due to executing 
> commits and rollbacks on one transaction. The second is avoiding redundant or 
> permanent locks that can originate from an asynchronous operation happening 
> in parallel with commit/rollback.
> h3. Definition of done
> Here is a list of tests that should be present:
>  # Multiple commits of the transaction from different threads. There should 
> be also some multithreaded enlists (via get/put operations) which should fail 
> if the finishing process of the transaction has already started (transition 
> to FINISHING state is done). After the completion of all asynchronous 
> operations there should be no locks left on server side (we should check that 
> the failed enlisting operations haven't left any locks as well).
>  # Same as 1, but there should be concurrent rollbacks instead of commits.
>  # Same as 1, but there should be random finish operations for transaction, 
> there can be commits after rollback and rollbacks after commit.



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


[jira] [Commented] (IGNITE-20894) Add tests for ensuring transactional guarantees

2024-02-01 Thread Alexander Lapin (Jira)


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

Alexander Lapin commented on IGNITE-20894:
--

[~Denis Chudov] Generally LGTM, few minors.

> Add tests for ensuring transactional guarantees
> ---
>
> Key: IGNITE-20894
> URL: https://issues.apache.org/jira/browse/IGNITE-20894
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 3.0
>Reporter: Alexey Scherbakov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 1h 50m
>  Remaining Estimate: 0h
>
> h3. Motivation
> The first purpose of the transaction flow tests is to preserve consistency in 
> storage. The reason for this might be partial commits due to executing 
> commits and rollbacks on one transaction. The second is avoiding redundant or 
> permanent locks that can originate from an asynchronous operation happening 
> in parallel with commit/rollback.
> h3. Definition of done
> Here is a list of tests that should be present:
>  # Multiple commits of the transaction from different threads. There should 
> be also some multithreaded enlists (via get/put operations) which should fail 
> if the finishing process of the transaction has already started (transition 
> to FINISHING state is done). After the completion of all asynchronous 
> operations there should be no locks left on server side (we should check that 
> the failed enlisting operations haven't left any locks as well).
>  # Same as 1, but there should be concurrent rollbacks instead of commits.
>  # Same as 1, but there should be random finish operations for transaction, 
> there can be commits after rollback and rollbacks after commit.



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


[jira] [Assigned] (IGNITE-16094) Mapper and Marshaller caching

2024-02-01 Thread Maksim Zhuravkov (Jira)


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

Maksim Zhuravkov reassigned IGNITE-16094:
-

Assignee: Maksim Zhuravkov

> Mapper and Marshaller caching
> -
>
> Key: IGNITE-16094
> URL: https://issues.apache.org/jira/browse/IGNITE-16094
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Assignee: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> *Mapper* and *Marshaller* implementations use reflection to retrieve 
> object fields. We should cache results when possible. 
> For example:
> * *IdentityMapper* instances can be cached by Class
> * *Marshaller* instances can be cached by Class + Schema when using 
> IdentityMapper
> See TODOs in code with "IGNITE-16094".



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


[jira] [Resolved] (IGNITE-20122) When a REGISTERED/BACKFILLING index is dropped, it should be removed right away

2024-02-01 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy resolved IGNITE-20122.

Resolution: Fixed

Implemented in IGNITE-20119

> When a REGISTERED/BACKFILLING index is dropped, it should be removed right 
> away
> ---
>
> Key: IGNITE-20122
> URL: https://issues.apache.org/jira/browse/IGNITE-20122
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> When a DROP INDEX is executed for an index that is STARTING or BACKFILLING, 
> it should be removed right away (skipping the AVAILABLE and subsequent 
> states) and start destruction. This should be done using a conditional schema 
> update (IGNITE-20115) to avoid a race with switching to the 
> BACKFILING/AVAILABLE state.
> If the conditional schema update fails (because the index has been switched 
> to the BACKFILLING/AVAILABLE state), we should retry at the new state. If 
> it's BACKFILLING, we should try to destroy the index again; if it's 
> AVAILABLE, then fallback to the usual procedure (IGNITE-20119).



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


[jira] [Resolved] (IGNITE-20131) Consider all index-related schema changes as compatible

2024-02-01 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy resolved IGNITE-20131.

Resolution: Won't Fix

This already works like this as index creation does not increment a table 
version, hence our current schema compatibility validation is simply not 
triggered by index-related changes.

> Consider all index-related schema changes as compatible
> ---
>
> Key: IGNITE-20131
> URL: https://issues.apache.org/jira/browse/IGNITE-20131
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> All allowed index state transfers are compatible:
> * Creation (as STARTING)
> * STARTING -> READY
> * READY -> STOPPING
> * STOPPING -> [not-existent]
> * STARTING -> [not-existent]



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


[jira] [Resolved] (IGNITE-19498) Start building indexes only once

2024-02-01 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy resolved IGNITE-19498.

Resolution: Invalid

As per a call, we don't need this anymore, hence closing the issue.

> Start building indexes only once
> 
>
> Key: IGNITE-19498
> URL: https://issues.apache.org/jira/browse/IGNITE-19498
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> As part of IGNITE-19177, the building of indexes moves from the 
> *IndexManager* to the replica, because of this, a race may occur when the 
> replica becomes the leader, and we need to start listening to the creation of 
> indexes in the configuration and reading previous indexes from the 
> configuration.
> Therefore, we need to figure out how we can avoid the double start of index 
> building, maybe this is not a problem and later we will just close the ticket.



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


[jira] [Commented] (IGNITE-20119) Switch index to STOPPING state as a reaction to DROP INDEX

2024-02-01 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy commented on IGNITE-20119:


Thanks!

> Switch index to STOPPING state as a reaction to DROP INDEX
> --
>
> Key: IGNITE-20119
> URL: https://issues.apache.org/jira/browse/IGNITE-20119
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> DROP INDEX should do the following:
>  # If the index is AVAILABLE, move it to STOPPING
>  # If it was not yet available (that is, it's REGISTERED or BUILDING), remove 
> it from the Catalog
> Also, RemoveIndexCommand should be added that will be used to move a STOPPED 
> index from the Catalog (invocation of the command is out of scope of this 
> issue).



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


[jira] [Updated] (IGNITE-21236) Handle DataStreamer entry version in dump

2024-02-01 Thread Maksim Timonin (Jira)


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

Maksim Timonin updated IGNITE-21236:

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

> Handle DataStreamer entry version in dump
> -
>
> Key: IGNITE-21236
> URL: https://issues.apache.org/jira/browse/IGNITE-21236
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maksim Timonin
>Priority: Major
>  Labels: IEP-109, ise
>
> DataStreamer writes entries with fixed GridCacheVersion, that is greater than 
> any existing version.
> During dump creation it filters all such entries by version, and no entries 
> created by data streamer lands into the dump.
> Possible solution is to apply all entries with this DataStreamer version to 
> dump. Other hand, it might make the dump inconsistent when it's created 
> parallel to DataStreamer activity (we have the warn for this case in 
> Snapshots already)



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


[jira] [Commented] (IGNITE-21132) Buffered disk writing when creating dump

2024-02-01 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-21132:


{panel:title=Branch: [pull/8/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/8/head] Base: [master] : New Tests 
(6)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#8b}Snapshots 3{color} [[tests 
6|https://ci2.ignite.apache.org/viewLog.html?buildId=7723631]]
* {color:#013220}IgniteSnapshotTestSuite3: BufferedFileIOTest.testLargeEntry - 
PASSED{color}
* {color:#013220}IgniteSnapshotTestSuite3: 
BufferedFileIOTest.testBufferSizeEntry - PASSED{color}
* {color:#013220}IgniteSnapshotTestSuite3: BufferedFileIOTest.testDoubleClose - 
PASSED{color}
* {color:#013220}IgniteSnapshotTestSuite3: 
BufferedFileIOTest.testAFewSmallEntries - PASSED{color}
* {color:#013220}IgniteSnapshotTestSuite3: BufferedFileIOTest.testWrongArg - 
PASSED{color}
* {color:#013220}IgniteSnapshotTestSuite3: BufferedFileIOTest.testOneSmallEntry 
- PASSED{color}

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

> Buffered disk writing when creating dump
> 
>
> Key: IGNITE-21132
> URL: https://issues.apache.org/jira/browse/IGNITE-21132
> Project: Ignite
>  Issue Type: Task
>Reporter: Yuri Naryshkin
>Assignee: Yuri Naryshkin
>Priority: Major
>  Labels: IEP-109, ise
>  Time Spent: 5h
>  Remaining Estimate: 0h
>




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


[jira] [Created] (IGNITE-21421) Calcite engine. Tuple (row) comparison is not working

2024-02-01 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-21421:
--

 Summary: Calcite engine. Tuple (row) comparison is not working
 Key: IGNITE-21421
 URL: https://issues.apache.org/jira/browse/IGNITE-21421
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currentrly, row comparison fails with an error and don't use index.

Reproducer:
{code:java}
sql("CREATE TABLE test (id INTEGER, val INTEGER)");
sql("CREATE INDEX test_idx ON test (id, val)");
sql("INSERT INTO test VALUES (0, 0), (0, 1), (1, 0), (1, 1)");

assertQuery("SELECT * FROM test WHERE (id, val) >= (?, ?)")
.withParams(0, 1)
//.matches(QueryChecker.containsIndexScan("PUBLIC", "TEST", "TEST_IDX"))
.returns(0, 1)
.returns(1, 0)
.returns(1, 1)
.check(); {code}
Exception:
{noformat}
Caused by: java.lang.RuntimeException: while resolving method 'ge[class 
[Ljava.lang.Object;, class [Ljava.lang.Object;]' in class class 
org.apache.calcite.runtime.SqlFunctions
    at org.apache.calcite.linq4j.tree.Types.lookupMethod(Types.java:318)
    at org.apache.calcite.linq4j.tree.Expressions.call(Expressions.java:449)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$BinaryImplementor.implementSafe(RexImpTable.java:1233)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.genValueStatement(RexImpTable.java:1950)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.implement(RexImpTable.java:1911)
{noformat}



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


[jira] [Updated] (IGNITE-20990) Switch to storage-profile based configs in storage engine

2024-02-01 Thread Kirill Gusakov (Jira)


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

Kirill Gusakov updated IGNITE-20990:

Description: 
*Motivation:*

At the moment storage profiles defined for the tables and zones accordingly, 
but the storage engine layer still use the region-based configurations. We need 
to switch storage engine configuration to profiles too.

*Definition of done:*
 * The storage profiles configuration must initiate appropriate storage 
profiles in the each storage engine

*Implementation notes:*
 - Change the *StorageEngineConfigurationSchema to implement the 
StorageEngineConfigurationSchema (it the parent of storage profiles 
configuration)
 - Make *DataStorageModule use the new non-root 
*StorageEngineConfigurationSchema, which is the part of StoragesConfiguration
 - Due to the fact, that there is no default storage profile at all, we need to 
remove the default region abstraction and change all builtin configs to the 
appropariate value, which support default region of table creation DDL

Note: at the moment it can be difficult to remove all stuff connected with data 
regions in zones and tables, so, the separate issue for final code cleanup 
created IGNITE-21385

  was:
*Motivation:*

At the moment storage profiles defined for the tables and zones accordingly, 
but the storage engine layer still use the region-based configurations. We need 
to switch storage engine configuration to profiles too.

{*}Definition of done:{*}{*}{*}
 * The storage profiles configuration must initiate appropriate storage 
profiles in the each storage engine

*Implementation notes:*
 - Change the *StorageEngineConfigurationSchema to implement the 
StorageEngineConfigurationSchema (it the parent of storage profiles 
configuration)
 - Make *DataStorageModule use the new non-root 
*StorageEngineConfigurationSchema, which is the part of StoragesConfiguration
 - Due to the fact, that there is no default storage profile at all, we need to 
remove the default region abstraction and change all builtin configs to the 
appropariate value, which support default region of table creation DDL

Note: at the moment it can be difficult to remove all stuff connected with data 
regions in zones and tables, so, the separate issue for final code cleanup 
created IGNITE-21385


> Switch to storage-profile based configs in storage engine
> -
>
> Key: IGNITE-20990
> URL: https://issues.apache.org/jira/browse/IGNITE-20990
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Gusakov
>Assignee: Kirill Gusakov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation:*
> At the moment storage profiles defined for the tables and zones accordingly, 
> but the storage engine layer still use the region-based configurations. We 
> need to switch storage engine configuration to profiles too.
> *Definition of done:*
>  * The storage profiles configuration must initiate appropriate storage 
> profiles in the each storage engine
> *Implementation notes:*
>  - Change the *StorageEngineConfigurationSchema to implement the 
> StorageEngineConfigurationSchema (it the parent of storage profiles 
> configuration)
>  - Make *DataStorageModule use the new non-root 
> *StorageEngineConfigurationSchema, which is the part of StoragesConfiguration
>  - Due to the fact, that there is no default storage profile at all, we need 
> to remove the default region abstraction and change all builtin configs to 
> the appropariate value, which support default region of table creation DDL
> Note: at the moment it can be difficult to remove all stuff connected with 
> data regions in zones and tables, so, the separate issue for final code 
> cleanup created IGNITE-21385



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


[jira] [Updated] (IGNITE-20990) Switch to storage-profile based configs in storage engine

2024-02-01 Thread Kirill Gusakov (Jira)


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

Kirill Gusakov updated IGNITE-20990:

Description: 
*Motivation:*

At the moment storage profiles defined for the tables and zones accordingly, 
but the storage engine layer still use the region-based configurations. We need 
to switch storage engine configuration to profiles too.

{*}Definition of done:{*}{*}{*}
 * The storage profiles configuration must initiate appropriate storage 
profiles in the each storage engine

*Implementation notes:*
 - Change the *StorageEngineConfigurationSchema to implement the 
StorageEngineConfigurationSchema (it the parent of storage profiles 
configuration)
 - Make *DataStorageModule use the new non-root 
*StorageEngineConfigurationSchema, which is the part of StoragesConfiguration
 - Due to the fact, that there is no default storage profile at all, we need to 
remove the default region abstraction and change all builtin configs to the 
appropariate value, which support default region of table creation DDL

Note: at the moment it can be difficult to remove all stuff connected with data 
regions in zones and tables, so, the separate issue for final code cleanup 
created IGNITE-21385

  was:
- Change the *StorageEngineConfigurationSchema to implement the 
StorageEngineConfigurationSchema 
- Make *DataStorageModule use the new non-root 
*StorageEngineConfigurationSchema, which is the part of StoragesConfiguration
- Implement the appropariate mechanism to handle default config values if there 
is no StoragesConfiguration engine entity of the needed type (aipersist, aimem 
and etc.), because at the moment defaults loading from the root engine 
configuration, but this approach will not work anymore.
- Due to the fact, that there is no default storage profile at all, we need to 
remove the default region abstraction and change all builtin configs to the 
appropariate value, which support default region of table creation DDL


> Switch to storage-profile based configs in storage engine
> -
>
> Key: IGNITE-20990
> URL: https://issues.apache.org/jira/browse/IGNITE-20990
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Gusakov
>Assignee: Kirill Gusakov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation:*
> At the moment storage profiles defined for the tables and zones accordingly, 
> but the storage engine layer still use the region-based configurations. We 
> need to switch storage engine configuration to profiles too.
> {*}Definition of done:{*}{*}{*}
>  * The storage profiles configuration must initiate appropriate storage 
> profiles in the each storage engine
> *Implementation notes:*
>  - Change the *StorageEngineConfigurationSchema to implement the 
> StorageEngineConfigurationSchema (it the parent of storage profiles 
> configuration)
>  - Make *DataStorageModule use the new non-root 
> *StorageEngineConfigurationSchema, which is the part of StoragesConfiguration
>  - Due to the fact, that there is no default storage profile at all, we need 
> to remove the default region abstraction and change all builtin configs to 
> the appropariate value, which support default region of table creation DDL
> Note: at the moment it can be difficult to remove all stuff connected with 
> data regions in zones and tables, so, the separate issue for final code 
> cleanup created IGNITE-21385



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


[jira] [Created] (IGNITE-21420) Refactor ComputeController

2024-02-01 Thread Vadim Pakhnushev (Jira)
Vadim Pakhnushev created IGNITE-21420:
-

 Summary: Refactor ComputeController
 Key: IGNITE-21420
 URL: https://issues.apache.org/jira/browse/IGNITE-21420
 Project: Ignite
  Issue Type: Improvement
  Components: rest
Reporter: Vadim Pakhnushev
Assignee: Vadim Pakhnushev


In order to keep consistency between thin client and rest, the controller 
should use {{IgniteComputeInternal}} rather than {{ComputeComponent}} directly.



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


[jira] [Updated] (IGNITE-21419) Optimize listener collection update in AbstractEventProducer

2024-02-01 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko updated IGNITE-21419:
-
Fix Version/s: 3.0.0-beta2

> Optimize listener collection update in AbstractEventProducer
> 
>
> Key: IGNITE-21419
> URL: https://issues.apache.org/jira/browse/IGNITE-21419
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> I discovered that updating the collection of listeners in 
> *org.apache.ignite.internal.event.AbstractEventProducer* is a little not 
> optimal, I’m optimizing it.



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


[jira] [Assigned] (IGNITE-21419) Optimize listener collection update in AbstractEventProducer

2024-02-01 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko reassigned IGNITE-21419:


Assignee: Kirill Tkalenko

> Optimize listener collection update in AbstractEventProducer
> 
>
> Key: IGNITE-21419
> URL: https://issues.apache.org/jira/browse/IGNITE-21419
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> I discovered that updating the collection of listeners in 
> *org.apache.ignite.internal.event.AbstractEventProducer* is a little not 
> optimal, I’m optimizing it.



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


[jira] [Created] (IGNITE-21419) Optimize listener collection update in AbstractEventProducer

2024-02-01 Thread Kirill Tkalenko (Jira)
Kirill Tkalenko created IGNITE-21419:


 Summary: Optimize listener collection update in 
AbstractEventProducer
 Key: IGNITE-21419
 URL: https://issues.apache.org/jira/browse/IGNITE-21419
 Project: Ignite
  Issue Type: Improvement
Reporter: Kirill Tkalenko


I discovered that updating the collection of listeners in 
*org.apache.ignite.internal.event.AbstractEventProducer* is a little not 
optimal, I’m optimizing it.



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


[jira] [Commented] (IGNITE-21417) .NET: TestReconnectToOldNodeDisablesPartitionAwareness fails on JDK 11

2024-02-01 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn commented on IGNITE-21417:
-

Merged to master: c1fad6dff172af874edb2757544f9de08e88428d

> .NET: TestReconnectToOldNodeDisablesPartitionAwareness fails on JDK 11
> --
>
> Key: IGNITE-21417
> URL: https://issues.apache.org/jira/browse/IGNITE-21417
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Affects Versions: 2.16
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET
> Fix For: 2.17
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Ignite 2.4.0 and 2.6.0 can't start on some JDK 11 versions. Skip the test 
> with a condition.



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


[jira] [Commented] (IGNITE-21417) .NET: TestReconnectToOldNodeDisablesPartitionAwareness fails on JDK 11

2024-02-01 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-21417:


{panel:title=Branch: [pull/11212/head] Base: [master] : Possible Blockers 
(1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}
{color:#d04437}Platform .NET (Core Linux){color} [[tests 
1|https://ci.ignite.apache.org/viewLog.html?buildId=7817498]]
* DotNetCore: IgniteExceptionTaskSelfTest.TestRemoteResultError - Test has low 
fail rate in base branch 0,0% and is not flaky

{panel}
{panel:title=Branch: [pull/11212/head] Base: [master] : No new tests 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}{panel}
[TeamCity *- Run :: .NET* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=7817500buildTypeId=IgniteTests24Java8_RunAllNet]

> .NET: TestReconnectToOldNodeDisablesPartitionAwareness fails on JDK 11
> --
>
> Key: IGNITE-21417
> URL: https://issues.apache.org/jira/browse/IGNITE-21417
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Affects Versions: 2.16
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET
> Fix For: 2.17
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Ignite 2.4.0 and 2.6.0 can't start on some JDK 11 versions. Skip the test 
> with a condition.



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


[jira] [Assigned] (IGNITE-15226) Print original exception when SSLException occurs

2024-02-01 Thread Denis Chudov (Jira)


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

Denis Chudov reassigned IGNITE-15226:
-

Assignee: (was: Denis Chudov)

> Print original exception when SSLException occurs
> -
>
> Key: IGNITE-15226
> URL: https://issues.apache.org/jira/browse/IGNITE-15226
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Priority: Major
>
> We have to print original message when SSLException occurs.
> {noformat}
> 2021-02-23 03:23:35.579   [2021-02-23 03:23:35,579][WARN 
> ][grid-nio-worker-client-listener-0-#150][ClientListenerProcessor] Closing 
> NIO session because of unhandled exception [cls=class 
> o.a.i.i.util.nio.GridNioException, msg=Failed to decode SSL data: 
> GridSelectorNioSessionImpl [worker=GridWorker 
> [name=grid-nio-worker-client-listener-0, igniteInstanceName=null, 
> finished=false, heartbeatTs=1614039815570, hashCode=1938562251, 
> interrupted=false, 
> runner=grid-nio-worker-client-listener-0-#150]AbstractNioClientWorker [idx=0, 
> bytesRcvd=0, bytesSent=0, bytesRcvd0=0, bytesSent0=0, select=true, 
> super=]ByteBufferNioClientWorker [readBuf=java.nio.HeapByteBuffer[pos=517 
> lim=517 cap=8192], super=], writeBuf=null, readBuf=null, inRecovery=null, 
> outRecovery=null, super=GridNioSessionImpl [locAddr=IP, rmtAddr=IP, 
> createTime=1614039815116, closeTime=0, bytesSent=7268, bytesRcvd=7785, 
> bytesSent0=7268, bytesRcvd0=7785, sndSchedTime=1614039815560, 
> lastSndTime=1614039815570, lastRcvTime=1614039815570, readsPaused=false, 
> filterChain=GridNioCodecFilter [parser=ClientListenerBufferedParser, 
> directMode=false]FilterChain[filters=[GridNioAsyncNotifyFilter, , SSL 
> filter], accepted=true, markedForClose=false]]]{noformat}



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


[jira] [Updated] (IGNITE-21418) ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is flaky

2024-02-01 Thread Alexander Lapin (Jira)


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

Alexander Lapin updated IGNITE-21418:
-
Description: 
{code:java}
java.lang.NullPointerException  at 
org.apache.ignite.internal.table.TxAbstractTest.testDeleteUpsertAllRollback(TxAbstractTest.java:233)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)  at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.base/java.lang.reflect.Method.invoke(Method.java:566)  at 
org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
 {code}
[https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/7814256?expandCode+Inspection=true=true=false=true=false=true]

Flaky rate is low.

> ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is 
> flaky
> ---
>
> Key: IGNITE-21418
> URL: https://issues.apache.org/jira/browse/IGNITE-21418
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>
> {code:java}
> java.lang.NullPointerException  at 
> org.apache.ignite.internal.table.TxAbstractTest.testDeleteUpsertAllRollback(TxAbstractTest.java:233)
>   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
> Method)  at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.base/java.lang.reflect.Method.invoke(Method.java:566)  at 
> org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
>  {code}
> [https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/7814256?expandCode+Inspection=true=true=false=true=false=true]
> Flaky rate is low.



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


[jira] [Updated] (IGNITE-21418) ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is flaky

2024-02-01 Thread Alexander Lapin (Jira)


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

Alexander Lapin updated IGNITE-21418:
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is 
> flaky
> ---
>
> Key: IGNITE-21418
> URL: https://issues.apache.org/jira/browse/IGNITE-21418
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexander Lapin
>Priority: Major
>




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


[jira] [Updated] (IGNITE-21418) ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is flaky

2024-02-01 Thread Alexander Lapin (Jira)


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

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

> ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is 
> flaky
> ---
>
> Key: IGNITE-21418
> URL: https://issues.apache.org/jira/browse/IGNITE-21418
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>




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


[jira] [Created] (IGNITE-21418) ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is flaky

2024-02-01 Thread Alexander Lapin (Jira)
Alexander Lapin created IGNITE-21418:


 Summary: 
ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is flaky
 Key: IGNITE-21418
 URL: https://issues.apache.org/jira/browse/IGNITE-21418
 Project: Ignite
  Issue Type: Bug
Reporter: Alexander Lapin






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


[jira] [Updated] (IGNITE-21418) ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is flaky

2024-02-01 Thread Alexander Lapin (Jira)


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

Alexander Lapin updated IGNITE-21418:
-
Epic Link: IGNITE-21389

> ItTxDistributedTestThreeNodesThreeReplicas#testDeleteUpsertAllRollback is 
> flaky
> ---
>
> Key: IGNITE-21418
> URL: https://issues.apache.org/jira/browse/IGNITE-21418
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>




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


[jira] [Commented] (IGNITE-21290) Scan cursors do not close after being fully read in transactions

2024-02-01 Thread Alexander Lapin (Jira)


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

Alexander Lapin commented on IGNITE-21290:
--

[~v.pyatkov] LGTM.

> Scan cursors do not close after being fully read in transactions
> 
>
> Key: IGNITE-21290
> URL: https://issues.apache.org/jira/browse/IGNITE-21290
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> h3. Motivation
> Open cursors require extra memory on the server side, so they should be 
> closed as soon as they are no longer used. It is easy to understand on the 
> coursor owner server when the coursor returns false for the hasNext 
> invocation.
> Despite the fact that all acquired transaction resources should be released 
> after the transaction finalizes, it would be better to close usles coursorse 
> faseter. Moreover, the agreement is fit for all types of transactions: RO, 
> RW, and inplicit.
> h3. Implementation notes
> When the replica returns a batch, their size can be estimated, and the cursor 
> can be closed if the size is less than requested.
> h3. Definition of done
> A cursor is closed on the server side when the client retrieves all data from 
> it through any type of scan operation.
> Moreover, the server-side cursors should be closed in case the cursor 
> supplier is closing through the API.



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


[jira] [Resolved] (IGNITE-20120) Remove index from Catalog when it's READ_ONLY and activation of its STOPPING state is below GC LWM

2024-02-01 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy resolved IGNITE-20120.

Resolution: Invalid

In IGNITE-20119, the index will be removed from the index as soon as it ceases 
to exist in the STOPPING state.

> Remove index from Catalog when it's READ_ONLY and activation of its STOPPING 
> state is below GC LWM
> --
>
> Key: IGNITE-20120
> URL: https://issues.apache.org/jira/browse/IGNITE-20120
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> When an index is READ_ONLY and activation moment of the STOPPING state of the 
> index is below GC LWM (meaning that no new transaction can read from this 
> index), the index should be removed from the Catalog. A conditional schema 
> update (IGNITE-20115) might be used.



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


[jira] [Assigned] (IGNITE-20858) Compute error handling

2024-02-01 Thread Mikhail Pochatkin (Jira)


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

Mikhail Pochatkin reassigned IGNITE-20858:
--

Assignee: Vadim Pakhnushev  (was: Ivan Gagarkin)

> Compute error handling
> --
>
> Key: IGNITE-20858
> URL: https://issues.apache.org/jira/browse/IGNITE-20858
> Project: Ignite
>  Issue Type: Improvement
>  Components: compute
>Reporter: Igor Sapego
>Assignee: Vadim Pakhnushev
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Make sure that compute follows AI3 Error Handling rules, defined in 
> IGNITE-14611. More specifically:
> - We should never throw to user anything that is not IgniteException, 
> IgniteCheckedException or a public class derived from one of them;
> - Make sure exceptions thrown by a user code are wrapped by IgniteException 
> and have a meaningful message.



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


[jira] [Commented] (IGNITE-21414) Use the same event loop for channels of the same logical connection

2024-02-01 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy commented on IGNITE-21414:


Thanks!

> Use the same event loop for channels of the same logical connection
> ---
>
> Key: IGNITE-21414
> URL: https://issues.apache.org/jira/browse/IGNITE-21414
> Project: Ignite
>  Issue Type: Improvement
>  Components: networking
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> The code in HandshakeManagerUtils switches a channel to an event loop bound 
> to the logical connection. The problem is that there are 2 event loop groups 
> (server and client ones), and we always choose an event loop from the same 
> group which created the channel; so we can actually chose one of 2 event 
> loops, not just 1.



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


[jira] [Updated] (IGNITE-21416) Add documentation for FORCE_INDEX/NO_INDEX hints

2024-02-01 Thread Andrey Novikov (Jira)


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

Andrey Novikov updated IGNITE-21416:

Description: 
Globally it works the same way as in 
[https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
but has some difference when FORCE_INDEX and NO_INDEX used together in the same 
query.

When both hints reference to the same index - it is invalid case. SQL is 
declarative language and we shouldn't expect {{hints}} collection is ordered:
{code:java}
SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND val = ?
OR
SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val = 
?{code}
 

*What to do*

We need to fix example section and rewrite "Hint Scope" section.

  was:
Globally it works the same way as in 
[https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
but has some difference when FORCE_INDEX and NO_INDEX used together in the same 
query.

When both hints reference to the same index - it is invalid case. SQL is 
declarative language and we shouldn't expect {{hints}} collection is 
ordered:}}{}}}
{code:java}
SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND val = ?
OR
SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val = 
?{code}
 

*What to do*

We need to fix example section and rewrite "Hint Scope" section.


> Add documentation for FORCE_INDEX/NO_INDEX hints
> 
>
> Key: IGNITE-21416
> URL: https://issues.apache.org/jira/browse/IGNITE-21416
> Project: Ignite
>  Issue Type: Improvement
>  Components: documentation, sql
>Reporter: Andrey Novikov
>Priority: Minor
>  Labels: ignite-3
>
> Globally it works the same way as in 
> [https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
> but has some difference when FORCE_INDEX and NO_INDEX used together in the 
> same query.
> When both hints reference to the same index - it is invalid case. SQL is 
> declarative language and we shouldn't expect {{hints}} collection is ordered:
> {code:java}
> SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND val 
> = ?
> OR
> SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val = 
> ?{code}
>  
> *What to do*
> We need to fix example section and rewrite "Hint Scope" section.



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


[jira] [Updated] (IGNITE-21416) Add documentation for FORCE_INDEX/NO_INDEX hints

2024-02-01 Thread Andrey Novikov (Jira)


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

Andrey Novikov updated IGNITE-21416:

Description: 
Globally it works the same way as in 
[https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
but has some difference when FORCE_INDEX and NO_INDEX used together in the same 
query.

When both hints reference to the same index - it is invalid case. SQL is 
declarative language and we shouldn't expect {{hints}} collection is 
ordered:{{{}{}}}
{code:java}

{code}
{{SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND val 
= ?}}
{{OR}}
{{SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val = 
?}}

 

 

*What to do*

We need to fix example section and rewrite "Hint Scope" section.

  was:
Globally it works the same way as in 
[https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
but has some difference when FORCE_INDEX and NO_INDEX used together in the same 
query. When both hints reference to the same index {{SELECT /*+ 
FORCE_INDEX('idx'), NOINDEX *{*}/,{*} SELECT /*+ NO_INDEX(TBL1_IDX2), 
FORCE_INDEX(TBL2_IDX2) */, ...}}  - it is invalid case. SQL is declarative 
language and we shouldn't expect {{hints}} collection is ordered.

We need to fix example section and rewrite "Hint Scope" section.


> Add documentation for FORCE_INDEX/NO_INDEX hints
> 
>
> Key: IGNITE-21416
> URL: https://issues.apache.org/jira/browse/IGNITE-21416
> Project: Ignite
>  Issue Type: Improvement
>  Components: documentation, sql
>Reporter: Andrey Novikov
>Priority: Minor
>  Labels: ignite-3
>
> Globally it works the same way as in 
> [https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
> but has some difference when FORCE_INDEX and NO_INDEX used together in the 
> same query.
> When both hints reference to the same index - it is invalid case. SQL is 
> declarative language and we shouldn't expect {{hints}} collection is 
> ordered:{{{}{}}}
> {code:java}
> {code}
> {{SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND 
> val = ?}}
> {{OR}}
> {{SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val 
> = ?}}
>  
>  
> *What to do*
> We need to fix example section and rewrite "Hint Scope" section.



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


[jira] [Updated] (IGNITE-21416) Add documentation for FORCE_INDEX/NO_INDEX hints

2024-02-01 Thread Andrey Novikov (Jira)


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

Andrey Novikov updated IGNITE-21416:

Description: 
Globally it works the same way as in 
[https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
but has some difference when FORCE_INDEX and NO_INDEX used together in the same 
query.

When both hints reference to the same index - it is invalid case. SQL is 
declarative language and we shouldn't expect {{hints}} collection is 
ordered:}}{}}}
{code:java}
SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND val = ?
OR
SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val = 
?{code}
 

*What to do*

We need to fix example section and rewrite "Hint Scope" section.

  was:
Globally it works the same way as in 
[https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
but has some difference when FORCE_INDEX and NO_INDEX used together in the same 
query.

When both hints reference to the same index - it is invalid case. SQL is 
declarative language and we shouldn't expect {{hints}} collection is 
ordered:{{{}{}}}
{code:java}

{code}
{{SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND val 
= ?}}
{{OR}}
{{SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val = 
?}}

 

 

*What to do*

We need to fix example section and rewrite "Hint Scope" section.


> Add documentation for FORCE_INDEX/NO_INDEX hints
> 
>
> Key: IGNITE-21416
> URL: https://issues.apache.org/jira/browse/IGNITE-21416
> Project: Ignite
>  Issue Type: Improvement
>  Components: documentation, sql
>Reporter: Andrey Novikov
>Priority: Minor
>  Labels: ignite-3
>
> Globally it works the same way as in 
> [https://ignite.apache.org/docs/latest/SQL/sql-calcite#force_index-no_index], 
> but has some difference when FORCE_INDEX and NO_INDEX used together in the 
> same query.
> When both hints reference to the same index - it is invalid case. SQL is 
> declarative language and we shouldn't expect {{hints}} collection is 
> ordered:}}{}}}
> {code:java}
> SELECT /*+ FORCE_INDEX(IDX_ID), NO_INDEX */ * FROM TBL1 WHERE id = ? AND val 
> = ?
> OR
> SELECT /*+ NO_INDEX(IDX_VAL), FORCE_INDEX(IDX_VAL) */ * FROM TBL1 WHERE val = 
> ?{code}
>  
> *What to do*
> We need to fix example section and rewrite "Hint Scope" section.



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