[jira] [Updated] (IGNITE-18497) Read only get returns a first one value getting from primary index

2023-01-04 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-18497:
---
Description: 
*Motivation*

Indexes store all value associated with different versions of one entry. By the 
reason, for getting value by primary index, we scan the index with the specific 
key. If we insert, delete and again insert an entry with the same indexed 
fields, the entry can resolve in versioned storage for different row ids. But 
only one resolution should return not empty value, because only one entry can 
exist by the unique index.

*Implementation notes*

The resolution happens here:
{code:java}
PartitionReplicaListener#resolveRowByPk(BinaryRow, HybridTimestamp){code}
But in case when a read result is resolved to null, need to continue the loop, 
because the actual value associated with the key may be removed (this is the 
null value, but it is not actual) and inserted again.
 

  was:
*Motivation*

Indexes store all value associated with different versions of one entry. By the 
reason, for getting value by primary index, we scan the index with the specific 
key. If we insert, delete and again insert an entry with the same indexed 
fields, the entry can resolve in versioned storage for different row ids. But 
only one resolution should return not empty value, because only one entry can 
exist by the unique index.

*Implementation notes*

The resolution happens here:
PartitionReplicaListener#resolveRowByPk(BinaryRow, HybridTimestamp)

But in case when a read result is resolved to null, need to continue the loop, 
because the actual value associated with the key may be removed (this is the 
null value, but it is not actual) and inserted again.


> Read only get returns a first one value getting from primary index
> --
>
> Key: IGNITE-18497
> URL: https://issues.apache.org/jira/browse/IGNITE-18497
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Indexes store all value associated with different versions of one entry. By 
> the reason, for getting value by primary index, we scan the index with the 
> specific key. If we insert, delete and again insert an entry with the same 
> indexed fields, the entry can resolve in versioned storage for different row 
> ids. But only one resolution should return not empty value, because only one 
> entry can exist by the unique index.
> *Implementation notes*
> The resolution happens here:
> {code:java}
> PartitionReplicaListener#resolveRowByPk(BinaryRow, HybridTimestamp){code}
> But in case when a read result is resolved to null, need to continue the 
> loop, because the actual value associated with the key may be removed (this 
> is the null value, but it is not actual) and inserted again.
>  



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


[jira] [Updated] (IGNITE-18497) Read only get returns a first one value getting from primary index

2023-01-04 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-18497:
---
Description: 
*Motivation*

Indexes store all value associated with different versions of one entry. By the 
reason, for getting value by primary index, we scan the index with the specific 
key. If we insert, delete and again insert an entry with the same indexed 
fields, the entry can resolve in versioned storage for different row ids. But 
only one resolution should return not empty value, because only one entry can 
exist by the unique index.

*Implementation notes*

The resolution happens here:
PartitionReplicaListener#resolveRowByPk(BinaryRow, HybridTimestamp)

But in case when a read result is resolved to null, need to continue the loop, 
because the actual value associated with the key may be removed (this is the 
null value, but it is not actual) and inserted again.

  was:
The resolution happens here:
PartitionReplicaListener#resolveRowByPk(BinaryRow, HybridTimestamp)

But in case when a read result is resolved to null, need to continue the loop, 
because the actual value associated with the key may be removed (this is the 
null value, but it is not actual) and inserted again.


> Read only get returns a first one value getting from primary index
> --
>
> Key: IGNITE-18497
> URL: https://issues.apache.org/jira/browse/IGNITE-18497
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> *Motivation*
> Indexes store all value associated with different versions of one entry. By 
> the reason, for getting value by primary index, we scan the index with the 
> specific key. If we insert, delete and again insert an entry with the same 
> indexed fields, the entry can resolve in versioned storage for different row 
> ids. But only one resolution should return not empty value, because only one 
> entry can exist by the unique index.
> *Implementation notes*
> The resolution happens here:
> PartitionReplicaListener#resolveRowByPk(BinaryRow, HybridTimestamp)
> But in case when a read result is resolved to null, need to continue the 
> loop, because the actual value associated with the key may be removed (this 
> is the null value, but it is not actual) and inserted again.



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


