You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rocketmq.apache.org by GitBox <gi...@apache.org> on 2023/03/15 09:19:29 UTC

[GitHub] [rocketmq] weihubeats created a discussion: 自动主从切换部署不能选出master

GitHub user weihubeats created a discussion: 自动主从切换部署不能选出master

nameserve: 2个节点
broker: 2个节点
![image](https://user-images.githubusercontent.com/42484192/225263301-cb924262-f224-4c92-b9bc-a56d053690c0.png)

错误log
2023-03-15 16:59:04 INFO ReplicasManager_ScheduledService_1 - Update controller leader address to x.x.x.1:9878
2023-03-15 16:59:06 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:35, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:06 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:11 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:36, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:11 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:14 INFO ReplicasManager_ScheduledService_2 - Update controller leader address to x.x.x.1:9878

GitHub link: https://github.com/apache/rocketmq/discussions/6354

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats edited a discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats edited a discussion: 自动主从切换部署不能选出master

nameserve: 2个节点
broker: 2个节点
![image](https://user-images.githubusercontent.com/42484192/225263301-cb924262-f224-4c92-b9bc-a56d053690c0.png)

执行
```shell
sh bin/mqadmin getBrokerEpoch -n localhost:9876 -b broker-a
```
没反应

错误log
```java
2023-03-15 16:59:04 INFO ReplicasManager_ScheduledService_1 - Update controller leader address to x.x.x.1:9878
2023-03-15 16:59:06 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:35, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:06 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:11 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:36, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:11 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:14 INFO ReplicasManager_ScheduledService_2 - Update controller leader address to x.x.x.1:9878
```

GitHub link: https://github.com/apache/rocketmq/discussions/6354

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats edited a discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats edited a discussion: 自动主从切换部署不能选出master

- rocketmq版本: 5.1.0
- nameserve: 2个节点
- broker: 2个节点
![image](https://user-images.githubusercontent.com/42484192/225263301-cb924262-f224-4c92-b9bc-a56d053690c0.png)

重启broker、nameserve依旧报这个错

执行
```shell
sh bin/mqadmin getBrokerEpoch -n localhost:9876 -b broker-a
```
没反应

错误log
```java
2023-03-15 16:59:04 INFO ReplicasManager_ScheduledService_1 - Update controller leader address to x.x.x.1:9878
2023-03-15 16:59:06 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:35, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:06 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:11 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:36, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:11 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:14 INFO ReplicasManager_ScheduledService_2 - Update controller leader address to x.x.x.1:9878
```

GitHub link: https://github.com/apache/rocketmq/discussions/6354

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

添加参数 enableElectUncleanMaster = true,可以选出新的master节点。但是不明白为什么就这两个节点什么都没干回出现两个节点选不出master的情况

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5320281

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin added a comment to the discussion: 自动主从切换部署不能选出master

> > Comment options
> > cleanBrokerData 这个命令是哪个工具的,可以发个完整的吗

mqadmin工具的,最新develop分支命名为cleanBrokerMetadata

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5668050

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats edited a discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats edited a discussion: 自动主从切换部署不能选出master

- rocketmq版本: 5.1.0
nameserve: 2个节点
broker: 2个节点
![image](https://user-images.githubusercontent.com/42484192/225263301-cb924262-f224-4c92-b9bc-a56d053690c0.png)

执行
```shell
sh bin/mqadmin getBrokerEpoch -n localhost:9876 -b broker-a
```
没反应

错误log
```java
2023-03-15 16:59:04 INFO ReplicasManager_ScheduledService_1 - Update controller leader address to x.x.x.1:9878
2023-03-15 16:59:06 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:35, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:06 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:11 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:36, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:11 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:14 INFO ReplicasManager_ScheduledService_2 - Update controller leader address to x.x.x.1:9878
```

GitHub link: https://github.com/apache/rocketmq/discussions/6354

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

@weihubeats 从你图中可以看到,当前SyncStateSet中只有一个同步副本(InSyncReplica为同步副本,NotInSyncReplica为非同步副本),因此该情况下为了保证不丢消息,只有等InSyncReplica的副本上线,才会被选为Master(除非unclean选举)。就像@TheR1sing3un所说,是否由于ip变化导致上线的两个broker均非InSyncReplica,导致无法选主,如果是的话,可以参考最新develop方案,该方案已经从Controller识别brokerIP作为broker身份改为持久化的broker编号。

此外,这种情况下,可以如下操作恢复:
(1)下线主备Broker
(2)利用cleanBrokerData命令清除Controller中该组Broker元数据
(3)删除主备Broker下的文件~/store/epochFileCheckpoint和epochFileCheckpoint.bak
(4)Broker重新上线(尽量保证旧的主备关系,先主后备上线)

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5327948

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] TheR1sing3un deleted a comment on the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user TheR1sing3un deleted a comment on the discussion: 自动主从切换部署不能选出master

> 添加参数 enableElectUncleanMaster = true,可以选出新的master节点。但是不明白为什么就这两个节点什么都没干回出现两个节点选不出master的情况

是否在重启的过程中发生ip的变化(用wsl或者容器部署会发生变化,可参考https://github.com/apache/rocketmq/issues/5745) ,因为我看这个副本组中syncStateSet中只有一个broker
<img width="530" alt="image" src="https://user-images.githubusercontent.com/87409330/225377729-3dbf2b7e-855a-4247-b3a4-33d783c6975a.png">

如果这个broker重启的时候ip变化了,重启前后这个broker就没办法对应上,所以在未开启`enableElectUncleanMaster` 的时候,就没办法在注册的时候从当前syncStateSet中选出master了, 这个目前develop分支已修复该问题,可以参考:https://github.com/apache/rocketmq/issues/5989

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5324446

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

@weihubeats 当前SyncStateSet中只有一个同步副本(InSyncReplica为同步副本,NotInSyncReplica为非同步副本),因此该情况下为了保证不丢消息,只有等InSyncReplica的副本上线,才会被选为Master(除非unclean选举)。就像@TheR1sing3un所说,是否由于ip变化导致上线的两个broker均非InSyncReplica,导致无法选主。

这种情况下,可以如下操作恢复:
(1)下线主备Broker
(2)利用cleanBrokerData命令清除Controller中该组Broker元数据
(3)删除主备Broker下的文件~/store/epochFileCheckpoint和epochFileCheckpoint.bak
(4)Broker重新上线

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5327948

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

应该是我本地又起来一个broker,然后本地下线,服务器上的两个broker由于落后于本地broker,所以他们都当选不了主

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5328584

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats edited a discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats edited a discussion: 自动主从切换部署不能选出master

nameserve: 2个节点
broker: 2个节点
![image](https://user-images.githubusercontent.com/42484192/225263301-cb924262-f224-4c92-b9bc-a56d053690c0.png)

错误log
```java
2023-03-15 16:59:04 INFO ReplicasManager_ScheduledService_1 - Update controller leader address to x.x.x.1:9878
2023-03-15 16:59:06 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:35, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:06 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:11 WARN ReplicasManager_ExecutorService_1 - Failed to start replicasManager, retry times:36, current state:FIRST_TIME_SYNC_CONTROLLER_METADATA_DONE, try it again
2023-03-15 16:59:11 ERROR ReplicasManager_ExecutorService_1 - Failed to register broker to controller
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2012  DESC: The broker has not master, and this new registered broker can't not be elected as master
For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
        at org.apache.rocketmq.broker.out.BrokerOuterAPI.registerBrokerToController(BrokerOuterAPI.java:1183)
        at org.apache.rocketmq.broker.controller.ReplicasManager.registerBrokerToController(ReplicasManager.java:302)
        at org.apache.rocketmq.broker.controller.ReplicasManager.startBasicService(ReplicasManager.java:151)
        at org.apache.rocketmq.broker.controller.ReplicasManager.lambda$start$0(ReplicasManager.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2023-03-15 16:59:14 INFO ReplicasManager_ScheduledService_2 - Update controller leader address to x.x.x.1:9878
```

GitHub link: https://github.com/apache/rocketmq/discussions/6354

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

@weihubeats 从你图中可以看到,当前SyncStateSet中只有一个同步副本(InSyncReplica为同步副本,NotInSyncReplica为非同步副本),因此该情况下为了保证不丢消息,只有等InSyncReplica的副本上线,才会被选为Master(除非unclean选举)。就像@TheR1sing3un所说,是否由于ip变化导致上线的两个broker均非InSyncReplica,导致无法选主,如果

此外,这种情况下,可以如下操作恢复:
(1)下线主备Broker
(2)利用cleanBrokerData命令清除Controller中该组Broker元数据
(3)删除主备Broker下的文件~/store/epochFileCheckpoint和epochFileCheckpoint.bak
(4)Broker重新上线(尽量保证旧的主备关系上线)

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5327948

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin added a comment to the discussion: 自动主从切换部署不能选出master

@weihubeats 当前SyncStateSet中只有一个同步副本(InSyncReplica为同步副本,NotInSyncReplica为非同步副本),因此该情况下为了保证不丢消息,只有等InSyncReplica的副本上线,才会被选为Master(除非unclean选举)。就像@TheR1sing3un所说,是否由于ip变化导致上线的两个broker均非InSyncReplica,导致无法选主。

这种情况下,可以如下操作恢复:
(1)下线主备Broker
(2)利用cleanBrokerData命令清除Controller中该组Broker元数据
(3)删除Broker下~/store/epochFileCheckpoint和epochFileCheckpoint.bak
(4)Broker重新上线

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5327948

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

没有使用wsl和容器部署,所以机器ip应该是不会变的

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5328555

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] zuoHx580 added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user zuoHx580 added a comment to the discussion: 自动主从切换部署不能选出master

> Comment options
cleanBrokerData 这个命令是哪个工具的,可以发个完整的吗


GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5658530

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

@weihubeats 从你图中可以看到,当前SyncStateSet中只有一个同步副本(InSyncReplica为同步副本,NotInSyncReplica为非同步副本),因此该情况下为了保证不丢消息,只有等InSyncReplica的副本上线,才会被选为Master(除非unclean选举)。就像@TheR1sing3un所说,是否由于ip变化导致上线的两个broker均非InSyncReplica,导致无法选主,如果是的话,可以参考@TheR1sing3un解决方法(已经合入develop分支),该方案已经从Controller识别brokerIP作为broker身份改为持久化的broker编号。

此外,这种情况下,可以如下操作恢复:
(1)下线主备Broker
(2)利用cleanBrokerData命令清除Controller中该组Broker元数据
(3)删除主备Broker下的文件~/store/epochFileCheckpoint和epochFileCheckpoint.bak
(4)Broker重新上线(尽量保证旧的主备关系,先主后备上线)

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5327948

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

@weihubeats 从你图中可以看到,当前SyncStateSet中只有一个同步副本(InSyncReplica为同步副本,NotInSyncReplica为非同步副本),因此该情况下为了保证不丢消息,只有等InSyncReplica的副本上线,才会被选为Master(除非unclean选举)。就像@TheR1sing3un所说,是否由于ip变化导致上线的两个broker均非InSyncReplica,导致无法选主。

这种情况下,可以如下操作恢复:
(1)下线主备Broker
(2)利用cleanBrokerData命令清除Controller中该组Broker元数据
(3)删除主备Broker下的文件~/store/epochFileCheckpoint和epochFileCheckpoint.bak
(4)Broker重新上线

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5327948

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user weihubeats added a comment to the discussion: 自动主从切换部署不能选出master

好的,非常感觉,我好像明白了,因为为了查看原因又在本地启了一个broker,导致本地的broker的数据文件是最新的,所以服务器上的两个broker都当不了master

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5328573

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] zuoHx580 added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user zuoHx580 added a comment to the discussion: 自动主从切换部署不能选出master

> > > Comment options
> > > cleanBrokerData 这个命令是哪个工具的,可以发个完整的吗
> 
> mqadmin工具的,最新develop分支命名为cleanBrokerMetadata

好的,非常感谢

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5668073

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user RongtongJin edited a comment on the discussion: 自动主从切换部署不能选出master

@weihubeats 从你图中可以看到,当前SyncStateSet中只有一个同步副本(InSyncReplica为同步副本,NotInSyncReplica为非同步副本),因此该情况下为了保证不丢消息,只有等InSyncReplica的副本上线,才会被选为Master(除非unclean选举)。就像@TheR1sing3un所说,是否由于ip变化导致上线的两个broker均非InSyncReplica,导致无法选主,如果

此外,这种情况下,可以如下操作恢复:
(1)下线主备Broker
(2)利用cleanBrokerData命令清除Controller中该组Broker元数据
(3)删除主备Broker下的文件~/store/epochFileCheckpoint和epochFileCheckpoint.bak
(4)Broker重新上线(尽量保证旧的主备关系,先主后备上线)

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5327948

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] TheR1sing3un added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user TheR1sing3un added a comment to the discussion: 自动主从切换部署不能选出master

> 添加参数 enableElectUncleanMaster = true,可以选出新的master节点。但是不明白为什么就这两个节点什么都没干回出现两个节点选不出master的情况

是否在重启的过程中发生ip的变化(用wsl或者容器部署会发生变化,可参考https://github.com/apache/rocketmq/issues/5745) ,因为我看这个副本组中syncStateSet中只有一个broker
<img width="530" alt="image" src="https://user-images.githubusercontent.com/87409330/225377729-3dbf2b7e-855a-4247-b3a4-33d783c6975a.png">

如果这个broker重启的时候ip变化了,重启前后这个broker就没办法对应上,所以在未开启`enableElectUncleanMaster` 的时候,就没办法在注册的时候从当前syncStateSet中选出master了, 这个目前develop分支已修复该问题,可以参考:https://github.com/apache/rocketmq/issues/5989

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5324446

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org


[GitHub] [rocketmq] TheR1sing3un added a comment to the discussion: 自动主从切换部署不能选出master

Posted by GitBox <gi...@apache.org>.
GitHub user TheR1sing3un added a comment to the discussion: 自动主从切换部署不能选出master

是否在重启的过程中发生ip的变化(用wsl或者容器部署会发生变化,可参考https://github.com/apache/rocketmq/issues/5745) ,因为我看这个副本组中syncStateSet中只有一个broker
<img width="530" alt="image" src="https://user-images.githubusercontent.com/87409330/225377729-3dbf2b7e-855a-4247-b3a4-33d783c6975a.png">

如果这个broker重启的时候ip变化了,重启前后这个broker就没办法对应上,所以在未开启`enableElectUncleanMaster` 的时候,就没办法在注册的时候从当前syncStateSet中选出master了, 这个目前develop分支已修复该问题,可以参考:https://github.com/apache/rocketmq/issues/5989

GitHub link: https://github.com/apache/rocketmq/discussions/6354#discussioncomment-5324456

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@rocketmq.apache.org