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

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

First event is delivered to group 1 with endOfBatch=false, so it's cached in 
org.apache.ignite.raft.jraft.core.NodeImpl.LogEntryAndClosureHandler#tasks and 
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

.

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

First event is delivered to group 1 with endOfBatch=false, so it's cached in 
org.apache.ignite.raft.jraft.core.NodeImpl.LogEntryAndClosureHandler#tasks and 
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 ignore disruptor event batching and process each 
event as soon as it is received.


> Striped Disruptror 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
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-alpha3
>
>
> 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 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
> .



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to