[jira] [Commented] (IGNITE-18084) .NET: Thin 3.0: LINQ: Async materialization

2023-01-04 Thread Igor Sapego (Jira)


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

Igor Sapego commented on IGNITE-18084:
--

Looks good to me. Left single minor comment.

> .NET: Thin 3.0: LINQ: Async materialization
> ---
>
> Key: IGNITE-18084
> URL: https://issues.apache.org/jira/browse/IGNITE-18084
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms, thin client
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET, LINQ, ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Support *ToListAsync*, *ToArrayAsync*, *CountAsync*, etc.
> * Check how EF does this with *EntityFrameworkQueryableExtensions*



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


[jira] [Commented] (IGNITE-18500) HybridTimestamp defines equals(), but not hashCode()

2023-01-04 Thread Sergey Uttsel (Jira)


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

Sergey Uttsel commented on IGNITE-18500:


[~rpuch] LGTM

> HybridTimestamp defines equals(), but not hashCode()
> 
>
> Key: IGNITE-18500
> URL: https://issues.apache.org/jira/browse/IGNITE-18500
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>




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


[jira] [Commented] (IGNITE-18470) Exception handling for DistributionZoneManager

2023-01-04 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin commented on IGNITE-18470:
--

LGTM!

> Exception handling for DistributionZoneManager
> --
>
> Key: IGNITE-18470
> URL: https://issues.apache.org/jira/browse/IGNITE-18470
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Uttsel
>Assignee: Sergey Uttsel
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> h3. Motivation
> We have broken exception handling in DistributionZoneManager. Some exceptions 
> are thrown from methods, other exceptions fail future. Need to refactor it.
> Currently DdlCommandHandler handles DistributionZoneAlreadyExistsException 
> and DistributionZoneNotFoundException incorrectly because it wrapped into 
> ConfigurationChangeException. Seems that they are wrapped because they are 
> checked exceptions. There are no tests for it. Also methods of 
> DistributionZoneManager throw other exceptions.
> h3. Definition of Done
> # Exception handling in DistributionZoneManager is reworked.
> # DdlCommandHandler handles all exception produced by methods of 
> DistributionZoneManager.
> h3. Implementation notes
> # createZone, alterZone, dropZone must don't wrap NodeStoppingException.
> # Need to check if we can unwrap DistributionZoneAlreadyExistsException and 
> DistributionZoneNotFoundException from ConfigurationChangeException.



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


[jira] [Updated] (IGNITE-18470) Exception handling for DistributionZoneManager

2023-01-04 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-18470:
-
Fix Version/s: 3.0.0-beta2

> Exception handling for DistributionZoneManager
> --
>
> Key: IGNITE-18470
> URL: https://issues.apache.org/jira/browse/IGNITE-18470
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Uttsel
>Assignee: Sergey Uttsel
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> h3. Motivation
> We have broken exception handling in DistributionZoneManager. Some exceptions 
> are thrown from methods, other exceptions fail future. Need to refactor it.
> Currently DdlCommandHandler handles DistributionZoneAlreadyExistsException 
> and DistributionZoneNotFoundException incorrectly because it wrapped into 
> ConfigurationChangeException. Seems that they are wrapped because they are 
> checked exceptions. There are no tests for it. Also methods of 
> DistributionZoneManager throw other exceptions.
> h3. Definition of Done
> # Exception handling in DistributionZoneManager is reworked.
> # DdlCommandHandler handles all exception produced by methods of 
> DistributionZoneManager.
> h3. Implementation notes
> # createZone, alterZone, dropZone must don't wrap NodeStoppingException.
> # Need to check if we can unwrap DistributionZoneAlreadyExistsException and 
> DistributionZoneNotFoundException from ConfigurationChangeException.



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


[jira] [Updated] (IGNITE-18470) Exception handling for DistributionZoneManager

