Skip to content

Commit a14ba36

Browse files
Fix topic deletion issue in master-slave clusters
Issue: Topics cannot be permanently deleted in master-slave RocketMQ clusters because slave brokers incorrectly delete all topics during synchronization. Root Cause: In SlaveSynchronize.java, the deleteTopicConfig() call was placed outside the conditional check, causing ALL topics to be deleted from slaves during sync, not just the ones missing from master's config. Fix: Move deleteTopicConfig() and deleteSubscriptionGroupConfig() calls inside the conditional blocks so they only execute for topics/subscription groups that should actually be deleted. This addresses GitHub issue #10030 and is related to issue #9984. Changes: - syncTopicConfig(): Move topicConfigManager.deleteTopicConfig() inside if block - syncSubscriptionGroupConfig(): Move subscriptionGroupManager.deleteSubscriptionGroupConfig() inside if block
1 parent 236ede2 commit a14ba36

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

broker/src/main/java/org/apache/rocketmq/broker/slave/SlaveSynchronize.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ private void syncTopicConfig() {
9494
Map.Entry<String, TopicConfig> entry = iterator.next();
9595
if (!newTopicConfigTable.containsKey(entry.getKey())) {
9696
iterator.remove();
97+
topicConfigManager.deleteTopicConfig(entry.getKey());
9798
}
98-
topicConfigManager.deleteTopicConfig(entry.getKey());
9999
}
100100

101101
//update
@@ -189,8 +189,8 @@ private void syncSubscriptionGroupConfig() {
189189
Map.Entry<String, SubscriptionGroupConfig> configEntry = iterator.next();
190190
if (!newSubscriptionGroupTable.containsKey(configEntry.getKey())) {
191191
iterator.remove();
192+
subscriptionGroupManager.deleteSubscriptionGroupConfig(configEntry.getKey());
192193
}
193-
subscriptionGroupManager.deleteSubscriptionGroupConfig(configEntry.getKey());
194194
}
195195
// update
196196
newSubscriptionGroupTable.values().forEach(subscriptionGroupManager::putSubscriptionGroupConfig);

0 commit comments

Comments
 (0)