From e49c46fb7401a07ca3fadba00f02299371fca7ab Mon Sep 17 00:00:00 2001 From: "ye.zou" Date: Sun, 29 Mar 2026 21:26:11 +0800 Subject: [PATCH] [cloudbus]: add trace logging for message timeout evaluation Change-Id: Ic38bba9564e1d4c55df2db1cb3978d9e5e7a0b20 --- .../org/zstack/core/cloudbus/CloudBusImpl3.java | 3 +++ .../zstack/core/timeout/ApiTimeoutManagerImpl.java | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/zstack/core/cloudbus/CloudBusImpl3.java b/core/src/main/java/org/zstack/core/cloudbus/CloudBusImpl3.java index 93e8555b875..661a03e7ea3 100755 --- a/core/src/main/java/org/zstack/core/cloudbus/CloudBusImpl3.java +++ b/core/src/main/java/org/zstack/core/cloudbus/CloudBusImpl3.java @@ -363,6 +363,9 @@ private MessageReply createTimeoutReply(NeedReplyMessage m) { public FutureCompletion send(NeedReplyMessage msg, CloudBusCallBack callback) { evaluateMessageTimeout(msg); if (msg.getTimeout() <= 1) { + logger.warn(String.format("message timeout too short, rejecting: msg=%s, id=%s, timeout=%d, deadline=%d, serviceId=%s", + msg.getClass().getSimpleName(), msg.getId(), msg.getTimeout(), msg.getMessageDeadline(), + msg.getServiceId())); callback.run(createTimeoutReply(msg)); return SEND_CONFIRMED; } diff --git a/core/src/main/java/org/zstack/core/timeout/ApiTimeoutManagerImpl.java b/core/src/main/java/org/zstack/core/timeout/ApiTimeoutManagerImpl.java index e1a6697918f..ed86cfe0313 100755 --- a/core/src/main/java/org/zstack/core/timeout/ApiTimeoutManagerImpl.java +++ b/core/src/main/java/org/zstack/core/timeout/ApiTimeoutManagerImpl.java @@ -346,9 +346,21 @@ public void setMessageTimeout(Message msg) { } else if (msg instanceof NeedReplyMessage) { NeedReplyMessage nmsg = (NeedReplyMessage) msg; if (nmsg.getTimeout() == -1) { - MessageTimeoutDsc mtd = evalTimeout(getMessageTimeout()); + long resolvedTimeout = getMessageTimeout(); + MessageTimeoutDsc mtd = evalTimeout(resolvedTimeout); nmsg.setTimeout(mtd.getMessageTimeout()); nmsg.setMessageDeadline(mtd.getMessageDeadline()); + + if (logger.isTraceEnabled()) { + Map tc = TaskContext.getTaskContext(); + logger.trace(String.format("setMessageTimeout: msg=%s, getMessageTimeout()=%d, " + + "evalResult=[timeout=%d, deadline=%d], taskContext=%s, currentTime=%d, thread=%s", + msg.getClass().getSimpleName(), resolvedTimeout, + mtd.getMessageTimeout(), mtd.getMessageDeadline(), + tc != null ? tc.toString() : "null", + timer.getCurrentTimeMillis(), + Thread.currentThread().getName())); + } } } }