2023-01-04 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-18470:
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Exception handling for DistributionZoneManager
> --
>
> Key: IGNITE-18470
> URL: https://issues.apache.org/jira/browse/IGNITE-18470
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Uttsel
>Assignee: Sergey Uttsel
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> h3. Motivation
> We have broken exception handling in DistributionZoneManager. Some exceptions 
> are thrown from methods, other exceptions fail future. Need to refactor it.
> Currently DdlCommandHandler handles DistributionZoneAlreadyExistsException 
> and DistributionZoneNotFoundException incorrectly because it wrapped into 
> ConfigurationChangeException. Seems that they are wrapped because they are 
> checked exceptions. There are no tests for it. Also methods of 
> DistributionZoneManager throw other exceptions.
> h3. Definition of Done
> # Exception handling in DistributionZoneManager is reworked.
> # DdlCommandHandler handles all exception produced by methods of 
> DistributionZoneManager.
> h3. Implementation notes
> # createZone, alterZone, dropZone must don't wrap NodeStoppingException.
> # Need to check if we can unwrap DistributionZoneAlreadyExistsException and 
> DistributionZoneNotFoundException from ConfigurationChangeException.



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


[jira] [Assigned] (IGNITE-18501) Sql. QueryChecker still use deprecated QueryProcessor#queryAsync method

2023-01-04 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich reassigned IGNITE-18501:
--

Assignee: (was: Yury Gerzhedovich)

> Sql. QueryChecker still use deprecated QueryProcessor#queryAsync method
> ---
>
> Key: IGNITE-18501
> URL: https://issues.apache.org/jira/browse/IGNITE-18501
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We still using QueryProcessor#queryAsync method in our test framework 
> (QueryChecker).
> As of now there are some test which fails during migrate to 
> {code:java}
> QueryProcessor#querySingleAsync{code}
>  
> As example such test can be used 
> org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges
> Let's investigate the reason, fix it and migrate QueryChecker to  
> querySingleAsync method.



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


[jira] [Updated] (IGNITE-18501) Sql. QueryChecker still use deprecated QueryProcessor#queryAsync method

