rpuch commented on code in PR #6019:
URL: https://github.com/apache/ignite-3/pull/6019#discussion_r2139871635


##########
modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyService.java:
##########
@@ -88,64 +88,108 @@ void onMembershipEvent(MembershipEvent event) {
         ClusterNode member = fromMember(event.member(), metadata);
 
         if (event.isAdded()) {
-            members.put(member.address(), member);
-            Map<UUID, ClusterNode> clusterNodes = 
membersByConsistentId.computeIfAbsent(member.name(), k -> new 
ConcurrentHashMap<>());
-            clusterNodes.put(member.id(), member);
-            idToMemberMap.put(member.id(), member);
-
-            LOG.info("Node joined [node={}]", member);
-
-            fireAppearedEvent(member);
+            onAddedEvent(member);
         } else if (event.isUpdated()) {
-            members.put(member.address(), member);
-            membersByConsistentId.computeIfAbsent(member.name(), k -> new 
ConcurrentHashMap<>()).put(member.id(), member);
-            membersByConsistentIdInLogicalTopology.compute(member.name(), 
(consId, node) -> {
-                if (node != null && node.id().equals(member.id())) {
-                    return member;
-                }
-                return node;
-            });
-            idToMemberMap.put(member.id(), member);
+            onUpdatedEvent(member);
         } else if (event.isRemoved() || event.isLeaving()) {
-            // We treat LEAVING as 'node left' because the node will not be 
back and we don't want to wait for the suspicion timeout.
+            onRemovedOrLeftEvent(event, member);
+        }
+
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Topology snapshot [nodes={}]", 
members.values().stream().map(ClusterNode::name).collect(Collectors.toList()));
+        }
+    }
+
+    private void onAddedEvent(ClusterNode member) {
+        @Nullable ClusterNode differentNodeWithSameAddress = 
replaceMemberByAddress(member);
+
+        replaceMemberByConsistentId(member, differentNodeWithSameAddress);
+
+        replaceMemberById(member, differentNodeWithSameAddress);
+
+        LOG.info("Node joined [node={}]", member);

Review Comment:
   This is an optimization that is tiny, but makes the code a little more 
bloated. I think it's not worth it here as this code is not super-hot (these 
events are generated very seldom)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@ignite.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to