From 04dc01cd25ea66f845ebec183b2399f056a61118 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 四月 2026 13:26:27 +0800
Subject: [PATCH] fix: lock auto tune rollback before source lookup
---
src/test/java/com/zy/ai/service/AutoTuneApplyServiceImplTest.java | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/test/java/com/zy/ai/service/AutoTuneApplyServiceImplTest.java b/src/test/java/com/zy/ai/service/AutoTuneApplyServiceImplTest.java
index 13c5bcd..04c55c4 100644
--- a/src/test/java/com/zy/ai/service/AutoTuneApplyServiceImplTest.java
+++ b/src/test/java/com/zy/ai/service/AutoTuneApplyServiceImplTest.java
@@ -23,6 +23,7 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
+import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
@@ -49,6 +50,7 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -430,6 +432,9 @@
verify(redisUtil).compareAndDelete(eq(RedisKeyType.AI_AUTO_TUNE_APPLY_LOCK.key), anyString());
assertEquals(0, transactionManager.getJobSaveOutsideTransactionCount());
assertEquals(0, transactionManager.getJobUpdateOutsideTransactionCount());
+ InOrder rollbackOrder = inOrder(redisUtil, aiAutoTuneChangeService);
+ rollbackOrder.verify(redisUtil).trySetStringIfAbsent(anyString(), anyString(), anyLong());
+ rollbackOrder.verify(aiAutoTuneChangeService, atLeastOnce()).list(any(Wrapper.class));
}
@Test
@@ -494,12 +499,6 @@
@Test
void rollbackLockNotAcquiredReturnsFailedAuditWithoutTargetWrite() {
- AiAutoTuneJob latestRealJob = job(10L, "manual", "success");
- AiAutoTuneChange configChange = successChange(10L, "sys_config", "", "conveyorStationTaskLimit", "10", "15");
- when(aiAutoTuneChangeService.list(any(Wrapper.class)))
- .thenReturn(List.of(configChange))
- .thenReturn(List.of(configChange));
- when(aiAutoTuneJobService.getById(10L)).thenReturn(latestRealJob);
when(redisUtil.trySetStringIfAbsent(anyString(), anyString(), anyLong())).thenReturn(false);
AutoTuneApplyResult result = service.rollbackLastSuccessfulJob("manual rollback");
@@ -515,6 +514,8 @@
assertTrue(transactionManager.getJobUpdateInsideTransactionCount() > 0);
assertEquals(0, transactionManager.getJobSaveOutsideTransactionCount());
assertEquals(0, transactionManager.getJobUpdateOutsideTransactionCount());
+ verify(aiAutoTuneChangeService, never()).list(any(Wrapper.class));
+ verify(aiAutoTuneJobService, never()).getById(any());
verify(configService, never()).saveConfigValue(any(), any());
verify(configService, never()).refreshSystemConfigCache();
verify(redisUtil).hasKey(RedisKeyType.AI_AUTO_TUNE_APPLY_LOCK.key);
--
Gitblit v1.9.1