diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java index cc56b6f764..a2877e7538 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java @@ -987,11 +987,21 @@ public class Coordinator implements CoordInterface { long leftTimeMs, String operation) throws RpcException, UserException { if (leftTimeMs <= 0) { - long elapsed = (System.currentTimeMillis() - timeoutDeadline) / 1000 + queryOptions.getExecutionTimeout(); + long currentTimeMillis = System.currentTimeMillis(); + long elapsed = (currentTimeMillis - timeoutDeadline) / 1000 + queryOptions.getExecutionTimeout(); String msg = String.format( "timeout before waiting %s rpc, query timeout:%d, already elapsed:%d, left for this:%d", - operation, queryOptions.getExecutionTimeout(), elapsed, leftTimeMs); + operation, queryOptions.getExecutionTimeout(), elapsed, leftTimeMs); LOG.warn("Query {} {}", DebugUtil.printId(queryId), msg); + if (!queryOptions.isSetExecutionTimeout() || !queryOptions.isSetQueryTimeout()) { + LOG.warn("Query {} does not set timeout info, execution timeout: is_set:{}, value:{}" + + ", query timeout: is_set:{}, value: {}, " + + "coordinator timeout deadline {}, cur time millis: {}", + DebugUtil.printId(queryId), + queryOptions.isSetExecutionTimeout(), queryOptions.getExecutionTimeout(), + queryOptions.isSetQueryTimeout(), queryOptions.getQueryTimeout(), + timeoutDeadline, currentTimeMillis); + } throw new UserException(msg); } @@ -1054,11 +1064,21 @@ public class Coordinator implements CoordInterface { Future>> futures, long leftTimeMs, String operation) throws RpcException, UserException { if (leftTimeMs <= 0) { - long elapsed = (System.currentTimeMillis() - timeoutDeadline) / 1000 + queryOptions.getExecutionTimeout(); + long currentTimeMillis = System.currentTimeMillis(); + long elapsed = (currentTimeMillis - timeoutDeadline) / 1000 + queryOptions.getExecutionTimeout(); String msg = String.format( "timeout before waiting %s rpc, query timeout:%d, already elapsed:%d, left for this:%d", operation, queryOptions.getExecutionTimeout(), elapsed, leftTimeMs); LOG.warn("Query {} {}", DebugUtil.printId(queryId), msg); + if (!queryOptions.isSetExecutionTimeout() || !queryOptions.isSetQueryTimeout()) { + LOG.warn("Query {} does not set timeout info, execution timeout: is_set:{}, value:{}" + + ", query timeout: is_set:{}, value: {}, " + + "coordinator timeout deadline {}, cur time millis: {}", + DebugUtil.printId(queryId), + queryOptions.isSetExecutionTimeout(), queryOptions.getExecutionTimeout(), + queryOptions.isSetQueryTimeout(), queryOptions.getQueryTimeout(), + timeoutDeadline, currentTimeMillis); + } throw new UserException(msg); }