diff --git a/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/query/impl/join/JoinHandler.java b/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/query/impl/join/JoinHandler.java index 9e4ace0f53..cd0747d868 100644 --- a/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/query/impl/join/JoinHandler.java +++ b/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/query/impl/join/JoinHandler.java @@ -9,6 +9,7 @@ import com.actiontech.dble.backend.BackendConnection; import com.actiontech.dble.backend.mysql.CharsetUtil; import com.actiontech.dble.backend.mysql.nio.MySQLConnection; +import com.actiontech.dble.backend.mysql.nio.handler.query.DMLResponseHandler; import com.actiontech.dble.backend.mysql.nio.handler.query.OwnThreadDMLHandler; import com.actiontech.dble.backend.mysql.nio.handler.util.HandlerTool; import com.actiontech.dble.backend.mysql.nio.handler.util.RowDataComparator; @@ -216,8 +217,17 @@ protected void ownThreadJob(Object... objects) { rightLocal = takeFirst(rightQueue); } } - session.setHandlerEnd(this); + HandlerTool.terminateHandlerTree(this); + // for trace, when join end before all rows return ,the handler should mark as finished + for (DMLResponseHandler mergeHandler : this.getMerges()) { + DMLResponseHandler handler = mergeHandler; + while (handler != null && handler != this) { + session.setHandlerEnd(handler); + handler = handler.getNextHandler(); + } + } + session.setHandlerEnd(this); nextHandler.rowEofResponse(null, isLeft, conn); } catch (Exception e) { String msg = "join thread error, " + e.getLocalizedMessage(); diff --git a/src/main/java/com/actiontech/dble/server/trace/TraceResult.java b/src/main/java/com/actiontech/dble/server/trace/TraceResult.java index d7bde7d1c2..7476f14d60 100644 --- a/src/main/java/com/actiontech/dble/server/trace/TraceResult.java +++ b/src/main/java/com/actiontech/dble/server/trace/TraceResult.java @@ -165,7 +165,7 @@ public List genTraceResult() { if (LOGGER.isDebugEnabled()) { LOGGER.debug("collect info not in pairs,veryEnd:" + veryEnd + ",connFlagMap.size:" + connFlagMap.size() + ",connReceivedMap.size:" + connReceivedMap.size() + ",connFinishedMap.size:" + connFinishedMap.size() + - ",recordStartMap.size:" + connReceivedMap.size() + ",recordEndMap.size:" + connFinishedMap.size()); + ",recordStartMap.size:" + recordStartMap.size() + ",recordEndMap.size:" + recordEndMap.size()); } return null; }