2023-01-04 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18501:
---
Summary: Sql. QueryChecker still use deprecated QueryProcessor#queryAsync 
method  (was: Sql. QueryChecker still use deprecated 
QueryProcessor#querySingleAsync method)

> Sql. QueryChecker still use deprecated QueryProcessor#queryAsync method
> ---
>
> Key: IGNITE-18501
> URL: https://issues.apache.org/jira/browse/IGNITE-18501
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Yury Gerzhedovich
>Assignee: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We still using QueryProcessor#querySingleAsync method in our test framework 
> (QueryChecker).
> As of now there are some test which fails during migrate to 
> {code:java}
> QueryProcessor#queryAsync{code}
>  
> As example such test can be used 
> org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges
> Let's investigate the reason, fix it and migrate QueryChecker to queryAsync 
> method.



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


[jira] [Updated] (IGNITE-18501) Sql. QueryChecker still use deprecated QueryProcessor#queryAsync method

2023-01-04 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich updated IGNITE-18501:
---
Description: 
We still using QueryProcessor#queryAsync method in our test framework 
(QueryChecker).
As of now there are some test which fails during migrate to 
{code:java}
QueryProcessor#querySingleAsync{code}
 

As example such test can be used 
org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges

Let's investigate the reason, fix it and migrate QueryChecker to  
querySingleAsync method.

  was:
We still using QueryProcessor#querySingleAsync method in our test framework 
(QueryChecker).
As of now there are some test which fails during migrate to 
{code:java}
QueryProcessor#queryAsync{code}
 

As example such test can be used 
org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges



Let's investigate the reason, fix it and migrate QueryChecker to queryAsync 
method.


> Sql. QueryChecker still use deprecated QueryProcessor#queryAsync method
> ---
>
> Key: IGNITE-18501
> URL: https://issues.apache.org/jira/browse/IGNITE-18501
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Yury Gerzhedovich
>Assignee: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We still using QueryProcessor#queryAsync method in our test framework 
> (QueryChecker).
> As of now there are some test which fails during migrate to 
> {code:java}
> QueryProcessor#querySingleAsync{code}
>  
> As example such test can be used 
> org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges
> Let's investigate the reason, fix it and migrate QueryChecker to  
> querySingleAsync method.



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


[jira] [Updated] (IGNITE-18501) Sql. QueryChecker still use deprecated QueryProcessor#querySingleAsync method

2023-01-04 Thread Yury Gerzhedovich (Jira)


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

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

> Sql. QueryChecker still use deprecated QueryProcessor#querySingleAsync method
> -
>
> Key: IGNITE-18501
> URL: https://issues.apache.org/jira/browse/IGNITE-18501
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Yury Gerzhedovich
>Assignee: Yury Gerzhedovich
>Priority: Major
>  Labels: ignite-3
>
> We still using QueryProcessor#querySingleAsync method in our test framework 
> (QueryChecker).
> As of now there are some test which fails during migrate to 
> {code:java}
> QueryProcessor#queryAsync{code}
>  
> As example such test can be used 
> org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges
> Let's investigate the reason, fix it and migrate QueryChecker to queryAsync 
> method.



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


[jira] [Assigned] (IGNITE-18501) Sql. QueryChecker still use deprecated QueryProcessor#querySingleAsync method

2023-01-04 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich reassigned IGNITE-18501:
--

Assignee: Yury Gerzhedovich

> Sql. QueryChecker still use deprecated QueryProcessor#querySingleAsync method
> -
>
> Key: IGNITE-18501
> URL: https://issues.apache.org/jira/browse/IGNITE-18501
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Yury Gerzhedovich
>Assignee: Yury Gerzhedovich
>Priority: Major
>
> We still using QueryProcessor#querySingleAsync method in our test framework 
> (QueryChecker).
> As of now there are some test which fails during migrate to 
> {code:java}
> QueryProcessor#queryAsync{code}
>  
> As example such test can be used 
> org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges
> Let's investigate the reason, fix it and migrate QueryChecker to queryAsync 
> method.



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


[jira] [Created] (IGNITE-18501) Sql. QueryChecker still use deprecated QueryProcessor#querySingleAsync method

2023-01-04 Thread Yury Gerzhedovich (Jira)
Yury Gerzhedovich created IGNITE-18501:
--

 Summary: Sql. QueryChecker still use deprecated 
QueryProcessor#querySingleAsync method
 Key: IGNITE-18501
 URL: https://issues.apache.org/jira/browse/IGNITE-18501
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Yury Gerzhedovich


We still using QueryProcessor#querySingleAsync method in our test framework 
(QueryChecker).
As of now there are some test which fails during migrate to 
{code:java}
QueryProcessor#queryAsync{code}
 

As example such test can be used 
org.apache.ignite.internal.sql.engine.ItSecondaryIndexTest#testSelectWithRanges



Let's investigate the reason, fix it and migrate QueryChecker to queryAsync 
method.



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


[jira] [Resolved] (IGNITE-18289) Try native-image compilation for Ignite CLI

2023-01-04 Thread Aleksandr (Jira)


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

Aleksandr resolved IGNITE-18289.

Resolution: Fixed

> Try native-image compilation for Ignite CLI
> ---
>
> Key: IGNITE-18289
> URL: https://issues.apache.org/jira/browse/IGNITE-18289
> Project: Ignite
>  Issue Type: Improvement
>  Components: cli
>Reporter: Mikhail Pochatkin
>Assignee: Aleksandr
>Priority: Major
>  Labels: ignite-3, ignite-3-cli-tool
>
> * Check GraalVM native-image compilation for Ignite CLI 
> * Provide metrics of start time, command execution, compilation time



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


[jira] [Commented] (IGNITE-18289) Try native-image compilation for Ignite CLI

2023-01-04 Thread Aleksandr (Jira)


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

Aleksandr commented on IGNITE-18289:


Compilation time changed from ~6-10s to ~2 mins.

> Try native-image compilation for Ignite CLI
> ---
>
> Key: IGNITE-18289
> URL: https://issues.apache.org/jira/browse/IGNITE-18289
> Project: Ignite
>  Issue Type: Improvement
>  Components: cli
>Reporter: Mikhail Pochatkin
>Assignee: Aleksandr
>Priority: Major
>  Labels: ignite-3, ignite-3-cli-tool
>
> * Check GraalVM native-image compilation for Ignite CLI 
> * Provide metrics of start time, command execution, compilation time



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


[jira] [Commented] (IGNITE-18289) Try native-image compilation for Ignite CLI

2023-01-04 Thread Aleksandr (Jira)


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

Aleksandr commented on IGNITE-18289:


Some basic measurements showed ~x100 performance boost in case GraalVM was 
used. It requires some additional annotations for Micronaut beans, generated 
pojos, and resources. Also, some logger configurations should be changed.

> Try native-image compilation for Ignite CLI
> ---
>
> Key: IGNITE-18289
> URL: https://issues.apache.org/jira/browse/IGNITE-18289
> Project: Ignite
>  Issue Type: Improvement
>  Components: cli
>Reporter: Mikhail Pochatkin
>Assignee: Aleksandr
>Priority: Major
>  Labels: ignite-3, ignite-3-cli-tool
>
> * Check GraalVM native-image compilation for Ignite CLI 
> * Provide metrics of start time, command execution, compilation time



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


[jira] [Assigned] (IGNITE-17951) Sql. Enlist partitions to rw transaction

2023-01-04 Thread Pavel Pereslegin (Jira)


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

Pavel Pereslegin reassigned IGNITE-17951:
-

Assignee: Pavel Pereslegin

> Sql. Enlist partitions to rw transaction
> 
>
> Key: IGNITE-17951
> URL: https://issues.apache.org/jira/browse/IGNITE-17951
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Konstantin Orlov
>Assignee: Pavel Pereslegin
>Priority: Major
>  Labels: ignite-3
>
> In order to support distributed query execution with RW transaction, we need 
> prepare the transaction before actual execution.
> Looks like we only need to enlist the involved partitions to the transaction. 
> That could be made right after the query mapping phase.



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


[jira] [Assigned] (IGNITE-18500) HybridTimestamp defines equals(), but not hashCode()

2023-01-04 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy reassigned IGNITE-18500:
--

Assignee: Roman Puchkovskiy

> HybridTimestamp defines equals(), but not hashCode()
> 
>
> Key: IGNITE-18500
> URL: https://issues.apache.org/jira/browse/IGNITE-18500
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>




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


[jira] [Created] (IGNITE-18500) HybridTimestamp defines equals(), but not hashCode()

2023-01-04 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-18500:
--

 Summary: HybridTimestamp defines equals(), but not hashCode()
 Key: IGNITE-18500
 URL: https://issues.apache.org/jira/browse/IGNITE-18500
 Project: Ignite
  Issue Type: Improvement
Reporter: Roman Puchkovskiy
 Fix For: 3.0.0-beta2






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


[jira] [Commented] (IGNITE-18496) Handle documentation feedback

2023-01-04 Thread Igor Gusev (Jira)


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

Igor Gusev commented on IGNITE-18496:
-

* Feedback 100 - removed Deployment from kubernetes configuration
 * Feedback 99 - fixed an SQL example on affinity collocation page
 * Feedback 98 - changed text to reflect three data points in CDC doc
 * Feedback 96 - changed CDC doc to be per data region
 * Feedback 94 - fixed a link
 * Feedback 93, 92 - changed CDC doc to be per data region
 * Feedback 91 - fixed a typo on network configuration page
 * Feedback 88 - added a missed dependency to spring data doc
 * Feedback 86, 85 - fixed links to examples on index page
 * Feedback 82 - fixed queryParallelism typo

> Handle documentation feedback
> -
>
> Key: IGNITE-18496
> URL: https://issues.apache.org/jira/browse/IGNITE-18496
> Project: Ignite
>  Issue Type: Task
>Reporter: Igor Gusev
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We have had bugyard for a while, and there is a lot of useful feedback on 
> documentation. Its time to go through it and fix all issues.



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


[jira] [Updated] (IGNITE-15568) Striped Disruptor doesn't work with JRaft event handlers properly

2023-01-04 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-15568:
---
Description: 
The following scenario is broken:
 # Two raft groups are started and mapped to the same stripe.
 # Two LogEntryAndClosure events are added in quick succession so they form 
distruptor batch: first for group 1, second for group 2.

First event is delivered to group 1 with endOfBatch=false, so it's cached in 
org.apache.ignite.raft.jraft.core.NodeImpl.LogEntryAndClosureHandler#tasks and 
is not processed.

Second event is delivered to group 2 with endOfBatch=true and processed, but 
first event will remain in queue unprocessed forever, because 
LogEntryAndClosureHandler are different instances per raft group.

The possible WA for this is to set 
org.apache.ignite.raft.jraft.option.RaftOptions#applyBatch=1

Reproducible by 
org.apache.ignite.internal.table.TxDistributedTest_1_1_1#testCrossTable + 
applyBatch=32 in ignite-15085 branch

*Implementation notes*

My proposal goes bound Disruptor. The striped disruptor implementation has an 
interceptor that proposes an event to a specific interceptor. Only the last 
event in the batch has a completion batch flag. For the other RAFT groups, 
which has been notified in the striped disruptor, required to create an event 
to fix a batch into the specific group. The new event will be created in the 
common striped disruptor interceptor, and it will send to a specific 
interceptor with flag about batch completion.

The rule of handling the new event is differenced for various interceptor:
{code:java|title=title=ApplyTaskHandler (FSMCallerImpl#runApplyTask)}
if (maxCommittedIndex >= 0) {
  doCommitted(maxCommittedIndex);
  return -1;
}
{code}
{code:java|title=LogEntryAndClosureHandler(LogEntryAndClosureHandler#onEvent)}
if (this.tasks.size() > 0) {
  executeApplyingTasks(this.tasks);
  this.tasks.clear();
}
{code}
{code:java|title=ReadIndexEventHandler(ReadIndexEventHandler#onEvent)}
if (this.events.size() > 0) {
  executeReadIndexEvents(this.events);
  this.events.clear();
}
{code}
{code:java|title=StableClosureEventHandler(StableClosureEventHandler#onEvent)}
if (this.ab.size > 0) {
  this.lastId = this.ab.flush();
  setDiskId(this.lastId);
}
{code}
Also in bound of this issue, required to rerun benchmarks. Those are expected 
to dhow increasing in case with high parallelism in one partition.

There is [an example of the 
benchmark|https://github.com/gridgain/apache-ignite-3/tree/4b9de922caa4aef97a5e8e159d5db76a3fc7a3ad/modules/runner/src/test/java/org/apache/ignite/internal/benchmark].
 

  was:
The following scenario is broken:
 # Two raft groups are started and mapped to the same stripe.
 # Two LogEntryAndClosure events are added in quick succession so they form 
distruptor batch: first for group 1, second for group 2.

First event is delivered to group 1 with endOfBatch=false, so it's cached in 
org.apache.ignite.raft.jraft.core.NodeImpl.LogEntryAndClosureHandler#tasks and 
is not processed.

Second event is delivered to group 2 with endOfBatch=true and processed, but 
first event will remain in queue unprocessed forever, because 
LogEntryAndClosureHandler are different instances per raft group.

The possible WA for this is to set 
org.apache.ignite.raft.jraft.option.RaftOptions#applyBatch=1

Reproducible by 
org.apache.ignite.internal.table.TxDistributedTest_1_1_1#testCrossTable + 
applyBatch=32 in ignite-15085 branch

*Implementation notes*

My proposal goes bound Disruptor. The striped disruptor implementation has an 
interceptor that proposes an event to a specific interceptor. Only the last 
event in the batch has a completion batch flag. For the other RAFT groups, 
which has been notified in the striped disruptor, required to create an event 
to fix a batch into the specific group. The new event will be created in the 
common striped disruptor interceptor, and it will send to a specific 
interceptor with flag about batch completion.

The rule of handling the new event is differenced for various interceptor:
{code:java|title=title=ApplyTaskHandler (FSMCallerImpl#runApplyTask)}
if (maxCommittedIndex >= 0) {
  doCommitted(maxCommittedIndex);
  return -1;
}
{code}
{code:java|title=LogEntryAndClosureHandler(LogEntryAndClosureHandler#onEvent)}
if (this.tasks.size() > 0) {
  executeApplyingTasks(this.tasks);
  this.tasks.clear();
}
{code}
{code:java|title=ReadIndexEventHandler(ReadIndexEventHandler#onEvent)}
if (this.events.size() > 0) {
  executeReadIndexEvents(this.events);
  this.events.clear();
}
{code}
{code:java|title=StableClosureEventHandler(StableClosureEventHandler#onEvent)}
if (this.ab.size > 0) {
  this.lastId = this.ab.flush();
  setDiskId(this.lastId);
}
{code}
 


> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: 

[jira] [Created] (IGNITE-18499) Make IncomingSnapshotCopier behave closer to LocalSnapshotCopier

2023-01-04 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-18499:
--

 Summary: Make IncomingSnapshotCopier behave closer to 
LocalSnapshotCopier
 Key: IGNITE-18499
 URL: https://issues.apache.org/jira/browse/IGNITE-18499
 Project: Ignite
  Issue Type: Improvement
Reporter: Roman Puchkovskiy
 Fix For: 3.0.0-beta2


There are a few differences between {{IncomingSnapshotCopier}} and 
{{{}LocalSnapshotCopier{}}}. JRaft seems to be very sensitive to little changes 
in behavior because it relies on many invariants, some of them implicit, to 
function correctly. Hence it is best to have our copier mimic the stock one as 
fully as possible (where it's feasible).

Here are the differences:
 # On cancellation, the copier should be transferred to an erroneous state 
(using {{{}setError(){}}})
 # On closure, the copier should be cancelled
 # The stock copier does not invoke {{join()}} on cancellation, but our 
implementation does. On the one hand, waiting seems to make sense because it 
allows to save retries, but it's a difference from the stock logic which might 
be dangerous.
 # We should only set error if it has not been set yet; but our copier 
implementation usually does the opposite: if there is an error, it sets some 
other error



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


[jira] [Created] (IGNITE-18498) InstallSnapshot request might be retried immediately

2023-01-04 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-18498:
--

 Summary: InstallSnapshot request might be retried immediately
 Key: IGNITE-18498
 URL: https://issues.apache.org/jira/browse/IGNITE-18498
 Project: Ignite
  Issue Type: Bug
Reporter: Roman Puchkovskiy


{{InstallSnapshot}} request is repeated after the corresponding timeout if a 
response to the first request is not received in time. But in one test run, 
second {{InstallSnapshot}} request was sent 1 millisecond after the first one 
(before the response from the first one was received). This needs an 
investigation.

See {{{}ItTableRaftSnapshotsTest{}}}.



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


[jira] [Resolved] (IGNITE-17262) Implement RAFT snapshot streamer

2023-01-04 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy resolved IGNITE-17262.

Fix Version/s: 3.0.0-beta2
   Resolution: Done

Closing as this is an umbrella ticket and all its sub-tickets are resolved.

> Implement RAFT snapshot streamer
> 
>
> Key: IGNITE-17262
> URL: https://issues.apache.org/jira/browse/IGNITE-17262
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Infrastructure for this should be implemented in IGNITE-17253 .
> In this ticket, streaming using this infrastructure (along with changes to 
> write commands/their handling) should be implemented.
> See IGNITE-17083
> h3. UPDATE
> Infrastructure is ready in IGNITE-17083, streaming can be implemented right 
> now even without storage API (with non-implemented storage methods or even 
> placeholders). Please see {{IncomingSnapshotCopier}} and related classes in 
> other packages for details.
>  
> This is an umbrella ticket.



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


[jira] [Commented] (IGNITE-18199) Make punch holes in partitions files during restoration of snapshot

2023-01-04 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-18199:


{panel:title=Branch: [pull/10468/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/10468/head] Base: [master] : New Tests 
(1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#8b}Disk Page Compressions 1{color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=6978817]]
* {color:#013220}IgnitePdsCompressionTestSuite: 
SnapshotCompressionBasicTest.testRestoreFullSnapshot_OnLargerTopology[Encryption=false]
 - PASSED{color}

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

> Make punch holes in partitions files during restoration of snapshot
> ---
>
> Key: IGNITE-18199
> URL: https://issues.apache.org/jira/browse/IGNITE-18199
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.14
>Reporter: Ivan Daschinsky
>Assignee: Ivan Daschinsky
>Priority: Major
>  Labels: ise
> Fix For: 2.15
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>




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