lyl2008dsg commented on code in PR #7095:
URL: https://github.com/apache/incubator-seata/pull/7095#discussion_r1976331903


##########
core/src/main/java/org/apache/seata/core/rpc/netty/AbstractNettyRemotingClient.java:
##########
@@ -501,4 +513,59 @@ public void close(ChannelHandlerContext ctx, 
ChannelPromise future) throws Excep
         }
     }
 
+    /**
+     * Iterates over futures and marks all MessageFutures associated with the 
specified Channel as failed.
+     *
+     * @param channel The Channel that has been disconnected or encountered an 
exception.
+     * @param cause   The reason for the failure.
+     */
+    private void failFuturesForChannel(Channel channel, Throwable cause) {
+        Set<Integer> requestIds = channelToRequestIds.remove(channel);
+        if (requestIds != null) {
+            for (Integer requestId : requestIds) {
+                MessageFuture future = futures.remove(requestId);
+                if (future != null) {
+                    future.setResultMessage(cause);
+                }
+            }
+        }
+    }
+
+    /**
+     * Removes the association between the specified Channel and requestId 
from the channelToRequestIds mapping.
+     * If the Channel no longer has any associated requestId, the Channel will 
be removed from the mapping.
+     *
+     * @param channel   The Channel that has been disconnected or encountered 
an exception.
+     * @param requestId The requestId to be removed.
+     */
+    private void removeRequestIdFromChannel(Channel channel, Integer 
requestId) {
+        if (channel == null) {
+            if (requestId != null) {
+                LOGGER.warn("Attempted to remove requestId {} from a null 
channel.", requestId);
+            } else {
+                LOGGER.warn("Attempted to remove a null requestId from a null 
channel.");
+            }
+            return;
+        }
+
+        if (requestId == null) {
+            LOGGER.warn("Attempted to remove a null requestId from channel 
{}.", channel);
+            return;
+        }
+
+        channelToRequestIds.computeIfPresent(channel, (ch, requestIds) -> {
+            boolean removed = requestIds.remove(requestId);
+            if (removed) {
+                LOGGER.debug("Removed requestId {} from channel {}.", 
requestId, ch);

Review Comment:
   Yeah, you're right.



##########
core/src/main/java/org/apache/seata/core/rpc/netty/AbstractNettyRemotingClient.java:
##########
@@ -501,4 +513,59 @@ public void close(ChannelHandlerContext ctx, 
ChannelPromise future) throws Excep
         }
     }
 
+    /**
+     * Iterates over futures and marks all MessageFutures associated with the 
specified Channel as failed.
+     *
+     * @param channel The Channel that has been disconnected or encountered an 
exception.
+     * @param cause   The reason for the failure.
+     */
+    private void failFuturesForChannel(Channel channel, Throwable cause) {
+        Set<Integer> requestIds = channelToRequestIds.remove(channel);
+        if (requestIds != null) {
+            for (Integer requestId : requestIds) {
+                MessageFuture future = futures.remove(requestId);
+                if (future != null) {
+                    future.setResultMessage(cause);
+                }
+            }
+        }
+    }
+
+    /**
+     * Removes the association between the specified Channel and requestId 
from the channelToRequestIds mapping.
+     * If the Channel no longer has any associated requestId, the Channel will 
be removed from the mapping.
+     *
+     * @param channel   The Channel that has been disconnected or encountered 
an exception.
+     * @param requestId The requestId to be removed.
+     */
+    private void removeRequestIdFromChannel(Channel channel, Integer 
requestId) {
+        if (channel == null) {
+            if (requestId != null) {
+                LOGGER.warn("Attempted to remove requestId {} from a null 
channel.", requestId);
+            } else {
+                LOGGER.warn("Attempted to remove a null requestId from a null 
channel.");
+            }
+            return;
+        }
+
+        if (requestId == null) {
+            LOGGER.warn("Attempted to remove a null requestId from channel 
{}.", channel);
+            return;
+        }
+
+        channelToRequestIds.computeIfPresent(channel, (ch, requestIds) -> {
+            boolean removed = requestIds.remove(requestId);
+            if (removed) {
+                LOGGER.debug("Removed requestId {} from channel {}.", 
requestId, ch);
+            } else {
+                LOGGER.warn("Attempted to remove non-existing requestId {} 
from channel {}.", requestId, ch);
+            }
+
+            if (requestIds.isEmpty()) {
+                LOGGER.debug("No more requestIds associated with channel {}. 
Channel removed from mapping.", ch);

Review Comment:
   Yeah, you're right.



-- 
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...@seata.apache.org

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


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org
For additional commands, e-mail: notifications-h...@seata.apache.org

Reply via email to