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

2024-05-17 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:
---
Attachment: MyInsertBenchmarkWithMetrics.java

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



--
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

2024-05-17 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:
---
Attachment: (was: MyInsertBenchmarkWithMetrics.java)

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



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


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

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov edited comment on IGNITE-15568 at 5/17/24 5:04 PM:
-

{code}
New

Raft metrics:
raft.logmanager.disruptor.Batch: [
  0_10:2487232, 
  10_20:5693, 
  20_30:2096, 
  30_40:574, 
  40_50:295, 
  50_inf:4]
raft.nodeimpl.disruptor.Batch: [
  0_10:3387423, 
  10_20:660, 
  20_30:44, 
  30_40:3, 
  40_50:0, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch: [
  0_10:2, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
raft.fsmcaller.disruptor.Batch: [
  0_10:29651, 
  10_20:96043, 
  20_30:67743, 
  30_40:350, 
  40_50:0, 
  50_inf:0]


Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  6723,882 ± 639,991  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7722,169 ± 504,716  us/op


Old

raft.logmanager.disruptor.Batch: [
  0_10:2788769, 
  10_20:8218, 
  20_30:4532, 
  30_40:1579, 
  40_50:782, 
  50_inf:61]

Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  7611,808 ± 695,469  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7681,789 ± 433,490  us/op
{code}


was (Author: v.pyatkov):
{code}
New

Raft metrics:
raft.logmanager.disruptor.Batch: [
  0_10:2487232, 
  10_20:5693, 
  20_30:2096, 
  30_40:574, 
  40_50:295, 
  50_inf:4]
raft.nodeimpl.disruptor.Batch: [
  0_10:3387423, 
  10_20:660, 
  20_30:44, 
  30_40:3, 
  40_50:0, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch: [
  0_10:2, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
raft.fsmcaller.disruptor.Batch: [
  0_10:29651, 
  10_20:96043, 
  20_30:67743, 
  30_40:350, 
  40_50:0, 
  50_inf:0]


Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  6723,882 ± 639,991  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7722,169 ± 504,716  us/op


Old

raft.logmanager.disruptor.Batch: [
  0_10:2788769, 
  10_20:8218, 
  20_30:4532, 
  30_40:1579, 
  40_50:782, 
  50_inf:61]
raft.nodeimpl.disruptor.Batch: [
  0_10:3274036, 
  10_20:2066, 
  20_30:446, 
  30_40:128, 
  40_50:35, 
  50_inf:8]
raft.readonlyservice.disruptor.Batch: [
  0_10:2, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
raft.fsmcaller.disruptor.Batch: [
  0_10:9135, 
  10_20:6197, 
  20_30:4795, 
  30_40:6800, 
  40_50:80328, 
  50_inf:73]

Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  7611,808 ± 695,469  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7681,789 ± 433,490  us/op
{code}

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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

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

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov edited comment on IGNITE-15568 at 5/17/24 5:03 PM:
-

{code}
New

Raft metrics:
raft.logmanager.disruptor.Batch: [
  0_10:2487232, 
  10_20:5693, 
  20_30:2096, 
  30_40:574, 
  40_50:295, 
  50_inf:4]
raft.nodeimpl.disruptor.Batch: [
  0_10:3387423, 
  10_20:660, 
  20_30:44, 
  30_40:3, 
  40_50:0, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch: [
  0_10:2, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
raft.fsmcaller.disruptor.Batch: [
  0_10:29651, 
  10_20:96043, 
  20_30:67743, 
  30_40:350, 
  40_50:0, 
  50_inf:0]


Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  6723,882 ± 639,991  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7722,169 ± 504,716  us/op


Old

raft.logmanager.disruptor.Batch: [
  0_10:2788769, 
  10_20:8218, 
  20_30:4532, 
  30_40:1579, 
  40_50:782, 
  50_inf:61]
raft.nodeimpl.disruptor.Batch: [
  0_10:3274036, 
  10_20:2066, 
  20_30:446, 
  30_40:128, 
  40_50:35, 
  50_inf:8]
raft.readonlyservice.disruptor.Batch: [
  0_10:2, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
raft.fsmcaller.disruptor.Batch: [
  0_10:9135, 
  10_20:6197, 
  20_30:4795, 
  30_40:6800, 
  40_50:80328, 
  50_inf:73]

Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  7611,808 ± 695,469  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7681,789 ± 433,490  us/op
{code}


was (Author: v.pyatkov):
{code}
New

Raft metrics:
raft.logmanager.disruptor.Batch: [
  0_10:2487232, 
  10_20:5693, 
  20_30:2096, 
  30_40:574, 
  40_50:295, 
  50_inf:4]

Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  6723,882 ± 639,991  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7722,169 ± 504,716  us/op


Old

raft.logmanager.disruptor.Batch: [
  0_10:2788769, 
  10_20:8218, 
  20_30:4532, 
  30_40:1579, 
  40_50:782, 
  50_inf:61]
raft.nodeimpl.disruptor.Batch: [
  0_10:3274036, 
  10_20:2066, 
  20_30:446, 
  30_40:128, 
  40_50:35, 
  50_inf:8]
raft.readonlyservice.disruptor.Batch: [
  0_10:2, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
raft.fsmcaller.disruptor.Batch: [
  0_10:9135, 
  10_20:6197, 
  20_30:4795, 
  30_40:6800, 
  40_50:80328, 
  50_inf:73]

Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  7611,808 ± 695,469  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7681,789 ± 433,490  us/op
{code}

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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

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

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-15568:


{code}
New

Raft metrics:
raft.logmanager.disruptor.Batch: [
  0_10:2487232, 
  10_20:5693, 
  20_30:2096, 
  30_40:574, 
  40_50:295, 
  50_inf:4]

Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  6723,882 ± 639,991  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7722,169 ± 504,716  us/op


Old

raft.logmanager.disruptor.Batch: [
  0_10:2788769, 
  10_20:8218, 
  20_30:4532, 
  30_40:1579, 
  40_50:782, 
  50_inf:61]
raft.nodeimpl.disruptor.Batch: [
  0_10:3274036, 
  10_20:2066, 
  20_30:446, 
  30_40:128, 
  40_50:35, 
  50_inf:8]
raft.readonlyservice.disruptor.Batch: [
  0_10:2, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
raft.fsmcaller.disruptor.Batch: [
  0_10:9135, 
  10_20:6197, 
  20_30:4795, 
  30_40:6800, 
  40_50:80328, 
  50_inf:73]

Benchmark  (clusterSize)  (fsync)  (partitionCount) 
 Mode  Cnt Score Error  Units
MyInsertBenchmarkWithMetrics.kvInsert  1false 2 
 avgt  200  7611,808 ± 695,469  us/op
MyInsertBenchmarkWithMetrics.kvInsert  1 true 2 
 avgt  200  7681,789 ± 433,490  us/op
{code}

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



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


[jira] [Updated] (IGNITE-22280) Error "A critical thread is blocked" on restart

2024-05-17 Thread Igor (Jira)


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

Igor updated IGNITE-22280:
--
Attachment: image-2024-05-17-18-06-23-594.png

> Error "A critical thread is blocked" on restart
> ---
>
> Key: IGNITE-22280
> URL: https://issues.apache.org/jira/browse/IGNITE-22280
> Project: Ignite
>  Issue Type: Bug
>  Components: general
>Affects Versions: 3.0.0-beta2
> Environment: 2 nodes (with arguments "-Xms4096m", "-Xmx4096m" ) on *1 
> host*
> cpuCount=10
> memorySizeMb=15360
>Reporter: Igor
>Priority: Major
>  Labels: ignite-3
> Attachments: ignite3db-0-1.log, ignite3db-0.log, 
> image-2024-05-17-17-57-18-759.png, image-2024-05-17-17-57-32-913.png, 
> image-2024-05-17-17-58-12-428.png, image-2024-05-17-18-06-04-081.png, 
> image-2024-05-17-18-06-23-594.png
>
>
> *Steps to reproduce:*
>  # Start cluster of 2 nodes on single host.
>  # Create 5 tables and insert 1000 rows into each.
>  # Kill 1 server.
>  # Start the killed server.
>  # Check logs for errors.
> *Expected:*
> No errors in logs.
> *Actual:*
> Errors in logs
> {code:java}
> 2024-05-17 04:26:37:808 + 
> [ERROR][%ClusterFailover2NodesTest_cluster_0%common-scheduler-0][CriticalWorkerWatchdog]
>  A critical thread is blocked for 688 ms that is more than the allowed 500 
> ms, it is "ClusterFailover2NodesTest_cluster_0-srv-worker-3" prio=10 Id=41 
> RUNNABLE
>     at 
> app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:25)
>     at 
> app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:11)
>     at 
> app//org.apache.ignite.internal.network.netty.InboundDecoder.decode(InboundDecoder.java:136)
>     at 
> app//io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
>     at 
> app//io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
>     at 
> app//io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
>     at 
> app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
>     at 
> app//io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
>     at 
> app//io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
>     at 
> app//io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
>     at 
> app//io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
>     at 
> app//io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
>     at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
>     at 
> app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
>     at 
> app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
>     at 
> app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>     at java.base@17.0.6/java.lang.Thread.run(Thread.java:833) {code}
> GC calls of node ClusterFailover2NodesTest_cluster_0 (LOG: [^ignite3db-0.log])
> !image-2024-05-17-17-57-32-913.png! GC calls of node 
> ClusterFailover2NodesTest_cluster_1 (LOG: [^ignite3db-0.log])
> !image-2024-05-17-17-58-12-428.png!



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


[jira] [Updated] (IGNITE-22280) Error "A critical thread is blocked" on restart

2024-05-17 Thread Igor (Jira)


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

Igor updated IGNITE-22280:
--
Description: 
*Steps to reproduce:*
 # Start cluster of 2 nodes on single host.
 # Create 5 tables and insert 1000 rows into each.
 # Kill 1 server.
 # Start the killed server.
 # Check logs for errors.

*Expected:*

No errors in logs.

*Actual:*
Errors in logs
{code:java}
2024-05-17 04:26:37:808 + 
[ERROR][%ClusterFailover2NodesTest_cluster_0%common-scheduler-0][CriticalWorkerWatchdog]
 A critical thread is blocked for 688 ms that is more than the allowed 500 ms, 
it is "ClusterFailover2NodesTest_cluster_0-srv-worker-3" prio=10 Id=41 RUNNABLE
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:25)
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:11)
    at 
app//org.apache.ignite.internal.network.netty.InboundDecoder.decode(InboundDecoder.java:136)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
    at 
app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at 
app//io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
    at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
    at 
app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at 
app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at 
app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base@17.0.6/java.lang.Thread.run(Thread.java:833) {code}
GC calls of node ClusterFailover2NodesTest_cluster_0 (LOG: [^ignite3db-0.log])
!image-2024-05-17-18-06-23-594.png! GC calls of node 
ClusterFailover2NodesTest_cluster_1 (LOG: [^ignite3db-0.log])
!image-2024-05-17-18-06-04-081.png!

  was:
*Steps to reproduce:*
 # Start cluster of 2 nodes on single host.
 # Create 5 tables and insert 1000 rows into each.
 # Kill 1 server.
 # Start the killed server.
 # Check logs for errors.

*Expected:*

No errors in logs.

*Actual:*
Errors in logs
{code:java}
2024-05-17 04:26:37:808 + 
[ERROR][%ClusterFailover2NodesTest_cluster_0%common-scheduler-0][CriticalWorkerWatchdog]
 A critical thread is blocked for 688 ms that is more than the allowed 500 ms, 
it is "ClusterFailover2NodesTest_cluster_0-srv-worker-3" prio=10 Id=41 RUNNABLE
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:25)
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:11)
    at 
app//org.apache.ignite.internal.network.netty.InboundDecoder.decode(InboundDecoder.java:136)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
    at 
app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at 
app//io.netty.channel.Abst

[jira] [Updated] (IGNITE-22280) Error "A critical thread is blocked" on restart

2024-05-17 Thread Igor (Jira)


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

Igor updated IGNITE-22280:
--
Attachment: image-2024-05-17-18-06-04-081.png

> Error "A critical thread is blocked" on restart
> ---
>
> Key: IGNITE-22280
> URL: https://issues.apache.org/jira/browse/IGNITE-22280
> Project: Ignite
>  Issue Type: Bug
>  Components: general
>Affects Versions: 3.0.0-beta2
> Environment: 2 nodes (with arguments "-Xms4096m", "-Xmx4096m" ) on *1 
> host*
> cpuCount=10
> memorySizeMb=15360
>Reporter: Igor
>Priority: Major
>  Labels: ignite-3
> Attachments: ignite3db-0-1.log, ignite3db-0.log, 
> image-2024-05-17-17-57-18-759.png, image-2024-05-17-17-57-32-913.png, 
> image-2024-05-17-17-58-12-428.png, image-2024-05-17-18-06-04-081.png, 
> image-2024-05-17-18-06-23-594.png
>
>
> *Steps to reproduce:*
>  # Start cluster of 2 nodes on single host.
>  # Create 5 tables and insert 1000 rows into each.
>  # Kill 1 server.
>  # Start the killed server.
>  # Check logs for errors.
> *Expected:*
> No errors in logs.
> *Actual:*
> Errors in logs
> {code:java}
> 2024-05-17 04:26:37:808 + 
> [ERROR][%ClusterFailover2NodesTest_cluster_0%common-scheduler-0][CriticalWorkerWatchdog]
>  A critical thread is blocked for 688 ms that is more than the allowed 500 
> ms, it is "ClusterFailover2NodesTest_cluster_0-srv-worker-3" prio=10 Id=41 
> RUNNABLE
>     at 
> app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:25)
>     at 
> app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:11)
>     at 
> app//org.apache.ignite.internal.network.netty.InboundDecoder.decode(InboundDecoder.java:136)
>     at 
> app//io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
>     at 
> app//io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
>     at 
> app//io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
>     at 
> app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
>     at 
> app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
>     at 
> app//io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
>     at 
> app//io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
>     at 
> app//io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
>     at 
> app//io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
>     at 
> app//io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
>     at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
>     at 
> app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
>     at 
> app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
>     at 
> app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>     at java.base@17.0.6/java.lang.Thread.run(Thread.java:833) {code}
> GC calls of node ClusterFailover2NodesTest_cluster_0 (LOG: [^ignite3db-0.log])
> !image-2024-05-17-17-57-32-913.png! GC calls of node 
> ClusterFailover2NodesTest_cluster_1 (LOG: [^ignite3db-0.log])
> !image-2024-05-17-17-58-12-428.png!



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


[jira] [Updated] (IGNITE-22280) Error "A critical thread is blocked" on restart

2024-05-17 Thread Igor (Jira)


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

Igor updated IGNITE-22280:
--
Description: 
*Steps to reproduce:*
 # Start cluster of 2 nodes on single host.
 # Create 5 tables and insert 1000 rows into each.
 # Kill 1 server.
 # Start the killed server.
 # Check logs for errors.

*Expected:*

No errors in logs.

*Actual:*
Errors in logs
{code:java}
2024-05-17 04:26:37:808 + 
[ERROR][%ClusterFailover2NodesTest_cluster_0%common-scheduler-0][CriticalWorkerWatchdog]
 A critical thread is blocked for 688 ms that is more than the allowed 500 ms, 
it is "ClusterFailover2NodesTest_cluster_0-srv-worker-3" prio=10 Id=41 RUNNABLE
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:25)
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:11)
    at 
