如果写入`/brokers/topics/{TopicName}`节点之后Controller挂掉了会怎么样?
先说结论:Controller 重新选举的时候,会有一些初始化的操作; 会把创建过程继续下去
然后我们来模拟这么一个过程,先停止集群,然后再zk中写入/brokers/topics/{TopicName}节点数据; 然后再启动一台Broker;
源码分析: 我们之前分析过Controller的启动过程与选举 有提到过,这里再提一下Controller当选之后有一个地方处理这个事情
replicaStateMachine.startup() partitionStateMachine.startup()
启动状态机的过程是不是跟 🏃 创建Topic的源码解析 👈
的6.1 onNewPartitionCreation 状态流转 的过程很像; 最终都把状态流转到了OnlinePartition; 伴随着是不发起了leaderAndIsrRequest请求; 是不是Broker收到请求之后,创建本地Log文件了