You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "jweinste (JIRA)" <ji...@apache.org> on 2015/12/21 17:18:46 UTC

[jira] [Created] (FLUME-2862) KafkaChannel rollback can reorder events

jweinste created FLUME-2862:
-------------------------------

             Summary: KafkaChannel rollback can reorder events
                 Key: FLUME-2862
                 URL: https://issues.apache.org/jira/browse/FLUME-2862
             Project: Flume
          Issue Type: Bug
          Components: Channel
            Reporter: jweinste


Failed events can be appended to the end of queue during rollback, thus reordering the events seen.

doTake()...

            Event e;
            if (!consumerAndIter.get().failedEvents.isEmpty()) {
                e = consumerAndIter.get().failedEvents.removeFirst();
            }

...
            eventTaken = true;
            events.get().add(e);

doRollback()

            else {
                counter.addToRollbackCounter(Long.valueOf(events.get().size()));
                consumerAndIter.get().failedEvents.addAll(events.get());
                events.get().clear();
            }

Failed events (case of failedEvents.removeFirst()) should be added to the front of queue along lines of:

addAll(0, events.get());

While *new* events should be added to end (--not sure this combo exists--)

Otherwise

failedEvents = [0,1,2,3,4]

doTake()

failedEvents = [1,2,3,4]

doRollback()

failedEvents = [1,2,3,4,0]




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)