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

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


The following commit(s) were added to refs/heads/master by this push:
     new 6d94399fef DRILL-8489: Sender memory leak when rpc encode exception 
(#2901)
6d94399fef is described below

commit 6d94399fef380d55d79bff390bfaf3a7e2f61805
Author: shfshihuafeng <[email protected]>
AuthorDate: Wed May 1 22:49:30 2024 +0800

    DRILL-8489: Sender memory leak when rpc encode exception (#2901)
---
 exec/rpc/src/main/java/org/apache/drill/exec/rpc/RpcEncoder.java | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/exec/rpc/src/main/java/org/apache/drill/exec/rpc/RpcEncoder.java 
b/exec/rpc/src/main/java/org/apache/drill/exec/rpc/RpcEncoder.java
index 89466302ba..007be0c826 100644
--- a/exec/rpc/src/main/java/org/apache/drill/exec/rpc/RpcEncoder.java
+++ b/exec/rpc/src/main/java/org/apache/drill/exec/rpc/RpcEncoder.java
@@ -61,7 +61,7 @@ class RpcEncoder extends 
MessageToMessageEncoder<OutboundRpcMessage>{
       msg.release();
       return;
     }
-
+    boolean encodeSucess = false;
     try{
       if (RpcConstants.EXTRA_DEBUGGING) {
         logger.debug("Encoding outbound message {}", msg);
@@ -131,9 +131,13 @@ class RpcEncoder extends 
MessageToMessageEncoder<OutboundRpcMessage>{
       if (RpcConstants.EXTRA_DEBUGGING) {
         logger.debug("Sent message.  Ending writer index was {}.", 
buf.writerIndex());
       }
+      encodeSucess = true;
     } finally {
       // make sure to release Rpc Messages underlying byte buffers.
-      //msg.release();
+      //if msg instanceof ReferenceCounted,netty can release msg.
+      if (!encodeSucess) {
+        msg.release();
+      }
     }
   }
 

Reply via email to