1. Live broker info included in LeaderIsrRequest.
ControllerBrokerRequestBatch.sendrequestsToBrokers() passes the live brokers list to LeaderIsrRequest.
Thus Partition.makeFollower no longer needs to read the broker info from zookeeper. Only the controller reads this info from zookeeper with this patch.
2. Partition.makeLeaderOrFollower feels unnecessary because it reuses only a couple lines of code, and introduces an extra step in understanding the logic.
Hence, got rid of makeLeaderOrFollower and copied the lock synchronization and discarding the incoming request part to makeLeader and makeFollower separately.