The current controller implementation atomically appends to the metadata log by making sure that all required records are on the same batch. The controller groups all of the records that result from an RPC into one batch. Some of the RPCs are:
- Client quota changes
- Configuration changes
- Feature changes
- Topic creation
This is good enough for correctness but it is more aggressive than necessary. For example, for topic creation since errors are reported independently, the controller only needs to guarantee that all of the records for one topic are committed atomically.