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

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


The following commit(s) were added to refs/heads/master by this push:
     new 35493332654 HBASE-29871 During WAL write times out add DataNode 
address in. the exception message (#7719)
35493332654 is described below

commit 35493332654bad9a103b334ced492d1cf7d6d262
Author: Sreenivasulu <[email protected]>
AuthorDate: Tue Feb 24 09:19:56 2026 +0530

    HBASE-29871 During WAL write times out add DataNode address in. the 
exception message (#7719)
    
    Signed-off-by: Duo Zhang <[email protected]>
    Signed-off-by: Peng Lu <[email protected]>
    Signed-off-by: Pankaj Kumar <[email protected]>
    Reviewd-by: Vaibhav Joshi <[email protected]>
---
 .../hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.java     | 4 ++--
 .../hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java      | 8 +++++---
 .../hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java  | 3 ++-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.java
 
b/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.java
index 2dcbf56ade8..0987c482edb 100644
--- 
a/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.java
+++ 
b/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.java
@@ -333,8 +333,8 @@ public class FanOutOneBlockAsyncDFSOutput implements 
AsyncFSOutput {
       if (evt instanceof IdleStateEvent) {
         IdleStateEvent e = (IdleStateEvent) evt;
         if (e.state() == READER_IDLE) {
-          failed(ctx.channel(),
-            () -> new IOException("Timeout(" + timeoutMs + "ms) waiting for 
response"));
+          failed(ctx.channel(), () -> new IOException("Timeout(" + timeoutMs
+            + "ms) waiting for response from datanode " + 
ctx.channel().remoteAddress()));
         } else if (e.state() == WRITER_IDLE) {
           PacketHeader heartbeat = new PacketHeader(4, 0, HEART_BEAT_SEQNO, 
false, 0, false);
           int len = heartbeat.getSerializedSize();
diff --git 
a/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java
 
b/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java
index 1f1da661558..f064980b6eb 100644
--- 
a/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java
+++ 
b/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java
@@ -345,7 +345,8 @@ public final class FanOutOneBlockAsyncDFSOutputHelper {
           if (PipelineAck.isRestartOOBStatus(pipelineStatus)) {
             throw new IOException("datanode " + dnInfo + " is restarting");
           }
-          String logInfo = "ack with firstBadLink as " + 
resp.getFirstBadLink();
+          String logInfo = "ack with firstBadLink as " + 
resp.getFirstBadLink() + " from datanode "
+            + dnInfo.getHostName() + "/" + dnInfo.getInfoAddr();
           if (resp.getStatus() != Status.SUCCESS) {
             if (resp.getStatus() == Status.ERROR_ACCESS_TOKEN) {
               throw new InvalidBlockTokenException("Got access token error" + 
", status message "
@@ -378,8 +379,9 @@ public final class FanOutOneBlockAsyncDFSOutputHelper {
         @Override
         public void userEventTriggered(ChannelHandlerContext ctx, Object evt) 
throws Exception {
           if (evt instanceof IdleStateEvent && ((IdleStateEvent) evt).state() 
== READER_IDLE) {
-            promise
-              .tryFailure(new IOException("Timeout(" + timeoutMs + "ms) 
waiting for response"));
+            promise.tryFailure(
+              new IOException("Timeout(" + timeoutMs + "ms) waiting for 
response from datanode "
+                + dnInfo.getHostName() + "/" + dnInfo.getInfoAddr()));
           } else {
             super.userEventTriggered(ctx, evt);
           }
diff --git 
a/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java
 
b/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java
index a39c4fba791..3650854e6e1 100644
--- 
a/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java
+++ 
b/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java
@@ -607,7 +607,8 @@ public final class FanOutOneBlockAsyncDFSOutputSaslHelper {
     @Override
     public void userEventTriggered(ChannelHandlerContext ctx, Object evt) 
throws Exception {
       if (evt instanceof IdleStateEvent && ((IdleStateEvent) evt).state() == 
READER_IDLE) {
-        promise.tryFailure(new IOException("Timeout(" + timeoutMs + "ms) 
waiting for response"));
+        promise.tryFailure(new IOException("Timeout(" + timeoutMs
+          + "ms) waiting for response  from datanode " + 
ctx.channel().remoteAddress()));
       } else {
         super.userEventTriggered(ctx, evt);
       }

Reply via email to