From e4e91b46d0ce781e7dc87dcdf0d2909b01911d4b Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 四月 2026 12:34:31 +0800
Subject: [PATCH] fix: harden auto tune scheduler throttling
---
src/main/java/com/zy/ai/service/impl/AutoTuneCoordinatorServiceImpl.java | 32 ++++++++++++--------------------
1 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/zy/ai/service/impl/AutoTuneCoordinatorServiceImpl.java b/src/main/java/com/zy/ai/service/impl/AutoTuneCoordinatorServiceImpl.java
index 808895a..bbafe96 100644
--- a/src/main/java/com/zy/ai/service/impl/AutoTuneCoordinatorServiceImpl.java
+++ b/src/main/java/com/zy/ai/service/impl/AutoTuneCoordinatorServiceImpl.java
@@ -82,15 +82,15 @@
}
AutoTuneAgentService.AutoTuneAgentResult agentResult = null;
+ markLastTriggerGuard(intervalMinutes);
try {
agentResult = autoTuneAgentService.runAutoTune(AutoTuneTriggerType.AUTO.getCode());
- writeOperateLog(agentResult);
- markNoChangeGuardIfNeeded(latestSuccessfulJob, agentResult, intervalMinutes);
+ safeWriteOperateLog(agentResult);
return AutoTuneCoordinatorResult.triggered(agentResult);
} catch (Exception exception) {
log.error("Auto tune coordinator failed to run agent", exception);
agentResult = failedAgentResult(exception);
- writeOperateLog(agentResult);
+ safeWriteOperateLog(agentResult);
return AutoTuneCoordinatorResult.triggered(agentResult);
} finally {
redisUtil.compareAndDelete(lockKey, lockToken);
@@ -159,26 +159,10 @@
return System.currentTimeMillis() - latestFinishTime.getTime() >= intervalMillis;
}
- private void markNoChangeGuardIfNeeded(AiAutoTuneJob beforeJob,
- AutoTuneAgentService.AutoTuneAgentResult agentResult,
- int intervalMinutes) {
- if (agentResult == null || !Boolean.TRUE.equals(agentResult.getSuccess())) {
- return;
- }
- AiAutoTuneJob afterJob = latestSuccessfulAutoJob();
- if (!isSameJob(beforeJob, afterJob)) {
- return;
- }
+ private void markLastTriggerGuard(int intervalMinutes) {
long expireSeconds = intervalMinutes * 60L;
redisUtil.set(RedisKeyType.AI_AUTO_TUNE_LAST_TRIGGER_GUARD.key,
String.valueOf(System.currentTimeMillis()), expireSeconds);
- }
-
- private boolean isSameJob(AiAutoTuneJob beforeJob, AiAutoTuneJob afterJob) {
- if (beforeJob == null || afterJob == null) {
- return beforeJob == afterJob;
- }
- return beforeJob.getId() != null && beforeJob.getId().equals(afterJob.getId());
}
private AutoTuneAgentService.AutoTuneAgentResult failedAgentResult(Exception exception) {
@@ -195,6 +179,14 @@
return result;
}
+ private void safeWriteOperateLog(AutoTuneAgentService.AutoTuneAgentResult agentResult) {
+ try {
+ writeOperateLog(agentResult);
+ } catch (Exception exception) {
+ log.warn("Auto tune coordinator failed to write operate log", exception);
+ }
+ }
+
private void writeOperateLog(AutoTuneAgentService.AutoTuneAgentResult agentResult) {
if (agentResult == null) {
return;
--
Gitblit v1.9.1