You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2026/02/24 03:59:14 UTC
(hbase) branch branch-2.5 updated: HBASE-29871 During WAL write times out add DataNode address in the exception message (#7751)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.5 by this push:
new 50032d6a2ed HBASE-29871 During WAL write times out add DataNode address in the exception message (#7751)
50032d6a2ed is described below
commit 50032d6a2ed7394c1393a2e74dbc9f574c8a9775
Author: Sreenivasulu <sr...@gmail.com>
AuthorDate: Tue Feb 24 09:20:12 2026 +0530
HBASE-29871 During WAL write times out add DataNode address in the exception message (#7751)
Signed-off-by: Duo Zhang <zh...@apache.org>
Signed-off-by: Peng Lu <lu...@apache.org>
Signed-off-by: Pankaj Kumar <pa...@apache.org>
Reviewd-by: Vaibhav Joshi <vj...@cloudera.com>
(cherry picked from commit 5e22f08be02b55b075a095c44195176ca6bf9824)
---
.../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 61ab42d81be..de200a36abf 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
@@ -337,8 +337,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 b93768ae084..923a4c9b269 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
@@ -436,7 +436,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 "
@@ -469,8 +470,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);
}