You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/05/22 07:24:27 UTC

[dubbo] branch master updated: MultiMessageHandler should increase exception handling to prevent data loss (#7816)

This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 22ec5a0  MultiMessageHandler should increase exception handling to prevent data loss (#7816)
22ec5a0 is described below

commit 22ec5a0aa3ef2c5aef9c51570bcc000ca6a0b4d4
Author: xiaoheng1 <20...@qq.com>
AuthorDate: Sat May 22 15:24:17 2021 +0800

    MultiMessageHandler should increase exception handling to prevent data loss (#7816)
---
 .../dubbo/remoting/transport/MultiMessageHandler.java       | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/MultiMessageHandler.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/MultiMessageHandler.java
index a669802..4a173d6 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/MultiMessageHandler.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/MultiMessageHandler.java
@@ -16,17 +16,21 @@
  */
 package org.apache.dubbo.remoting.transport;
 
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.remoting.Channel;
 import org.apache.dubbo.remoting.ChannelHandler;
+import org.apache.dubbo.remoting.ExecutionException;
 import org.apache.dubbo.remoting.RemotingException;
 import org.apache.dubbo.remoting.exchange.support.MultiMessage;
 
 /**
- *
  * @see MultiMessage
  */
 public class MultiMessageHandler extends AbstractChannelHandlerDelegate {
 
+    protected static final Logger logger = LoggerFactory.getLogger(MultiMessageHandler.class);
+
     public MultiMessageHandler(ChannelHandler handler) {
         super(handler);
     }
@@ -37,7 +41,12 @@ public class MultiMessageHandler extends AbstractChannelHandlerDelegate {
         if (message instanceof MultiMessage) {
             MultiMessage list = (MultiMessage) message;
             for (Object obj : list) {
-                handler.received(channel, obj);
+                try {
+                    handler.received(channel, obj);
+                } catch (ExecutionException e) {
+                    logger.error("MultiMessageHandler received fail.", e);
+                    handler.caught(channel, e);
+                }
             }
         } else {
             handler.received(channel, message);