diff --git a/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingDetail.java b/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingDetail.java index a90ca7eb92b8a7f9a871dfcc48a78fb4c6ea9a3e..d3e3d92abd641cb3a5c5da76f94e2eeb16a2c277 100644 --- a/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingDetail.java +++ b/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingDetail.java @@ -63,13 +63,13 @@ public class TopicQueueMappingDetail extends TopicQueueMappingInfo { && items.size() >= 1) { LogicQueueMappingItem curr = items.get(items.size() - 1); if (bname.equals(curr.getBname())) { - tmpIdMap.put(curr.getQueueId(), globalId); + tmpIdMap.put(globalId, curr.getQueueId()); } } else if (level == LEVEL_1 && items.size() >= 2) { LogicQueueMappingItem prev = items.get(items.size() - 1); if (bname.equals(prev.getBname())) { - tmpIdMap.put(prev.getQueueId(), globalId); + tmpIdMap.put(globalId, prev.getQueueId()); } } } diff --git a/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingInfo.java b/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingInfo.java index c5bbeef4507f043045e3759abd8c0d548bfb52a7..2d76365dc042df9fa0e2fd1c42372679adb6ded7 100644 --- a/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingInfo.java +++ b/common/src/main/java/org/apache/rocketmq/common/TopicQueueMappingInfo.java @@ -29,9 +29,9 @@ public class TopicQueueMappingInfo extends RemotingSerializable { int totalQueues; String bname; //identify the hosted broker name //register to broker to construct the route - ConcurrentMap currIdMap = new ConcurrentHashMap(); + ConcurrentMap currIdMap = new ConcurrentHashMap(); //register to broker to help detect remapping failure - protected ConcurrentMap prevIdMap = new ConcurrentHashMap(); + ConcurrentMap prevIdMap = new ConcurrentHashMap(); public TopicQueueMappingInfo(String topic, int totalQueues, String bname) { this.topic = topic; diff --git a/common/src/main/java/org/apache/rocketmq/common/protocol/route/TopicRouteData.java b/common/src/main/java/org/apache/rocketmq/common/protocol/route/TopicRouteData.java index c2cad6c4b0f253162b771a69d5344e1f0a54ca7f..2ce6a53b5140232eb4e2e0d6ccd6c1acf22fefa6 100644 --- a/common/src/main/java/org/apache/rocketmq/common/protocol/route/TopicRouteData.java +++ b/common/src/main/java/org/apache/rocketmq/common/protocol/route/TopicRouteData.java @@ -33,7 +33,8 @@ public class TopicRouteData extends RemotingSerializable { private List queueDatas; private List brokerDatas; private HashMap/* Filter Server */> filterServerTable; - private Map topicQueueMappingByBroker; + //It could be null or empty + private Map topicQueueMappingByBroker; public TopicRouteData() { } diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java index bfdf53cae87263c11cb1b64f01b37915e5984a5f..90bc1976c10334f4cfb2259e522423c89cf0b5b5 100644 --- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java +++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java @@ -163,7 +163,7 @@ public class RouteInfoManager { TopicConfigAndMappingSerializeWrapper mappingSerializeWrapper = TopicConfigAndMappingSerializeWrapper.from(topicConfigWrapper); Map topicQueueMappingInfoMap = mappingSerializeWrapper.getTopicQueueMappingInfoMap(); - + //the topicQueueMappingInfoMap should never be null, but can be empty for (Map.Entry entry : topicQueueMappingInfoMap.entrySet()) { if (!topicQueueMappingInfoTable.containsKey(entry.getKey())) { topicQueueMappingInfoTable.put(entry.getKey(), new HashMap());