app//org.apache.ignite.internal.network.netty.InboundDecoder.decode(InboundDecoder.java:136)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
    at 
app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at 
app//io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
    at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
    at 
app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at 
app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at 
app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base@17.0.6/java.lang.Thread.run(Thread.java:833) {code}
GC calls of node ClusterFailover2NodesTest_cluster_0 (LOG: [^ignite3db-0.log])
!image-2024-05-17-17-57-32-913.png! GC calls of node 
ClusterFailover2NodesTest_cluster_1 (LOG: [^ignite3db-0.log])
!image-2024-05-17-17-58-12-428.png!

  was:
*Steps to reproduce:*
 # Start cluster of 2 nodes on single host.
 # Insert create 5 tables and insert 1000 rows into each.
 # Kill 1 server.
 # Start the killed server.
 # Check logs for errors.

*Expected:*

No errors in logs.

*Actual:*
Errors in logs
{code:java}
2024-05-17 04:26:37:808 + 
[ERROR][%ClusterFailover2NodesTest_cluster_0%common-scheduler-0][CriticalWorkerWatchdog]
 A critical thread is blocked for 688 ms that is more than the allowed 500 ms, 
it is "ClusterFailover2NodesTest_cluster_0-srv-worker-3" prio=10 Id=41 RUNNABLE
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:25)
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:11)
    at 
app//org.apache.ignite.internal.network.netty.InboundDecoder.decode(InboundDecoder.java:136)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
    at 
app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at 
app//io.netty.chann

[jira] [Created] (IGNITE-22280) Error "A critical thread is blocked" on restart

2024-05-17 Thread Igor (Jira)
Igor created IGNITE-22280:
-

 Summary: Error "A critical thread is blocked" on restart
 Key: IGNITE-22280
 URL: https://issues.apache.org/jira/browse/IGNITE-22280
 Project: Ignite
  Issue Type: Bug
  Components: general
Affects Versions: 3.0.0-beta2
 Environment: 2 nodes (with arguments "-Xms4096m", "-Xmx4096m" ) on *1 
host*
cpuCount=10
memorySizeMb=15360
Reporter: Igor
 Attachments: ignite3db-0-1.log, ignite3db-0.log, 
image-2024-05-17-17-57-18-759.png, image-2024-05-17-17-57-32-913.png, 
image-2024-05-17-17-58-12-428.png

*Steps to reproduce:*
 # Start cluster of 2 nodes on single host.
 # Insert create 5 tables and insert 1000 rows into each.
 # Kill 1 server.
 # Start the killed server.
 # Check logs for errors.

*Expected:*

No errors in logs.

*Actual:*
Errors in logs
{code:java}
2024-05-17 04:26:37:808 + 
[ERROR][%ClusterFailover2NodesTest_cluster_0%common-scheduler-0][CriticalWorkerWatchdog]
 A critical thread is blocked for 688 ms that is more than the allowed 500 ms, 
it is "ClusterFailover2NodesTest_cluster_0-srv-worker-3" prio=10 Id=41 RUNNABLE
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:25)
    at 
app//org.apache.ignite.internal.network.message.InvokeResponseDeserializer.getMessage(InvokeResponseDeserializer.java:11)
    at 
app//org.apache.ignite.internal.network.netty.InboundDecoder.decode(InboundDecoder.java:136)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
    at 
app//io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
    at 
app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
    at 
app//io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
    at 
app//io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at 
app//io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
    at 
app//io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
    at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
    at 
app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at 
app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at 
app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base@17.0.6/java.lang.Thread.run(Thread.java:833) {code}

GC calls of node ClusterFailover2NodesTest_cluster_0 (LOG: [^ignite3db-0.log])
!image-2024-05-17-17-57-32-913.png! GC calls of node 
ClusterFailover2NodesTest_cluster_1 (LOG: [^ignite3db-0.log])
!image-2024-05-17-17-58-12-428.png!



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


[jira] [Updated] (IGNITE-22275) Avoid partition number change

2024-05-17 Thread Kirill Gusakov (Jira)


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

Kirill Gusakov updated IGNITE-22275:

Description: 
*Motivation*
In fact, due to many reasons (for example we can't rebalance data between 
different RAFT groups and etc.) we can't support the partitions number change 
in the zone.

Earlier, when the alter zone was the configuration change - we used the 
{{@Immutable}} configuration validation around the partition filed. But now, 
after migration to the catalog approach - we loose this guard.

So, we need to implement the any kind of guard to prohibit partitions number 
changes.

*Definition of done*
 - There is no any public API (DDLs and etc.), where we can change the number 
of partitions

*Implementation notes*
 - Avoid partitions change in the command and check if the error will be user 
