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)