Versions Compared

Key

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

...

The idea is for controller to keep track of weather a replica has been successfully created by getting this information from LeaderAndIsrResponse and persisting this information in the zookeeper. Then controller can explicitly tell broker whether to create replica or not by specifying a newly-added boolean field in the LeaderAndIsrRequest. Each broker can tell controller whether a replica is created and online by specifying the error_code per partition in the LeaderAndIsrResponse, which in turn allows broker to derive the offline replicas per partition and elect leader appropriately.

Here are a few clarification to make our solution easier to understand:
- Broker assumes a log directory to be good after it starts until there is IOException when broker attempts to access the log directory.
- Broker will be offline if all log directories are bad.

In the following we describe how our solution works under five eight different scenarios. Some existing steps (e.g. kafka-topics.sh creates znode) are omitted for simplicity.

...