friendly 
[https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java#L146]
 - Also, if the previous error will be ugly, we can remove the {{partitions}} 
option from the alterZoneOptions 
[here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]

  was:
*Motivation*
In fact, due to many reasons (for example we can't rebalance data between 
different RAFT groups and etc.) we can't support the partitions number change 
in the zone.

Earlier, when the alter zone was the configuration change - we used the 
{{@Immutable}} configuration validation around the partition filed. But now, 
after migration to the catalog approach - we loose this guard.

So, we need to implement the any kind of guard to prohibit partitions number 
changes.

*Definition of done*
 - There is no any public API (DDLs and etc.), where we can change the number 
of partitions

*Implementation notes*

- Avoid partitions change in the command and check if the error will be user 
friendly 
https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java#L146
- We can remove the {{partitions}} option from the alterZoneOptions 
[here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]


> Avoid partition number change
> -
>
> Key: IGNITE-22275
> URL: https://issues.apache.org/jira/browse/IGNITE-22275
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Gusakov
>Priority: Major
>
> *Motivation*
> In fact, due to many reasons (for example we can't rebalance data between 
> different RAFT groups and etc.) we can't support the partitions number change 
> in the zone.
> Earlier, when the alter zone was the configuration change - we used the 
> {{@Immutable}} configuration validation around the partition filed. But now, 
> after migration to the catalog approach - we loose this guard.
> So, we need to implement the any kind of guard to prohibit partitions number 
> changes.
> *Definition of done*
>  - There is no any public API (DDLs and etc.), where we can change the number 
> of partitions
> *Implementation notes*
>  - Avoid partitions change in the command and check if the error will be user 
> friendly 
> [https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java#L146]
>  - Also, if the previous error will be ugly, we can remove the {{partitions}} 
> option from the alterZoneOptions 
> [here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]



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


[jira] [Updated] (IGNITE-22275) Avoid partition number change

2024-05-17 Thread Kirill Gusakov (Jira)


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

Kirill Gusakov updated IGNITE-22275:

Description: 
*Motivation*
In fact, due to many reasons (for example we can't rebalance data between 
different RAFT groups and etc.) we can't support the partitions number change 
in the zone.

Earlier, when the alter zone was the configuration change - we used the 
{{@Immutable}} configuration validation around the partition filed. But now, 
after migration to the catalog approach - we loose this guard.

So, we need to implement the any kind of guard to prohibit partitions number 
changes.

*Definition of done*
 - There is no any public API (DDLs and etc.), where we can change the number 
of partitions

*Implementation notes*

- Avoid partitions change in the command and check if the error will be user 
friendly 
https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java#L146
- We can remove the {{partitions}} option from the alterZoneOptions 
[here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]

  was:
*Motivation*
In fact, due to many reasons (for example we can't rebalance data between 
different RAFT groups and etc.) we can't support the partitions number change 
in the zone.

Earlier, when the alter zone was the configuration change - we used the 
\{{@Immutable}} configuration validation around the partition filed. But now, 
after migration to the catalog approach - we loose this guard.

So, we need to implement the any kind of guard to prohibit partitions number 
changes.

*Definition of done*
- There is no any public API (DDLs and etc.), where we can change the number of 
partitions

*Implementation notes*
We can remove the {{partitions}} option from the alterZoneOptions 
[here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]
 


> Avoid partition number change
> -
>
> Key: IGNITE-22275
> URL: https://issues.apache.org/jira/browse/IGNITE-22275
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Gusakov
>Priority: Major
>
> *Motivation*
> In fact, due to many reasons (for example we can't rebalance data between 
> different RAFT groups and etc.) we can't support the partitions number change 
> in the zone.
> Earlier, when the alter zone was the configuration change - we used the 
> {{@Immutable}} configuration validation around the partition filed. But now, 
> after migration to the catalog approach - we loose this guard.
> So, we need to implement the any kind of guard to prohibit partitions number 
> changes.
> *Definition of done*
>  - There is no any public API (DDLs and etc.), where we can change the number 
> of partitions
> *Implementation notes*
> - Avoid partitions change in the command and check if the error will be user 
> friendly 
> https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java#L146
> - We can remove the {{partitions}} option from the alterZoneOptions 
> [here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]



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


[jira] [Updated] (IGNITE-19544) Thin 3.0: Data Streamer with Receiver

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-19544:

Description: Implement data streamer with receiver in Java client - see 
[IEP-121|https://cwiki.apache.org/confluence/display/IGNITE/IEP-121%3A+Data+Streamer+with+Receiver]
  (was: Implement data streamer with receiver in Java client - see Use Case 2 
in the 
[IEP-102|https://cwiki.apache.org/confluence/display/IGNITE/IEP-102%3A+Data+Streamer].)

> Thin 3.0: Data Streamer with Receiver
> -
>
> Key: IGNITE-19544
> URL: https://issues.apache.org/jira/browse/IGNITE-19544
> Project: Ignite
>  Issue Type: Task
>  Components: thin client
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: iep-102, iep-121, ignite-3
> Fix For: 3.0.0-beta2
>
>
> Implement data streamer with receiver in Java client - see 
> [IEP-121|https://cwiki.apache.org/confluence/display/IGNITE/IEP-121%3A+Data+Streamer+with+Receiver]



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


[jira] [Updated] (IGNITE-22279) Missed comments in PR IGNITE-22130

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-22279:
---
Description: 
https://github.com/apache/ignite-3/pull/3704
Motivation
{code}
if (retryExecutor != null && matchAny(unwrapCause(errResp.throwable()), 
ACQUIRE_LOCK_ERR, REPLICA_MISS_ERR)) {
retryExecutor.schedule(
// Need to resubmit again to pool which is 
valid for synchronous IO execution.
() -> 
partitionOperationsExecutor.execute(() -> 
res.completeExceptionally(errResp.throwable())),
RETRY_TIMEOUT_MILLIS, MILLISECONDS);
}
{code}

  was:https://github.com/apache/ignite-3/pull/3704


> Missed comments in PR IGNITE-22130
> --
>
> Key: IGNITE-22279
> URL: https://issues.apache.org/jira/browse/IGNITE-22279
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> https://github.com/apache/ignite-3/pull/3704
> Motivation
> {code}
> if (retryExecutor != null && matchAny(unwrapCause(errResp.throwable()), 
> ACQUIRE_LOCK_ERR, REPLICA_MISS_ERR)) {
> retryExecutor.schedule(
> // Need to resubmit again to pool which 
> is valid for synchronous IO execution.
> () -> 
> partitionOperationsExecutor.execute(() -> 
> res.completeExceptionally(errResp.throwable())),
> RETRY_TIMEOUT_MILLIS, MILLISECONDS);
> }
> {code}



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


[jira] [Updated] (IGNITE-22279) Missed comments in PR IGNITE-22130

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-22279:
---
Description: 
https://github.com/apache/ignite-3/pull/3704
h3. Motivation
{code}
if (retryExecutor != null && matchAny(unwrapCause(errResp.throwable()), 
ACQUIRE_LOCK_ERR, REPLICA_MISS_ERR)) {
retryExecutor.schedule(
// Need to resubmit again to pool which is 
valid for synchronous IO execution.
() -> 
partitionOperationsExecutor.execute(() -> 
res.completeExceptionally(errResp.throwable())),
RETRY_TIMEOUT_MILLIS, MILLISECONDS);
}
{code}

  was:
https://github.com/apache/ignite-3/pull/3704
Motivation
{code}
if (retryExecutor != null && matchAny(unwrapCause(errResp.throwable()), 
ACQUIRE_LOCK_ERR, REPLICA_MISS_ERR)) {
retryExecutor.schedule(
// Need to resubmit again to pool which is 
valid for synchronous IO execution.
() -> 
partitionOperationsExecutor.execute(() -> 
res.completeExceptionally(errResp.throwable())),
RETRY_TIMEOUT_MILLIS, MILLISECONDS);
}
{code}


> Missed comments in PR IGNITE-22130
> --
>
> Key: IGNITE-22279
> URL: https://issues.apache.org/jira/browse/IGNITE-22279
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> https://github.com/apache/ignite-3/pull/3704
> h3. Motivation
> {code}
> if (retryExecutor != null && matchAny(unwrapCause(errResp.throwable()), 
> ACQUIRE_LOCK_ERR, REPLICA_MISS_ERR)) {
> retryExecutor.schedule(
> // Need to resubmit again to pool which 
> is valid for synchronous IO execution.
> () -> 
> partitionOperationsExecutor.execute(() -> 
> res.completeExceptionally(errResp.throwable())),
> RETRY_TIMEOUT_MILLIS, MILLISECONDS);
> }
> {code}



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


[jira] [Created] (IGNITE-22279) Missed comments in PR IGNITE-22130

2024-05-17 Thread Vladislav Pyatkov (Jira)
Vladislav Pyatkov created IGNITE-22279:
--

 Summary: Missed comments in PR IGNITE-22130
 Key: IGNITE-22279
 URL: https://issues.apache.org/jira/browse/IGNITE-22279
 Project: Ignite
  Issue Type: Bug
Reporter: Vladislav Pyatkov


https://github.com/apache/ignite-3/pull/3704



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


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

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov edited comment on IGNITE-15568 at 5/17/24 1:56 PM:
-

It was just like it was. I did not edit the old code before the benchmark run.


was (Author: v.pyatkov):
It was just like it was. I do not edit the old code.

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



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


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

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-15568:


It was just like it was. I do not edit the old code.

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



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


[jira] [Created] (IGNITE-22278) Sql. Refactor base and planning context

2024-05-17 Thread Konstantin Orlov (Jira)
Konstantin Orlov created IGNITE-22278:
-

 Summary: Sql. Refactor base and planning context
 Key: IGNITE-22278
 URL: https://issues.apache.org/jira/browse/IGNITE-22278
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Konstantin Orlov


Purpose of the BaseQueryContext is not clear. On the one hand, it contains meta 
required to kick start the query execution, on the other -- it contains 
framework configuration which is specific only for planning phase. Let's remove 
BasicContext and introduce OperationContext instead. All planning related part 
should be moved to PlanningContext.



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


[jira] [Updated] (IGNITE-22278) Sql. Refactor base and planning context

2024-05-17 Thread Konstantin Orlov (Jira)


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

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

> Sql. Refactor base and planning context
> ---
>
> Key: IGNITE-22278
> URL: https://issues.apache.org/jira/browse/IGNITE-22278
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Konstantin Orlov
>Assignee: Konstantin Orlov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Purpose of the BaseQueryContext is not clear. On the one hand, it contains 
> meta required to kick start the query execution, on the other -- it contains 
> framework configuration which is specific only for planning phase. Let's 
> remove BasicContext and introduce OperationContext instead. All planning 
> related part should be moved to PlanningContext.



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


[jira] [Assigned] (IGNITE-22278) Sql. Refactor base and planning context

2024-05-17 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov reassigned IGNITE-22278:
-

Assignee: Konstantin Orlov

> Sql. Refactor base and planning context
> ---
>
> Key: IGNITE-22278
> URL: https://issues.apache.org/jira/browse/IGNITE-22278
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Konstantin Orlov
>Assignee: Konstantin Orlov
>Priority: Major
>  Labels: ignite-3
>
> Purpose of the BaseQueryContext is not clear. On the one hand, it contains 
> meta required to kick start the query execution, on the other -- it contains 
> framework configuration which is specific only for planning phase. Let's 
> remove BasicContext and introduce OperationContext instead. All planning 
> related part should be moved to PlanningContext.



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


[jira] [Comment Edited] (IGNITE-22207) Handling of AwaitPrimaryReplica request maight lead to the dedalock

2024-05-17 Thread Jira


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

 Kirill Sizov edited comment on IGNITE-22207 at 5/17/24 1:45 PM:
-

The solution would be to avoid any activity inside 
{{ReplicaService.pendingInvokes}}, in that case we will never have a case when 
one holds a pendingInvokes monitor and tries to take another one.

In other words we need to take network invoke method out of computeIfAbsent.


was (Author: JIRAUSER301198):
The solution would be to avoid any activity inside 
{{ReplicaService.pendingInvokes}}, in that case we will never have a case when 
one holds a pendingInvokes monitor and tries to take another one.

In other words we need to take network invoke out of computeIfAbsent.

> Handling of AwaitPrimaryReplica request maight lead to the dedalock
> ---
>
> Key: IGNITE-22207
> URL: https://issues.apache.org/jira/browse/IGNITE-22207
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> We handle ReplicaUnavailableException in ReplicaService to handle request 
> transparency even if the replica had not been read at the time the request 
> was sent. To do this, we send AwaitReplicaRequest as a handling of the 
> exception and then process the origin request when the replica is guaranteed 
> ready.
> In the event that the AwaitReplicaRequest is handled locally, we will do it 
> synchronously in pendingInvokes.computeIfAbsent:
> {code}
> CompletableFuture awaitReplicaFut = 
> pendingInvokes.computeIfAbsent(
> targetNodeConsistentId,
> consistentId -> {
> AwaitReplicaRequest awaitReplicaReq = 
> REPLICA_MESSAGES_FACTORY.awaitReplicaRequest()
> .groupId(req.groupId())
> .build();
> return messagingService.invoke(
> targetNodeConsistentId,
> awaitReplicaReq,
> replicationConfiguration.rpcTimeout().value()
> );
> }
> );
> {code}
> and then hands on handling of AwaitReplicaRequest, due to removing from 
> pendingInvokes:
> {code}
> awaitReplicaFut.handle((response0, throwable0) -> {
> pendingInvokes.remove(targetNodeConsistentId, awaitReplicaFut);
> ...
> {code}
> h3. Definition of doe
> Take out of the network invokation from the map compute closure.



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


[jira] [Commented] (IGNITE-22207) Handling of AwaitPrimaryReplica request maight lead to the dedalock

2024-05-17 Thread Jira


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

 Kirill Sizov commented on IGNITE-22207:


The solution would be to avoid any activity inside 
{{ReplicaService.pendingInvokes}}, in that case we will never have a case when 
one holds a pendingInvokes monitor and tries to take another one.

In other words we need to take network invoke out of computeIfAbsent.

> Handling of AwaitPrimaryReplica request maight lead to the dedalock
> ---
>
> Key: IGNITE-22207
> URL: https://issues.apache.org/jira/browse/IGNITE-22207
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> We handle ReplicaUnavailableException in ReplicaService to handle request 
> transparency even if the replica had not been read at the time the request 
> was sent. To do this, we send AwaitReplicaRequest as a handling of the 
> exception and then process the origin request when the replica is guaranteed 
> ready.
> In the event that the AwaitReplicaRequest is handled locally, we will do it 
> synchronously in pendingInvokes.computeIfAbsent:
> {code}
> CompletableFuture awaitReplicaFut = 
> pendingInvokes.computeIfAbsent(
> targetNodeConsistentId,
> consistentId -> {
> AwaitReplicaRequest awaitReplicaReq = 
> REPLICA_MESSAGES_FACTORY.awaitReplicaRequest()
> .groupId(req.groupId())
> .build();
> return messagingService.invoke(
> targetNodeConsistentId,
> awaitReplicaReq,
> replicationConfiguration.rpcTimeout().value()
> );
> }
> );
> {code}
> and then hands on handling of AwaitReplicaRequest, due to removing from 
> pendingInvokes:
> {code}
> awaitReplicaFut.handle((response0, throwable0) -> {
> pendingInvokes.remove(targetNodeConsistentId, awaitReplicaFut);
> ...
> {code}
> h3. Definition of doe
> Take out of the network invokation from the map compute closure.



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


[jira] [Updated] (IGNITE-22275) Avoid partition number change

2024-05-17 Thread Kirill Gusakov (Jira)


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

Kirill Gusakov updated IGNITE-22275:

Description: 
*Motivation*
In fact, due to many reasons (for example we can't rebalance data between 
different RAFT groups and etc.) we can't support the partitions number change 
in the zone.

Earlier, when the alter zone was the configuration change - we used the 
\{{@Immutable}} configuration validation around the partition filed. But now, 
after migration to the catalog approach - we loose this guard.

So, we need to implement the any kind of guard to prohibit partitions number 
changes.

*Definition of done*
- There is no any public API (DDLs and etc.), where we can change the number of 
partitions

*Implementation notes*
We can remove the {{partitions}} option from the alterZoneOptions 
[here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]
 

> Avoid partition number change
> -
>
> Key: IGNITE-22275
> URL: https://issues.apache.org/jira/browse/IGNITE-22275
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Gusakov
>Priority: Major
>
> *Motivation*
> In fact, due to many reasons (for example we can't rebalance data between 
> different RAFT groups and etc.) we can't support the partitions number change 
> in the zone.
> Earlier, when the alter zone was the configuration change - we used the 
> \{{@Immutable}} configuration validation around the partition filed. But now, 
> after migration to the catalog approach - we loose this guard.
> So, we need to implement the any kind of guard to prohibit partitions number 
> changes.
> *Definition of done*
> - There is no any public API (DDLs and etc.), where we can change the number 
> of partitions
> *Implementation notes*
> We can remove the {{partitions}} option from the alterZoneOptions 
> [here|https://github.com/apache/ignite-3/blob/c41d3e2d46bd2f717fda4f9fe02b18abca08e98a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java#L189]
>  



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


[jira] [Commented] (IGNITE-22207) Handling of AwaitPrimaryReplica request maight lead to the dedalock

2024-05-17 Thread Jira


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

 Kirill Sizov commented on IGNITE-22207:


There is a deadlock between {{ReplicaService.pendingInvokes}} and 
{{ReplicaManager.replicas}}
See threaddump:
{noformat}

"%sqllogic0%low-watermark-updater-0" #273 prio=5 os_prio=0 cpu=1503.23ms 
elapsed=2391.82s tid=0x7fd3492b1000 nid=0x2527f6 waiting for monitor entry  
[0x7fd28987]
   java.lang.Thread.State: BLOCKED (on object monitor)
at 
java.util.concurrent.ConcurrentHashMap.replaceNode(java.base@11.0.17/ConcurrentHashMap.java:1122)
- waiting to lock <0x00071ab00178> (a 
java.util.concurrent.ConcurrentHashMap$ReservationNode)
at 
java.util.concurrent.ConcurrentHashMap.remove(java.base@11.0.17/ConcurrentHashMap.java:1552)
at 
org.apache.ignite.internal.replicator.ReplicaService.lambda$sendToReplica$3(ReplicaService.java:167)
at 
org.apache.ignite.internal.replicator.ReplicaService$$Lambda$3914/0x00080117c840.apply(Unknown
 Source)
at 
java.util.concurrent.CompletableFuture.uniHandle(java.base@11.0.17/CompletableFuture.java:930)
at 
java.util.concurrent.CompletableFuture$UniHandle.tryFire(java.base@11.0.17/CompletableFuture.java:907)
at 
java.util.concurrent.CompletableFuture.postComplete(java.base@11.0.17/CompletableFuture.java:506)
at 
java.util.concurrent.CompletableFuture.complete(java.base@11.0.17/CompletableFuture.java:2073)
at 
org.apache.ignite.internal.network.DefaultMessagingService.onInvokeResponse(DefaultMessagingService.java:524)
at 
org.apache.ignite.internal.network.DefaultMessagingService.send0(DefaultMessagingService.java:240)
at 
org.apache.ignite.internal.network.DefaultMessagingService.respond(DefaultMessagingService.java:183)
at 
org.apache.ignite.internal.network.DefaultMessagingService.respond(DefaultMessagingService.java:196)
at 
org.apache.ignite.internal.network.MessagingService.respond(MessagingService.java:142)
at 
org.apache.ignite.internal.replicator.ReplicaManager.lambda$handleReplicaRequest$2(ReplicaManager.java:301)
at 
org.apache.ignite.internal.replicator.ReplicaManager$$Lambda$3898/0x000801179040.accept(Unknown
 Source)
at 
java.util.concurrent.CompletableFuture.uniWhenComplete(java.base@11.0.17/CompletableFuture.java:859)
at 
java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(java.base@11.0.17/CompletableFuture.java:837)
at 
java.util.concurrent.CompletableFuture.postComplete(java.base@11.0.17/CompletableFuture.java:506)
at 
java.util.concurrent.CompletableFuture.completeExceptionally(java.base@11.0.17/CompletableFuture.java:2088)
at 
org.apache.ignite.internal.replicator.ReplicaManager.lambda$stopReplicaInternal$17(ReplicaManager.java:630)
at 
org.apache.ignite.internal.replicator.ReplicaManager$$Lambda$4502/0x000801292040.apply(Unknown
 Source)
at 
java.util.concurrent.ConcurrentHashMap.compute(java.base@11.0.17/ConcurrentHashMap.java:1932)
- locked <0x000719f589f8> (a 
java.util.concurrent.ConcurrentHashMap$Node)
at 
org.apache.ignite.internal.replicator.ReplicaManager.lambda$stopReplicaInternal$18(ReplicaManager.java:624)
at 
org.apache.ignite.internal.replicator.ReplicaManager$$Lambda$4501/0x000801291c40.accept(Unknown
 Source)
at 
java.util.concurrent.CompletableFuture.uniWhenComplete(java.base@11.0.17/CompletableFuture.java:859)
at 
java.util.concurrent.CompletableFuture.uniWhenCompleteStage(java.base@11.0.17/CompletableFuture.java:883)
at 
java.util.concurrent.CompletableFuture.whenComplete(java.base@11.0.17/CompletableFuture.java:2251)
at 
org.apache.ignite.internal.replicator.ReplicaManager.stopReplicaInternal(ReplicaManager.java:612)
at 
org.apache.ignite.internal.replicator.ReplicaManager.stopReplica(ReplicaManager.java:595)
at 
org.apache.ignite.internal.table.distributed.TableManager.stopPartition(TableManager.java:2413)
at 
org.apache.ignite.internal.table.distributed.TableManager.destroyTableLocally(TableManager.java:1519)
at 
org.apache.ignite.internal.table.distributed.TableManager.lambda$onLwmChanged$22(TableManager.java:807)
at 
org.apache.ignite.internal.table.distributed.TableManager$$Lambda$3174/0x000800ffc040.apply(Unknown
 Source)
at 
java.util.stream.ReferencePipeline$3$1.accept(java.base@11.0.17/ReferencePipeline.java:195)
at 
java.util.ArrayList$ArrayListSpliterator.forEachRemaining(java.base@11.0.17/ArrayList.java:1655)
at 
java.util.stream.AbstractPipeline.copyInto(java.base@11.0.17/AbstractPipeline.java:484)
at 
java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@11.0.17/AbstractPipeline.java:474)
at 
java

[jira] [Updated] (IGNITE-22089) Removal of MVCC benchmarks in Yardstick

2024-05-17 Thread Julia Bakulina (Jira)


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

Julia Bakulina updated IGNITE-22089:

Description: 
To remove MVCC code from Yardstick. Classes to delete:
 - AbstractDistributedMvccBenchmark
 - MvccProcessorBenchmark
 - MvccUpdateContentionBenchmark
 - NativeJavaApiPutRemoveBenchmark

  was:
To remove MVCC code from Yardstick. To delete classes:
 - AbstractDistributedMvccBenchmark
 - MvccProcessorBenchmark
 - MvccUpdateContentionBenchmark
 - NativeJavaApiPutRemoveBenchmark


> Removal of MVCC benchmarks in Yardstick
> ---
>
> Key: IGNITE-22089
> URL: https://issues.apache.org/jira/browse/IGNITE-22089
> Project: Ignite
>  Issue Type: Sub-task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> To remove MVCC code from Yardstick. Classes to delete:
>  - AbstractDistributedMvccBenchmark
>  - MvccProcessorBenchmark
>  - MvccUpdateContentionBenchmark
>  - NativeJavaApiPutRemoveBenchmark



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


[jira] [Created] (IGNITE-22277) Remove Zone annotation from Catalog API

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22277:
---

 Summary: Remove Zone annotation from Catalog API
 Key: IGNITE-22277
 URL: https://issues.apache.org/jira/browse/IGNITE-22277
 Project: Ignite
  Issue Type: Improvement
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2


Zone annotation does not make much sense - it goes on an empty class.



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


[jira] [Created] (IGNITE-22276) Catalog API allows an index without columns

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22276:
---

 Summary: Catalog API allows an index without columns
 Key: IGNITE-22276
 URL: https://issues.apache.org/jira/browse/IGNITE-22276
 Project: Ignite
  Issue Type: Bug
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22276) Catalog API allows an index without columns

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22276:

Description: 
This code produces a SQL parse error:

{code:java}
   var person2Table = ignite.catalog().createTable(
   TableDefinition.builder("Person2")
   .key(PersonKey.class)
   .value(PersonValue.class)
   .index("height", IndexType.DEFAULT)
   .zone("Zone2")
   .build()
   ).execute();
{code}

> Catalog API allows an index without columns
> ---
>
> Key: IGNITE-22276
> URL: https://issues.apache.org/jira/browse/IGNITE-22276
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> This code produces a SQL parse error:
> {code:java}
>var person2Table = ignite.catalog().createTable(
>TableDefinition.builder("Person2")
>.key(PersonKey.class)
>.value(PersonValue.class)
>.index("height", IndexType.DEFAULT)
>.zone("Zone2")
>.build()
>).execute();
> {code}



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


[jira] [Created] (IGNITE-22275) Avoid partition number change

2024-05-17 Thread Kirill Gusakov (Jira)
Kirill Gusakov created IGNITE-22275:
---

 Summary: Avoid partition number change
 Key: IGNITE-22275
 URL: https://issues.apache.org/jira/browse/IGNITE-22275
 Project: Ignite
  Issue Type: Improvement
Reporter: Kirill Gusakov






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


[jira] [Updated] (IGNITE-22274) Remove o.a.i.catalog.Options

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22274:

Description: *org.apache.ignite.catalog.Options* affects generated SQL, but 
it provides no value to the user. SQL is an implementation detail of Catalog 
API.

> Remove o.a.i.catalog.Options
> 
>
> Key: IGNITE-22274
> URL: https://issues.apache.org/jira/browse/IGNITE-22274
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> *org.apache.ignite.catalog.Options* affects generated SQL, but it provides no 
> value to the user. SQL is an implementation detail of Catalog API.



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


[jira] [Created] (IGNITE-22274) Remove o.a.i.catalog.Options

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22274:
---

 Summary: Remove o.a.i.catalog.Options
 Key: IGNITE-22274
 URL: https://issues.apache.org/jira/browse/IGNITE-22274
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Created] (IGNITE-22273) Use PUBLIC as default schema in catalog API

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22273:
---

 Summary: Use PUBLIC as default schema in catalog API
 Key: IGNITE-22273
 URL: https://issues.apache.org/jira/browse/IGNITE-22273
 Project: Ignite
  Issue Type: Improvement
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22272) Rework Catalog API

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22272:

Description: 
* Do not return a Query that has to be executed, run it immediately. For 
example: *Table table = catalog.createTable(Pojo.class)*
* All methods should be async-first
* Rename *create* to *createTable* (recordClass and KV methods)
* all *createTable* methods should return a *Table*. Especially important for 
record and KV cases, where the resulting name is not obvious

  was:
* All methods should be async-first
* Rename *create* to *createTable* (recordClass and KV methods)
* all *createTable* methods should return a *Table*. Especially important for 
record and KV cases, where the resulting name is not obvious


> Rework Catalog API
> --
>
> Key: IGNITE-22272
> URL: https://issues.apache.org/jira/browse/IGNITE-22272
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Critical
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> * Do not return a Query that has to be executed, run it immediately. For 
> example: *Table table = catalog.createTable(Pojo.class)*
> * All methods should be async-first
> * Rename *create* to *createTable* (recordClass and KV methods)
> * all *createTable* methods should return a *Table*. Especially important for 
> record and KV cases, where the resulting name is not obvious



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


[jira] [Updated] (IGNITE-22272) Rework Catalog API

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22272:

Description: 
* All methods should be async-first
* Rename *create* to *createTable* (recordClass and KV methods)
* all *createTable* methods should return a *Table*. Especially important for 
record and KV cases, where the resulting name is not obvious

> Rework Catalog API
> --
>
> Key: IGNITE-22272
> URL: https://issues.apache.org/jira/browse/IGNITE-22272
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Critical
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> * All methods should be async-first
> * Rename *create* to *createTable* (recordClass and KV methods)
> * all *createTable* methods should return a *Table*. Especially important for 
> record and KV cases, where the resulting name is not obvious



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


[jira] [Created] (IGNITE-22272) Rework Catalog API

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22272:
---

 Summary: Rework Catalog API
 Key: IGNITE-22272
 URL: https://issues.apache.org/jira/browse/IGNITE-22272
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


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

2024-05-17 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov commented on IGNITE-15568:


This result doesn't make sense to me as well.

"Old distruptor' (without optimization) should have batches only of size=1

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



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


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

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov edited comment on IGNITE-15568 at 5/17/24 12:27 PM:
--

I think the previous one also has a sense, because it shows we do not degrade 
performance.
I have attached a new one: [^MyInsertBenchmarkWithMetrics.java] 
Here is the result from my laptop:
{code}
Old disruptor

Benchmark (clusterSize)  (fsync)  (partitionCount)  Mode  Cnt   
  Score  Error  Units
InsertBenchmark.kvInsert  1false 2  avgt  200  
6821,523 ± 1190,279  us/op
InsertBenchmark.kvInsert  1 true 2  avgt  200  
8172,433 ±  294,077  us/op

raft.fsmcaller.disruptor.Batch:[
  0_10:29890, 
  10_20:71825, 
  20_30:37548, 
  30_40:9062, 
  40_50:1428, 
  50_inf:2]
raft.logmanager.disruptor.Batch:[
  0_10:32324, 
  10_20:48196, 
  20_30:53466, 
  30_40:8831, 
  40_50:1081, 
  50_inf:26]
raft.nodeimpl.disruptor.Batch:[
  0_10:1804447, 
  10_20:1205, 
  20_30:122, 
  30_40:27, 
  40_50:14, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch:[
  0_10:6, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
  
New disruptor

Benchmark (clusterSize)  (fsync)  (partitionCount)  Mode  Cnt   
  Score Error  Units
InsertBenchmark.kvInsert  1false 2  avgt  200  
7357,067 ± 640,983  us/op
InsertBenchmark.kvInsert  1 true 2  avgt  200  
8015,733 ± 469,096  us/op

raft:
raft.fsmcaller.disruptor.Batch:[
  0_10:177419, 
  10_20:78244, 
  20_30:2549, 
  30_40:8, 
  40_50:0, 
  50_inf:0]
raft.logmanager.disruptor.Batch:[
  0_10:71704, 
  10_20:76075, 
  20_30:26090, 
  30_40:1540, 
  40_50:44, 
  50_inf:0]
raft.nodeimpl.disruptor.Batch:[
  0_10:2283394, 
  10_20:516, 
  20_30:52, 
  30_40:4, 
  40_50:0, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch:[
  0_10:6, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
{code}


was (Author: v.pyatkov):
I think the previous one also has a sense, because it shows we do not degrade 
performance.
I have attached a new one: [^MyInsertBenchmarkWithMetrics.java] 
Here is the result from my laptop:
{code}
Old

Benchmark (clusterSize)  (fsync)  (partitionCount)  Mode  Cnt   
  Score  Error  Units
InsertBenchmark.kvInsert  1false 2  avgt  200  
6821,523 ± 1190,279  us/op
InsertBenchmark.kvInsert  1 true 2  avgt  200  
8172,433 ±  294,077  us/op

raft.fsmcaller.disruptor.Batch:[
  0_10:29890, 
  10_20:71825, 
  20_30:37548, 
  30_40:9062, 
  40_50:1428, 
  50_inf:2]
raft.logmanager.disruptor.Batch:[
  0_10:32324, 
  10_20:48196, 
  20_30:53466, 
  30_40:8831, 
  40_50:1081, 
  50_inf:26]
raft.nodeimpl.disruptor.Batch:[
  0_10:1804447, 
  10_20:1205, 
  20_30:122, 
  30_40:27, 
  40_50:14, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch:[
  0_10:6, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
  
New

Benchmark (clusterSize)  (fsync)  (partitionCount)  Mode  Cnt   
  Score Error  Units
InsertBenchmark.kvInsert  1false 2  avgt  200  
7357,067 ± 640,983  us/op
InsertBenchmark.kvInsert  1 true 2  avgt  200  
8015,733 ± 469,096  us/op

raft:
raft.fsmcaller.disruptor.Batch:[
  0_10:177419, 
  10_20:78244, 
  20_30:2549, 
  30_40:8, 
  40_50:0, 
  50_inf:0]
raft.logmanager.disruptor.Batch:[
  0_10:71704, 
  10_20:76075, 
  20_30:26090, 
  30_40:1540, 
  40_50:44, 
  50_inf:0]
raft.nodeimpl.disruptor.Batch:[
  0_10:2283394, 
  10_20:516, 
  20_30:52, 
  30_40:4, 
  40_50:0, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch:[
  0_10:6, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
{code}

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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 
> an

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

2024-05-17 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-15568:


I think the previous one also has a sense, because it shows we do not degrade 
performance.
I have attached a new one: [^MyInsertBenchmarkWithMetrics.java] 
Here is the result from my laptop:
{code}
Old

Benchmark (clusterSize)  (fsync)  (partitionCount)  Mode  Cnt   
  Score  Error  Units
InsertBenchmark.kvInsert  1false 2  avgt  200  
6821,523 ± 1190,279  us/op
InsertBenchmark.kvInsert  1 true 2  avgt  200  
8172,433 ±  294,077  us/op

raft.fsmcaller.disruptor.Batch:[
  0_10:29890, 
  10_20:71825, 
  20_30:37548, 
  30_40:9062, 
  40_50:1428, 
  50_inf:2]
raft.logmanager.disruptor.Batch:[
  0_10:32324, 
  10_20:48196, 
  20_30:53466, 
  30_40:8831, 
  40_50:1081, 
  50_inf:26]
raft.nodeimpl.disruptor.Batch:[
  0_10:1804447, 
  10_20:1205, 
  20_30:122, 
  30_40:27, 
  40_50:14, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch:[
  0_10:6, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
  
New

Benchmark (clusterSize)  (fsync)  (partitionCount)  Mode  Cnt   
  Score Error  Units
InsertBenchmark.kvInsert  1false 2  avgt  200  
7357,067 ± 640,983  us/op
InsertBenchmark.kvInsert  1 true 2  avgt  200  
8015,733 ± 469,096  us/op

raft:
raft.fsmcaller.disruptor.Batch:[
  0_10:177419, 
  10_20:78244, 
  20_30:2549, 
  30_40:8, 
  40_50:0, 
  50_inf:0]
raft.logmanager.disruptor.Batch:[
  0_10:71704, 
  10_20:76075, 
  20_30:26090, 
  30_40:1540, 
  40_50:44, 
  50_inf:0]
raft.nodeimpl.disruptor.Batch:[
  0_10:2283394, 
  10_20:516, 
  20_30:52, 
  30_40:4, 
  40_50:0, 
  50_inf:0]
raft.readonlyservice.disruptor.Batch:[
  0_10:6, 
  10_20:0, 
  20_30:0, 
  30_40:0, 
  40_50:0, 
  50_inf:0]
{code}

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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 
> 

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

2024-05-17 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:
---
Attachment: MyInsertBenchmarkWithMetrics.java

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java, MyInsertBenchmarkWithMetrics.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



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


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

2024-05-17 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov commented on IGNITE-15568:


Proposed test scenario doesn't make sense to me.

We need at least 2 partitions and one stripe to see benefits from patch 
improvement.

> Striped Disruptor doesn't work with JRaft event handlers properly
> -
>
> Key: IGNITE-15568
> URL: https://issues.apache.org/jira/browse/IGNITE-15568
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3, performance
> Fix For: 3.0.0-beta2
>
> Attachments: InsertBenchmark.java
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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].
>  



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


[jira] [Assigned] (IGNITE-19103) Sql. Change implicit primary key column's type to UUID.

2024-05-17 Thread Maksim Zhuravkov (Jira)


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

Maksim Zhuravkov reassigned IGNITE-19103:
-

Assignee: Maksim Zhuravkov

> Sql. Change implicit primary key column's type to UUID.
> ---
>
> Key: IGNITE-19103
> URL: https://issues.apache.org/jira/browse/IGNITE-19103
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Affects Versions: 3.0.0-beta2
>Reporter: Maksim Zhuravkov
>Assignee: Maksim Zhuravkov
>Priority: Minor
>  Labels: calcite3-required, ignite-3
>
> Change implicit primary key column's type to UUID. Replace calls to 
> gen_random_uuid with calls to rand_uuid,`gen_random_uuid` function should be 
> removed.
> As a part of this ticket update SQL grammar to make it possible to specify 
> function calls (without arguments) in for DEFAULT column values. Because at 
> the moment it looks like some functions that have no arguments can be called 
> with omitted parentheses and that is not the case.



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


[jira] [Commented] (IGNITE-21830) Add logging of connection check for each address

2024-05-17 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-21830:


{panel:title=Branch: [pull/11327/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/11327/head] Base: [master] : New Tests 
(1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#8b}SPI (Discovery){color} [[tests 
1|https://ci2.ignite.apache.org/viewLog.html?buildId=7871363]]
* {color:#013220}IgniteSpiDiscoverySelfTestSuite: 
TcpDiscoveryNetworkIssuesTest.testBackwardConnectionCheckFailedLogMessage - 
PASSED{color}

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

> Add logging of connection check for each address
> 
>
> Key: IGNITE-21830
> URL: https://issues.apache.org/jira/browse/IGNITE-21830
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ilya Shishkov
>Assignee: Maksim Davydov
>Priority: Trivial
>  Labels: ise, newbie
>  Time Spent: 13h 20m
>  Remaining Estimate: 0h
>
> Currently, exception thrown during checking of address is ignored [1]. It 
> would be useful to print message with connection check summary including each 
> address checking state and error message (if any).
> # 
> https://github.com/apache/ignite/blob/7cd0c7a7d1150bbf6be6aae5efe80627a73757c0/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java#L7293



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


[jira] [Updated] (IGNITE-22271) Rename copying overload of Tuple.create to copy

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22271:

Description: 
*copy* is a more suitable name for *static Tuple create(Tuple tuple)*

https://github.com/apache/ignite-3/blob/f6ce1ac450f5597582697adbcd967a7f702252ea/modules/api/src/main/java/org/apache/ignite/table/Tuple.java#L82

> Rename copying overload of Tuple.create to copy
> ---
>
> Key: IGNITE-22271
> URL: https://issues.apache.org/jira/browse/IGNITE-22271
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> *copy* is a more suitable name for *static Tuple create(Tuple tuple)*
> https://github.com/apache/ignite-3/blob/f6ce1ac450f5597582697adbcd967a7f702252ea/modules/api/src/main/java/org/apache/ignite/table/Tuple.java#L82



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


[jira] [Created] (IGNITE-22271) Rename copying overload of Tuple.create to copy

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22271:
---

 Summary: Rename copying overload of Tuple.create to copy
 Key: IGNITE-22271
 URL: https://issues.apache.org/jira/browse/IGNITE-22271
 Project: Ignite
  Issue Type: Improvement
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22269) UnexpectedNullValueException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22269:

Description: *INTERNAL_ERR* does not make sense for 
*UnexpectedNullValueException*  (was: INTERNAL_ERR does not make sense for 
UnexpectedNullValueException)

> UnexpectedNullValueException uses INTERNAL_ERR code
> ---
>
> Key: IGNITE-22269
> URL: https://issues.apache.org/jira/browse/IGNITE-22269
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> *INTERNAL_ERR* does not make sense for *UnexpectedNullValueException*



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


[jira] [Updated] (IGNITE-22270) MarshallerException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22270:

Description: *INTERNAL_ERR* does not make sense for *MarshallerException*  
(was: INTERNAL_ERR does not make sense for MarshallerException)

> MarshallerException uses INTERNAL_ERR code
> --
>
> Key: IGNITE-22270
> URL: https://issues.apache.org/jira/browse/IGNITE-22270
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> *INTERNAL_ERR* does not make sense for *MarshallerException*



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


[jira] [Updated] (IGNITE-22269) UnexpectedNullValueException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22269:

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

> UnexpectedNullValueException uses INTERNAL_ERR code
> ---
>
> Key: IGNITE-22269
> URL: https://issues.apache.org/jira/browse/IGNITE-22269
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> *INTERNAL_ERR* does not make sense for *UnexpectedNullValueException*



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


[jira] [Created] (IGNITE-22270) MarshallerException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22270:
---

 Summary: MarshallerException uses INTERNAL_ERR code
 Key: IGNITE-22270
 URL: https://issues.apache.org/jira/browse/IGNITE-22270
 Project: Ignite
  Issue Type: Bug
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2


INTERNAL_ERR does not make sense for UnexpectedNullValueException



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


[jira] [Updated] (IGNITE-22269) UnexpectedNullValueException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22269:

Description: INTERNAL_ERR does not make sense for 

> UnexpectedNullValueException uses INTERNAL_ERR code
> ---
>
> Key: IGNITE-22269
> URL: https://issues.apache.org/jira/browse/IGNITE-22269
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> INTERNAL_ERR does not make sense for 



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


[jira] [Updated] (IGNITE-22270) MarshallerException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22270:

Description: INTERNAL_ERR does not make sense for MarshallerException  
(was: INTERNAL_ERR does not make sense for UnexpectedNullValueException)

> MarshallerException uses INTERNAL_ERR code
> --
>
> Key: IGNITE-22270
> URL: https://issues.apache.org/jira/browse/IGNITE-22270
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> INTERNAL_ERR does not make sense for MarshallerException



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


[jira] [Updated] (IGNITE-22270) MarshallerException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22270:

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

> MarshallerException uses INTERNAL_ERR code
> --
>
> Key: IGNITE-22270
> URL: https://issues.apache.org/jira/browse/IGNITE-22270
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> INTERNAL_ERR does not make sense for UnexpectedNullValueException



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


[jira] [Created] (IGNITE-22269) UnexpectedNullValueException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22269:
---

 Summary: UnexpectedNullValueException uses INTERNAL_ERR code
 Key: IGNITE-22269
 URL: https://issues.apache.org/jira/browse/IGNITE-22269
 Project: Ignite
  Issue Type: Bug
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22269) UnexpectedNullValueException uses INTERNAL_ERR code

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22269:

Description: INTERNAL_ERR does not make sense for 
UnexpectedNullValueException  (was: INTERNAL_ERR does not make sense for )

> UnexpectedNullValueException uses INTERNAL_ERR code
> ---
>
> Key: IGNITE-22269
> URL: https://issues.apache.org/jira/browse/IGNITE-22269
> Project: Ignite
>  Issue Type: Bug
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> INTERNAL_ERR does not make sense for UnexpectedNullValueException



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


[jira] [Updated] (IGNITE-22267) Improve Table API javadocs

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22267:

Description: 
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.
4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
implicit transaction"
5. Remove "@throws IgniteException If an unspecified platform exception has 
occurred internally", it is not useful

  was:
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.
4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
implicit transaction"


> Improve Table API javadocs
> --
>
> Key: IGNITE-22267
> URL: https://issues.apache.org/jira/browse/IGNITE-22267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. Remove "started table" term, "table" is enough
> 2. Remove "binary object" mentions
> 3. Explain how KV view "splits" row data in two parts. It does not actually 
> operate on separate keys and values.
> 4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
> implicit transaction"
> 5. Remove "@throws IgniteException If an unspecified platform exception has 
> occurred internally", it is not useful



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


[jira] [Created] (IGNITE-22268) Add checkstyle rule for package names

2024-05-17 Thread Vadim Pakhnushev (Jira)
Vadim Pakhnushev created IGNITE-22268:
-

 Summary: Add checkstyle rule for package names
 Key: IGNITE-22268
 URL: https://issues.apache.org/jira/browse/IGNITE-22268
 Project: Ignite
  Issue Type: Bug
Reporter: Vadim Pakhnushev
Assignee: Vadim Pakhnushev


We should check that the package name corresponds to the directory.



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


[jira] [Updated] (IGNITE-22267) Improve Table API javadocs

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22267:

Description: 
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.
4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
implicit transaction"
5. Remove "@throws IgniteException If an unspecified platform exception has 
occurred internally", it is not useful
6. Declare order of tables in *tables()* and *tablesAsync()*

  was:
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.
4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
implicit transaction"
5. Remove "@throws IgniteException If an unspecified platform exception has 
occurred internally", it is not useful


> Improve Table API javadocs
> --
>
> Key: IGNITE-22267
> URL: https://issues.apache.org/jira/browse/IGNITE-22267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. Remove "started table" term, "table" is enough
> 2. Remove "binary object" mentions
> 3. Explain how KV view "splits" row data in two parts. It does not actually 
> operate on separate keys and values.
> 4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
> implicit transaction"
> 5. Remove "@throws IgniteException If an unspecified platform exception has 
> occurred internally", it is not useful
> 6. Declare order of tables in *tables()* and *tablesAsync()*



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


[jira] [Updated] (IGNITE-22267) Improve Table API javadocs

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22267:

Description: 
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.
4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
implicit transaction"

  was:
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.
4. Replace "Transaction or {@code null} to auto-commit" with "Transaction or 
{@code null} for implicit transaction"


> Improve Table API javadocs
> --
>
> Key: IGNITE-22267
> URL: https://issues.apache.org/jira/browse/IGNITE-22267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. Remove "started table" term, "table" is enough
> 2. Remove "binary object" mentions
> 3. Explain how KV view "splits" row data in two parts. It does not actually 
> operate on separate keys and values.
> 4. Replace "Transaction or null to auto-commit" with "Transaction or null for 
> implicit transaction"



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


[jira] [Updated] (IGNITE-22267) Improve Table API javadocs

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22267:

Description: 
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.
4. Replace "Transaction or {@code null} to auto-commit" with "Transaction or 
{@code null} for implicit transaction"

  was:
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.


> Improve Table API javadocs
> --
>
> Key: IGNITE-22267
> URL: https://issues.apache.org/jira/browse/IGNITE-22267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. Remove "started table" term, "table" is enough
> 2. Remove "binary object" mentions
> 3. Explain how KV view "splits" row data in two parts. It does not actually 
> operate on separate keys and values.
> 4. Replace "Transaction or {@code null} to auto-commit" with "Transaction or 
> {@code null} for implicit transaction"



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


[jira] [Updated] (IGNITE-22267) Improve Table API javadocs

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22267:

Description: 
1. Remove "started table" term, "table" is enough
2. Remove "binary object" mentions
3. Explain how KV view "splits" row data in two parts. It does not actually 
operate on separate keys and values.

> Improve Table API javadocs
> --
>
> Key: IGNITE-22267
> URL: https://issues.apache.org/jira/browse/IGNITE-22267
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. Remove "started table" term, "table" is enough
> 2. Remove "binary object" mentions
> 3. Explain how KV view "splits" row data in two parts. It does not actually 
> operate on separate keys and values.



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


[jira] [Created] (IGNITE-22267) Improve Table API javadocs

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22267:
---

 Summary: Improve Table API javadocs
 Key: IGNITE-22267
 URL: https://issues.apache.org/jira/browse/IGNITE-22267
 Project: Ignite
  Issue Type: Improvement
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22266) Move IgniteTables to org.apache.ignite.table package

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22266:

Description: IgniteTables is in it's own *manager* package which is weird 
and inconsistent with other top-level APIs (compute, sql, tx, ...). Move it up 
to *o.a.i.table*.  (was: IgniteTables is in it's own *manager* package which is 
weird and inconsistent with other top-level APIs (compute, tx, etc))

> Move IgniteTables to org.apache.ignite.table package
> 
>
> Key: IGNITE-22266
> URL: https://issues.apache.org/jira/browse/IGNITE-22266
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> IgniteTables is in it's own *manager* package which is weird and inconsistent 
> with other top-level APIs (compute, sql, tx, ...). Move it up to 
> *o.a.i.table*.



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


[jira] [Updated] (IGNITE-22266) Move IgniteTables to org.apache.ignite.table package

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22266:

Description: IgniteTables is in it's own *manager* package which is weird 
and inconsistent with other top-level APIs (compute, tx, etc)

> Move IgniteTables to org.apache.ignite.table package
> 
>
> Key: IGNITE-22266
> URL: https://issues.apache.org/jira/browse/IGNITE-22266
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> IgniteTables is in it's own *manager* package which is weird and inconsistent 
> with other top-level APIs (compute, tx, etc)



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


[jira] [Created] (IGNITE-22266) Move IgniteTables to org.apache.ignite.table package

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22266:
---

 Summary: Move IgniteTables to org.apache.ignite.table package
 Key: IGNITE-22266
 URL: https://issues.apache.org/jira/browse/IGNITE-22266
 Project: Ignite
  Issue Type: Improvement
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22265:

Description: 
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. Document isolation level and behavior
4. Document optimistic/pessimistic behavior, deadlocks, conflicts
5. javadoc for {{ T runInTransaction}} is copypasted

  was:
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. Document isolation level and behavior
4. Document optimistic/pessimistic behavior
5. javadoc for {{ T runInTransaction}} is copypasted


> Improve IgniteTransactions javadoc
> --
>
> Key: IGNITE-22265
> URL: https://issues.apache.org/jira/browse/IGNITE-22265
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. "Begins an asynchronous transaction." -> "Begins a transaction 
> asynchronously"
> 2. "Take care then using the asynchronous operations inside the closure..." 
> uses an incorrect example first.
>   * Show the correct one first
>   * Make it very clear that the incorrect one is not to be used
> 3. Document isolation level and behavior
> 4. Document optimistic/pessimistic behavior, deadlocks, conflicts
> 5. javadoc for {{ T runInTransaction}} is copypasted



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


[jira] [Updated] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22265:

Description: 
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. Document isolation level and behavior
4. Document optimistic/pessimistic behavior, deadlocks, conflicts
5. javadoc for * T runInTransaction* is copypasted

  was:
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. Document isolation level and behavior
4. Document optimistic/pessimistic behavior, deadlocks, conflicts
5. javadoc for {{ T runInTransaction}} is copypasted


> Improve IgniteTransactions javadoc
> --
>
> Key: IGNITE-22265
> URL: https://issues.apache.org/jira/browse/IGNITE-22265
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. "Begins an asynchronous transaction." -> "Begins a transaction 
> asynchronously"
> 2. "Take care then using the asynchronous operations inside the closure..." 
> uses an incorrect example first.
>   * Show the correct one first
>   * Make it very clear that the incorrect one is not to be used
> 3. Document isolation level and behavior
> 4. Document optimistic/pessimistic behavior, deadlocks, conflicts
> 5. javadoc for * T runInTransaction* is copypasted



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


[jira] [Updated] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22265:

Description: 
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. Document isolation level and behavior
4. Document optimistic/pessimistic behavior
5. javadoc for {{ T runInTransaction}} is copypasted

  was:
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. Document isolation level and behavior
4. Document optimistic/pessimistic behavior


> Improve IgniteTransactions javadoc
> --
>
> Key: IGNITE-22265
> URL: https://issues.apache.org/jira/browse/IGNITE-22265
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. "Begins an asynchronous transaction." -> "Begins a transaction 
> asynchronously"
> 2. "Take care then using the asynchronous operations inside the closure..." 
> uses an incorrect example first.
>   * Show the correct one first
>   * Make it very clear that the incorrect one is not to be used
> 3. Document isolation level and behavior
> 4. Document optimistic/pessimistic behavior
> 5. javadoc for {{ T runInTransaction}} is copypasted



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


[jira] [Updated] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22265:

Description: 
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. Document isolation level and behavior
4. Document optimistic/pessimistic behavior

  was:
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. tbd


> Improve IgniteTransactions javadoc
> --
>
> Key: IGNITE-22265
> URL: https://issues.apache.org/jira/browse/IGNITE-22265
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. "Begins an asynchronous transaction." -> "Begins a transaction 
> asynchronously"
> 2. "Take care then using the asynchronous operations inside the closure..." 
> uses an incorrect example first.
>   * Show the correct one first
>   * Make it very clear that the incorrect one is not to be used
> 3. Document isolation level and behavior
> 4. Document optimistic/pessimistic behavior



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


[jira] [Updated] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22265:

Description: 
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used
3. tbd

  was:
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used


> Improve IgniteTransactions javadoc
> --
>
> Key: IGNITE-22265
> URL: https://issues.apache.org/jira/browse/IGNITE-22265
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. "Begins an asynchronous transaction." -> "Begins a transaction 
> asynchronously"
> 2. "Take care then using the asynchronous operations inside the closure..." 
> uses an incorrect example first.
>   * Show the correct one first
>   * Make it very clear that the incorrect one is not to be used
> 3. tbd



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


[jira] [Updated] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22265:

Description: 
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

3. tbd

  was:
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used
3. tbd


> Improve IgniteTransactions javadoc
> --
>
> Key: IGNITE-22265
> URL: https://issues.apache.org/jira/browse/IGNITE-22265
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. "Begins an asynchronous transaction." -> "Begins a transaction 
> asynchronously"
> 2. "Take care then using the asynchronous operations inside the closure..." 
> uses an incorrect example first.
>   * Show the correct one first
>   * Make it very clear that the incorrect one is not to be used
> 3. tbd



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


[jira] [Updated] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22265:

Description: 
1. "Begins an asynchronous transaction." -> "Begins a transaction 
asynchronously"
2. "Take care then using the asynchronous operations inside the closure..." 
uses an incorrect example first.
  * Show the correct one first
  * Make it very clear that the incorrect one is not to be used

> Improve IgniteTransactions javadoc
> --
>
> Key: IGNITE-22265
> URL: https://issues.apache.org/jira/browse/IGNITE-22265
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> 1. "Begins an asynchronous transaction." -> "Begins a transaction 
> asynchronously"
> 2. "Take care then using the asynchronous operations inside the closure..." 
> uses an incorrect example first.
>   * Show the correct one first
>   * Make it very clear that the incorrect one is not to be used



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


[jira] [Created] (IGNITE-22265) Improve IgniteTransactions javadoc

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22265:
---

 Summary: Improve IgniteTransactions javadoc
 Key: IGNITE-22265
 URL: https://issues.apache.org/jira/browse/IGNITE-22265
 Project: Ignite
  Issue Type: Improvement
Affects Versions: 3.0.0-beta1
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22264) Startup instructions in examples are outdated

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22264:

Description: 
Verify startup instructions (at the top of every example), make sure they work 
with upcoming Ignite beta2.
https://github.com/apache/ignite-3/tree/main/examples/src/main/java/org/apache/ignite/example

  was:Verify startup instructions (at the top of every example), make sure they 
work with upcoming Ignite beta2.


> Startup instructions in examples are outdated
> -
>
> Key: IGNITE-22264
> URL: https://issues.apache.org/jira/browse/IGNITE-22264
> Project: Ignite
>  Issue Type: Bug
>  Components: examples
>Reporter: Pavel Tupitsyn
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Verify startup instructions (at the top of every example), make sure they 
> work with upcoming Ignite beta2.
> https://github.com/apache/ignite-3/tree/main/examples/src/main/java/org/apache/ignite/example



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


[jira] [Created] (IGNITE-22264) Startup instructions in examples are outdated

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22264:
---

 Summary: Startup instructions in examples are outdated
 Key: IGNITE-22264
 URL: https://issues.apache.org/jira/browse/IGNITE-22264
 Project: Ignite
  Issue Type: Bug
  Components: examples
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2


Verify startup instructions (at the top of every example), make sure they work 
with upcoming Ignite beta2.



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


[jira] [Assigned] (IGNITE-22263) Sql. Avoid starting transaction for KV operation

2024-05-17 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov reassigned IGNITE-22263:
-

Assignee: Konstantin Orlov

> Sql. Avoid starting transaction for KV operation
> 
>
> Key: IGNITE-22263
> URL: https://issues.apache.org/jira/browse/IGNITE-22263
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Konstantin Orlov
>Assignee: Konstantin Orlov
>Priority: Major
>  Labels: ignite-3
>
> Currently, performance of KV put operation via SQL API is ~2 times worse than 
> via KeyValueView API:
> {code:java}
> Benchmark  (clusterSize)  Mode  CntScore   Error  Units
> InsertBenchmark.kvInsert   1  avgt   20   67.154 ± 4.266  us/op
> InsertBenchmark.sqlInsert  1  avgt   20  149.900 ± 9.679  us/op
> // these numbers acquired on MBP M3, commit c25f9fda.
> {code}
> This is caused by the fact that sql engine starts transaction explicitly if 
> one was not provided by the user, thus not taking an advantage of single 
> phase commit optimisation which is available for implicit transactions which 
> touch only one partition.
> We can address the issue by postponing the moment of starting a transaction 
> till execution phase. This will help to avoid starting an explicit 
> transaction for simple KV cases.



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


[jira] [Created] (IGNITE-22263) Sql. Avoid starting transaction for KV operation

2024-05-17 Thread Konstantin Orlov (Jira)
Konstantin Orlov created IGNITE-22263:
-

 Summary: Sql. Avoid starting transaction for KV operation
 Key: IGNITE-22263
 URL: https://issues.apache.org/jira/browse/IGNITE-22263
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Konstantin Orlov


Currently, performance of KV put operation via SQL API is ~2 times worse than 
via KeyValueView API:
{code:java}
Benchmark  (clusterSize)  Mode  CntScore   Error  Units
InsertBenchmark.kvInsert   1  avgt   20   67.154 ± 4.266  us/op
InsertBenchmark.sqlInsert  1  avgt   20  149.900 ± 9.679  us/op

// these numbers acquired on MBP M3, commit c25f9fda.
{code}

This is caused by the fact that sql engine starts transaction explicitly if one 
was not provided by the user, thus not taking an advantage of single phase 
commit optimisation which is available for implicit transactions which touch 
only one partition.

We can address the issue by postponing the moment of starting a transaction 
till execution phase. This will help to avoid starting an explicit transaction 
for simple KV cases.



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


[jira] [Updated] (IGNITE-22089) Removal of MVCC benchmarks in Yardstick

2024-05-17 Thread Julia Bakulina (Jira)


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

Julia Bakulina updated IGNITE-22089:

Description: 
To remove MVCC code from Yardstick. To delete classes:
 - AbstractDistributedMvccBenchmark
 - MvccProcessorBenchmark
 - MvccUpdateContentionBenchmark
 - NativeJavaApiPutRemoveBenchmark

  was:
To remove MVCC code from Yardstick. To delete classes:

- AbstractDistributedMvccBenchmark
- MvccProcessorBenchmark
- MvccUpdateContentionBenchmark


> Removal of MVCC benchmarks in Yardstick
> ---
>
> Key: IGNITE-22089
> URL: https://issues.apache.org/jira/browse/IGNITE-22089
> Project: Ignite
>  Issue Type: Sub-task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> To remove MVCC code from Yardstick. To delete classes:
>  - AbstractDistributedMvccBenchmark
>  - MvccProcessorBenchmark
>  - MvccUpdateContentionBenchmark
>  - NativeJavaApiPutRemoveBenchmark



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


[jira] [Updated] (IGNITE-22089) Removal of MVCC benchmarks in Yardstick

2024-05-17 Thread Julia Bakulina (Jira)


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

Julia Bakulina updated IGNITE-22089:

Description: 
To remove MVCC code from Yardstick. To delete classes:

- AbstractDistributedMvccBenchmark
- MvccProcessorBenchmark
- MvccUpdateContentionBenchmark

  was:
AbstractDistributedMvccBenchmark
MvccProcessorBenchmark
MvccUpdateContentionBenchmark


> Removal of MVCC benchmarks in Yardstick
> ---
>
> Key: IGNITE-22089
> URL: https://issues.apache.org/jira/browse/IGNITE-22089
> Project: Ignite
>  Issue Type: Sub-task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> To remove MVCC code from Yardstick. To delete classes:
> - AbstractDistributedMvccBenchmark
> - MvccProcessorBenchmark
> - MvccUpdateContentionBenchmark



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


[jira] [Commented] (IGNITE-22089) Removal of MVCC benchmarks in Yardstick

2024-05-17 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-22089:


{panel:title=Branch: [pull/11345/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/11345/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=7871915&buildTypeId=IgniteTests24Java8_RunAll]

> Removal of MVCC benchmarks in Yardstick
> ---
>
> Key: IGNITE-22089
> URL: https://issues.apache.org/jira/browse/IGNITE-22089
> Project: Ignite
>  Issue Type: Sub-task
>  Components: mvcc
>Reporter: Ilya Shishkov
>Assignee: Julia Bakulina
>Priority: Minor
>  Labels: ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> AbstractDistributedMvccBenchmark
> MvccProcessorBenchmark
> MvccUpdateContentionBenchmark



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


[jira] [Created] (IGNITE-22262) Startup instructions missing in SqlApiExample

2024-05-17 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-22262:
---

 Summary: Startup instructions missing in SqlApiExample
 Key: IGNITE-22262
 URL: https://issues.apache.org/jira/browse/IGNITE-22262
 Project: Ignite
  Issue Type: Bug
  Components: examples
Reporter: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Updated] (IGNITE-22262) Startup instructions missing in SqlApiExample

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22262:

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

> Startup instructions missing in SqlApiExample
> -
>
> Key: IGNITE-22262
> URL: https://issues.apache.org/jira/browse/IGNITE-22262
> Project: Ignite
>  Issue Type: Bug
>  Components: examples
>Reporter: Pavel Tupitsyn
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>




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


[jira] [Updated] (IGNITE-22262) Startup instructions missing in SqlApiExample

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22262:

Priority: Minor  (was: Major)

> Startup instructions missing in SqlApiExample
> -
>
> Key: IGNITE-22262
> URL: https://issues.apache.org/jira/browse/IGNITE-22262
> Project: Ignite
>  Issue Type: Bug
>  Components: examples
>Reporter: Pavel Tupitsyn
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>




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


[jira] [Updated] (IGNITE-22262) Startup instructions missing in SqlApiExample

2024-05-17 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-22262:

Description: 
* Standard header with node start instructions is missing.
* The example fails if you run it as is (without starting a properly configured 
node)

> Startup instructions missing in SqlApiExample
> -
>
> Key: IGNITE-22262
> URL: https://issues.apache.org/jira/browse/IGNITE-22262
> Project: Ignite
>  Issue Type: Bug
>  Components: examples
>Reporter: Pavel Tupitsyn
>Priority: Minor
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> * Standard header with node start instructions is missing.
> * The example fails if you run it as is (without starting a properly 
> configured node)



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


[jira] [Updated] (IGNITE-22261) Deadlock on configuration application in NodeImpl when disruptors are full

2024-05-17 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-22261:
---
Description: 
# NodeImpl#executeApplyingTasks() takes NodeImpl.writeLock and calls 
LogManager.appendEntries()
 # LogManager tries to enqueue a task to diskQueue which is full, hence it 
blocks until a task gets consumed from diskQueue
 # diskQueue is consumed by StableClosureEventHandler
 # StableClosureEventHandler tries to enqueue a task to 
FSMCallerImpl#taskQueue, which is also full, so this also blocks until a task 
gets consumed from FSMCallerImpl#taskQueue
 # FSMCallerImpl#taskQueue is consumed by ApplyTaskHandler
 # ApplyTaskHandler calls NodeImpl#onConfigurationChangeDone(), which tries to 
take NodeImpl#writeLock

As a result, there is a deadlock: 
NodeImpl#writeLock->LogManager#diskQueue->FSMCallerImpl#taskQueue->NodeImpl#writeLock
 (disruptors are used as blocking queues in JRaft, so, when full, they act like 
locks).

This was caught by ItNodeTest#testNodeTaskOverload() which uses extremely short 
disruptors (2 items max each).

  was:
# NodeImpl#executeApplyingTasks() takes NodeImpl.writeLock and calls 
LogManager.appendEntries()
 # LogManager tries to enqueue a task to diskQueue which is full, hence it 
blocks until a task gets consumed from diskQueue
 # diskQueue is consumed by StableClosureEventHandler
 # StableClosureEventHandler tries to enqueue a task to 
FSMCallerImpl#taskQueue, which is also full, so this also blocks until a task 
gets consumed from FSMCallerImpl#taskQueue
 # FSMCallerImpl#taskQueue is consumed by ApplyTaskHandler
 # ApplyTaskHandler calls NodeImpl#onConfigurationChangeDone(), which tries to 
take NodeImpl#writeLock

As a result, there is a deadlock: 
NodeImpl#writeLock->LogManager#diskQueue->FSMCallerImpl#taskQueue->NodeImpl#writeLock
 (disruptors are used as blocking queues in JRaft, so, when full, they act like 
locks).


> Deadlock on configuration application in NodeImpl when disruptors are full
> --
>
> Key: IGNITE-22261
> URL: https://issues.apache.org/jira/browse/IGNITE-22261
> Project: Ignite
>  Issue Type: Bug
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
>
> # NodeImpl#executeApplyingTasks() takes NodeImpl.writeLock and calls 
> LogManager.appendEntries()
>  # LogManager tries to enqueue a task to diskQueue which is full, hence it 
> blocks until a task gets consumed from diskQueue
>  # diskQueue is consumed by StableClosureEventHandler
>  # StableClosureEventHandler tries to enqueue a task to 
> FSMCallerImpl#taskQueue, which is also full, so this also blocks until a task 
> gets consumed from FSMCallerImpl#taskQueue
>  # FSMCallerImpl#taskQueue is consumed by ApplyTaskHandler
>  # ApplyTaskHandler calls NodeImpl#onConfigurationChangeDone(), which tries 
> to take NodeImpl#writeLock
> As a result, there is a deadlock: 
> NodeImpl#writeLock->LogManager#diskQueue->FSMCallerImpl#taskQueue->NodeImpl#writeLock
>  (disruptors are used as blocking queues in JRaft, so, when full, they act 
> like locks).
> This was caught by ItNodeTest#testNodeTaskOverload() which uses extremely 
> short disruptors (2 items max each).



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


[jira] [Updated] (IGNITE-22261) Deadlock on configuration application in NodeImpl when disruptors are full

2024-05-17 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-22261:
---
Description: 
# NodeImpl#executeApplyingTasks() takes NodeImpl.writeLock and calls 
LogManager.appendEntries()
 # LogManager tries to enqueue a task to diskQueue which is full, hence it 
blocks until a task gets consumed from diskQueue
 # diskQueue is consumed by StableClosureEventHandler
 # StableClosureEventHandler tries to enqueue a task to 
FSMCallerImpl#taskQueue, which is also full, so this also blocks until a task 
gets consumed from FSMCallerImpl#taskQueue
 # FSMCallerImpl#taskQueue is consumed by ApplyTaskHandler
 # ApplyTaskHandler calls NodeImpl#onConfigurationChangeDone(), which tries to 
take NodeImpl#writeLock

As a result, there is a deadlock: 
NodeImpl#writeLock->LogManager#diskQueue->FSMCallerImpl#taskQueue->NodeImpl#writeLock
 (disruptors are used as blocking queues in JRaft, so, when full, they act like 
locks).

> Deadlock on configuration application in NodeImpl when disruptors are full
> --
>
> Key: IGNITE-22261
> URL: https://issues.apache.org/jira/browse/IGNITE-22261
> Project: Ignite
>  Issue Type: Bug
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
>
> # NodeImpl#executeApplyingTasks() takes NodeImpl.writeLock and calls 
> LogManager.appendEntries()
>  # LogManager tries to enqueue a task to diskQueue which is full, hence it 
> blocks until a task gets consumed from diskQueue
>  # diskQueue is consumed by StableClosureEventHandler
>  # StableClosureEventHandler tries to enqueue a task to 
> FSMCallerImpl#taskQueue, which is also full, so this also blocks until a task 
> gets consumed from FSMCallerImpl#taskQueue
>  # FSMCallerImpl#taskQueue is consumed by ApplyTaskHandler
>  # ApplyTaskHandler calls NodeImpl#onConfigurationChangeDone(), which tries 
> to take NodeImpl#writeLock
> As a result, there is a deadlock: 
> NodeImpl#writeLock->LogManager#diskQueue->FSMCallerImpl#taskQueue->NodeImpl#writeLock
>  (disruptors are used as blocking queues in JRaft, so, when full, they act 
> like locks).



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


[jira] [Created] (IGNITE-22261) Deadlock on configuration application in NodeImpl when disruptors are full

2024-05-17 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-22261:
--

 Summary: Deadlock on configuration application in NodeImpl when 
disruptors are full
 Key: IGNITE-22261
 URL: https://issues.apache.org/jira/browse/IGNITE-22261
 Project: Ignite
  Issue Type: Bug
Reporter: Roman Puchkovskiy






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


[jira] [Assigned] (IGNITE-21466) Add metrics for partition states

2024-05-17 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko reassigned IGNITE-21466:


Assignee: Kirill Tkalenko  (was: Ivan Bessonov)

> Add metrics for partition states
> 
>
> Key: IGNITE-21466
> URL: https://issues.apache.org/jira/browse/IGNITE-21466
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
>




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


[jira] [Commented] (IGNITE-21445) IndexQuery ignores pageSize if setLocal=true is set

2024-05-17 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-21445:


{panel:title=Branch: [pull/11317/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/11317/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=7872521&buildTypeId=IgniteTests24Java8_RunAll]

> IndexQuery ignores pageSize if setLocal=true is set
> ---
>
> Key: IGNITE-21445
> URL: https://issues.apache.org/jira/browse/IGNITE-21445
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.14
>Reporter: Maksim Timonin
>Assignee: Oleg Valuyskiy
>Priority: Major
>  Labels: ise
>  Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> In 2.14, see GridCacheQueryManager#runQuery:L1323
> If query is local it just collects all possible data.
> For ScanQuery this code doesn't work, as it directly uses local 
> scanQueryIterator that returns entry one by one.
> Solution:
>  # Prepare page for iterating
>  # Use the same logic as ScanQuery for local queries.



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


[jira] [Created] (IGNITE-22260) Sql. Unexpected results with CASE query.

2024-05-17 Thread Evgeny Stanilovsky (Jira)
Evgeny Stanilovsky created IGNITE-22260:
---

 Summary: Sql. Unexpected results with CASE query.
 Key: IGNITE-22260
 URL: https://issues.apache.org/jira/browse/IGNITE-22260
 Project: Ignite
  Issue Type: Bug
  Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Evgeny Stanilovsky
 Fix For: 3.0.0-beta2



{noformat}
@Test
@WithSystemProperty(key = "IMPLICIT_PK_ENABLED", value = "true")
public void test0() {
sql("CREATE TABLE tbl_ProductSales (ColID int, Product_Category  
varchar(64), Product_Name  varchar(64), TotalSales int);");
sql("CREATE TABLE another_T (col1 INT, col2 INT, col3 INT, col4 INT, 
col5 INT, col6 INT, col7 INT, col8 INT);");
sql("INSERT INTO tbl_ProductSales VALUES (1,'Game','Mobo 
Game',200),(2,'Game','PKO 
Game',400),(3,'Fashion','Shirt',500),(4,'Fashion','Shorts',100);");
sql("INSERT INTO another_T VALUES (1,2,3,4,5,6,7,8), 
(11,22,33,44,55,66,77,88), (111,222,333,444,555,666,777,888), 
(,,,,,,,);");
List> res = sql(
"SSELECT CASE WHEN 1 IN (SELECT MAX(col7) UNION ALL (SELECT 
MIN(ColID) FROM tbl_ProductSales INNER JOIN another_T t2 ON t2.col5 = t2.col1)) 
THEN 2 ELSE NULL END FROM another_T t1;");

res.get(0);
}
{noformat}


{noformat}
expected=[[null]], actual=[[null], [null], [null], [null]]]
{noformat}


this statement is a part of:
test_grouped_correlated_subquery.test_ignore



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


[jira] [Updated] (IGNITE-22260) Sql. Unexpected results with CASE query.

2024-05-17 Thread Evgeny Stanilovsky (Jira)


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

Evgeny Stanilovsky updated IGNITE-22260:

Description: 
{noformat}
@Test
@WithSystemProperty(key = "IMPLICIT_PK_ENABLED", value = "true")
public void test0() {
sql("CREATE TABLE tbl_ProductSales (ColID int, Product_Category  
varchar(64), Product_Name  varchar(64), TotalSales int);");
sql("CREATE TABLE another_T (col1 INT, col2 INT, col3 INT, col4 INT, 
col5 INT, col6 INT, col7 INT, col8 INT);");
sql("INSERT INTO tbl_ProductSales VALUES (1,'Game','Mobo 
Game',200),(2,'Game','PKO 
Game',400),(3,'Fashion','Shirt',500),(4,'Fashion','Shorts',100);");
sql("INSERT INTO another_T VALUES (1,2,3,4,5,6,7,8), 
(11,22,33,44,55,66,77,88), (111,222,333,444,555,666,777,888), 
(,,,,,,,);");
List> res = sql(
"SELECT CASE WHEN 1 IN (SELECT MAX(col7) UNION ALL (SELECT 
MIN(ColID) FROM tbl_ProductSales INNER JOIN another_T t2 ON t2.col5 = t2.col1)) 
THEN 2 ELSE NULL END FROM another_T t1;");

res.get(0);
}
{noformat}


{noformat}
expected=[[null]], actual=[[null], [null], [null], [null]]]
{noformat}


this statement is a part of:
test_grouped_correlated_subquery.test_ignore

  was:

{noformat}
@Test
@WithSystemProperty(key = "IMPLICIT_PK_ENABLED", value = "true")
public void test0() {
sql("CREATE TABLE tbl_ProductSales (ColID int, Product_Category  
varchar(64), Product_Name  varchar(64), TotalSales int);");
sql("CREATE TABLE another_T (col1 INT, col2 INT, col3 INT, col4 INT, 
col5 INT, col6 INT, col7 INT, col8 INT);");
sql("INSERT INTO tbl_ProductSales VALUES (1,'Game','Mobo 
Game',200),(2,'Game','PKO 
Game',400),(3,'Fashion','Shirt',500),(4,'Fashion','Shorts',100);");
sql("INSERT INTO another_T VALUES (1,2,3,4,5,6,7,8), 
(11,22,33,44,55,66,77,88), (111,222,333,444,555,666,777,888), 
(,,,,,,,);");
List> res = sql(
"SSELECT CASE WHEN 1 IN (SELECT MAX(col7) UNION ALL (SELECT 
MIN(ColID) FROM tbl_ProductSales INNER JOIN another_T t2 ON t2.col5 = t2.col1)) 
THEN 2 ELSE NULL END FROM another_T t1;");

res.get(0);
}
{noformat}


{noformat}
expected=[[null]], actual=[[null], [null], [null], [null]]]
{noformat}


this statement is a part of:
test_grouped_correlated_subquery.test_ignore


> Sql. Unexpected results with CASE query.
> 
>
> Key: IGNITE-22260
> URL: https://issues.apache.org/jira/browse/IGNITE-22260
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Evgeny Stanilovsky
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> {noformat}
> @Test
> @WithSystemProperty(key = "IMPLICIT_PK_ENABLED", value = "true")
> public void test0() {
> sql("CREATE TABLE tbl_ProductSales (ColID int, Product_Category  
> varchar(64), Product_Name  varchar(64), TotalSales int);");
> sql("CREATE TABLE another_T (col1 INT, col2 INT, col3 INT, col4 INT, 
> col5 INT, col6 INT, col7 INT, col8 INT);");
> sql("INSERT INTO tbl_ProductSales VALUES (1,'Game','Mobo 
> Game',200),(2,'Game','PKO 
> Game',400),(3,'Fashion','Shirt',500),(4,'Fashion','Shorts',100);");
> sql("INSERT INTO another_T VALUES (1,2,3,4,5,6,7,8), 
> (11,22,33,44,55,66,77,88), (111,222,333,444,555,666,777,888), 
> (,,,,,,,);");
> List> res = sql(
> "SELECT CASE WHEN 1 IN (SELECT MAX(col7) UNION ALL (SELECT 
> MIN(ColID) FROM tbl_ProductSales INNER JOIN another_T t2 ON t2.col5 = 
> t2.col1)) THEN 2 ELSE NULL END FROM another_T t1;");
> res.get(0);
> }
> {noformat}
> {noformat}
> expected=[[null]], actual=[[null], [null], [null], [null]]]
> {noformat}
> this statement is a part of:
> test_grouped_correlated_subquery.test_ignore



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