RocketMQ 记一次诡异的autoCreateTopicEnable变成false

原创
2019/11/18 19:30
阅读数 3.9K

1.线上rocketmq 莫名起码不能自动创建topic,运维大佬说保证没有改过。配置文件也确实是没有改过。

 

2.排查思路,是否有其他修改autoCreateTopicEnable的地方? 通过大佬对源码的阅读,rocketmq 的自动创建 TBW102 都是靠这个。

// MixAll.AUTO_CREATE_TOPIC_KEY_TOPIC
if (this.brokerController.getBrokerConfig().isAutoCreateTopicEnable()) {
    String topic = MixAll.AUTO_CREATE_TOPIC_KEY_TOPIC; // TBW102
    TopicConfig topicConfig = new TopicConfig(topic);
    this.systemTopicList.add(topic);
    topicConfig.setReadQueueNums(this.brokerController.getBrokerConfig().getDefaultTopicQueueNums());// 默认值是8
    topicConfig.setWriteQueueNums(this.brokerController.getBrokerConfig().getDefaultTopicQueueNums());// 默认值是8
    int perm = PermName.PERM_INHERIT | PermName.PERM_READ | PermName.PERM_WRITE;// 可允许继承、可读、可写等权限’
    topicConfig.setPerm(perm);
    this.topicConfigTable.put(topicConfig.getTopicName(), topicConfig);
}

这里的权限,7。我们去rocket-console 观察一下 perm 权限竟然变成了6.也就是说有人对topic config 信息做了修改,而且是 TBW102这个topic。

3.查看了一下,rocketmq-tool 代码,发现确实有方法可以进行修改createAndUpdateTopicConfig。

4.因为rocket-console里面用了很多tools里面的工具,就去里面搜索。发现确实使用了,定位到罪魁祸首了。

5.定位修改时间,根据rocketmq-nameserver 的日志,发现权限7-6的时间是缩容的时间。

6.根据逻辑,确实会触发这段逻辑。但为什么以前不会触发,很奇怪。

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部