From 10bf54cd88d7a3b001e2c67f4504c8fcd97b7954 Mon Sep 17 00:00:00 2001 From: dcy Date: Tue, 3 Jun 2025 16:22:19 +0800 Subject: [PATCH] fix "use schema" sql record without reach the threshold --- .../dble/log/slow/SlowQueryLogProcessor.java | 14 ++++++++------ .../dble/services/rwsplit/RWSplitService.java | 6 +++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/actiontech/dble/log/slow/SlowQueryLogProcessor.java b/src/main/java/com/actiontech/dble/log/slow/SlowQueryLogProcessor.java index b469ed9bb..214359314 100644 --- a/src/main/java/com/actiontech/dble/log/slow/SlowQueryLogProcessor.java +++ b/src/main/java/com/actiontech/dble/log/slow/SlowQueryLogProcessor.java @@ -150,12 +150,14 @@ public void putSlowQueryLog(BusinessService service, ITraceResult log, String ex public void putSlowQueryLogForce(BusinessService service, ITraceResult log, String executeSql) { - SlowQueryLogEntry logEntry = new SlowQueryLogEntry(executeSql, log, service.getUser(), service.getConnection().getHost(), service.getConnection().getId()); - final boolean enQueue = queue.offer(logEntry); - if (!enQueue) { - //abort - String errorMsg = "since there are too many slow query logs to be written, some slow query logs will be discarded so as not to affect business requirements. Discard log entry: {" + logEntry.toString() + "}"; - LOGGER.warn(errorMsg); + if (log.getOverAllMilliSecond() >= SlowQueryLog.getInstance().getSlowTime()) { + SlowQueryLogEntry logEntry = new SlowQueryLogEntry(executeSql, log, service.getUser(), service.getConnection().getHost(), service.getConnection().getId()); + final boolean enQueue = queue.offer(logEntry); + if (!enQueue) { + //abort + String errorMsg = "since there are too many slow query logs to be written, some slow query logs will be discarded so as not to affect business requirements. Discard log entry: {" + logEntry.toString() + "}"; + LOGGER.warn(errorMsg); + } } } } diff --git a/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java b/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java index 665422c7f..cace7cb4a 100644 --- a/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java +++ b/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java @@ -187,7 +187,11 @@ private void handleComInitDb(byte[] data) { switchSchema = mm.readString(getCharset().getClient()); session.execute(true, data, (isSuccess, resp, rwSplitService) -> { if (isSuccess && SlowQueryLog.getInstance().isEnableSlowLog()) { - SlowQueryLog.getInstance().putSlowQueryLogForce(this.session.getService(), new RwTraceResult(), "use " + switchSchema); + String sql = "use " + switchSchema; + if (AppendTraceId.getInstance().isEnable()) { + sql = String.format("/*+ trace_id=%d-%d */ %s", session.getService().getConnection().getId(), session.getService().getSqlUniqueId().incrementAndGet(), sql); + } + SlowQueryLog.getInstance().putSlowQueryLogForce(this.session.getService(), new RwTraceResult(), sql); } if (isSuccess) rwSplitService.setSchema(switchSchema); });