Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

If there is a failure, batches can be in in any of the queues. Recovery (or imports) takes all the batches in any of the states and puts them into the loggedQ in LOGGED state. This allows the recovered batches to reregister their interest in their ack tags when they are sent downstream.

Interaction with Retry.

As groups of events are written they have an associated tag and timestamp. If flume.agent.logdir.retransmit millis is exceeded, a retry call will be made on the event group tag. This will trigger a state transition of the data.

Note

This is updated as of FLUME-746 – should be in 0.9.5

State when attempting to retry

State after retry

Consequence

IMPORT

IMPORT

Unexpected condition

WRITING

WRITING

Unexepcted condition

LOGGED

LOGGED

Do nothing. Already queued for (re-)sending

SENDING

SENDING

Do nothing. Sending already in progress

SENT

LOGGED

Demote sent data to LOGGED so it will eventually be resent

E2EACKED

E2EACKED

Do nothing. Data s ack no need to resent

ERROR

ERROR

Do nothing. Already in bad state, keep it there

The collector side.

No Format
ackChecker -> roller -> dfsClosedNotifier /-> dfswriter -> hdfs.
  \-> rolltag acktag map --------------\-> ackDone -> Master's Ack Manager

...