Alexey Scherbakov created IGNITE-15568:
------------------------------------------

             Summary: 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
             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 ignore disruptor event batching and process each 
event as soon as it is received.



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

Reply via email to