Versions Compared

Key

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

...

  1. State change are executed by different listeners concurrently. Hence complicated synchronization is needed which is error prone and difficult to debug.
  2. State propagation is not synchronized. Brokers might be in different state for undetermined time. This leads to unnecessary extra data loss.

New controller design

Design Principle

  1. Abstract the output of each state change input source to an event.
  2. Have a single execution thread to serially process events one at a time.
  3. Keep cluster state and topic state separately.
  4. Use o.a.k.clients.NetworClient + callback for state change propagation.

Top level design