refactor(detection): 移除测试专用的延迟释放检测锁逻辑

- 删除了测试期间用于模拟BUSY弹窗的延迟释放机制
- 移除了RELEASE_DELAY_FOR_TEST_SECONDS常量和DELAYED_RELEASER调度器
- 简化了连接失败和异常时的检测锁释放逻辑,改为立即释放
- 清理了相关的测试日志输出代码
This commit is contained in:
2026-05-29 09:34:31 +08:00
parent 46ec9923a7
commit befe5abe0c

View File

@@ -27,8 +27,6 @@ import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
@@ -45,20 +43,6 @@ import java.util.concurrent.TimeUnit;
@Component
public class NettyClient {
// ========== TODO TEST-ONLY: 联调 BUSY 弹窗用,测试完成后整段删除 ==========
/**
* 测试期:连接源/设备失败时,延迟若干秒再释放检测锁,方便手动测试 BUSY 弹窗。
* 正式上线时把 RELEASE_DELAY_FOR_TEST_SECONDS 改回 0 或直接删除调度逻辑。
*/
private static final long RELEASE_DELAY_FOR_TEST_SECONDS = 300L;
private static final ScheduledExecutorService DELAYED_RELEASER =
Executors.newSingleThreadScheduledExecutor(r -> {
Thread t = new Thread(r, "lock-release-delay-test");
t.setDaemon(true);
return t;
});
// ========== /TODO TEST-ONLY ==========
@Resource
private SocketSourceResponseService socketSourceResponseService;
@@ -389,15 +373,9 @@ public class NettyClient {
// 异步建连失败时前端原本静默,补一次通知避免用户黑屏等待
notifyFrontendError(param, handler);
// 释放检测锁:抢锁后由 controller 异步发起的建连若失败,无法走 controller 兜底
// TODO TEST-ONLY: 测试 BUSY 弹窗期间延迟释放,正式部署改回立即释放
if (param != null && param.getUserPageId() != null) {
final String userPageId = param.getUserPageId();
DELAYED_RELEASER.schedule(
() -> DetectionLockManager.getInstance()
.releaseIfMatchPage(userPageId, "ASYNC_CONNECT_FAILED_DELAYED"),
RELEASE_DELAY_FOR_TEST_SECONDS, TimeUnit.SECONDS);
log.warn("[TEST-ONLY] 检测锁将在 {}s 后释放(连接失败延迟释放,便于测试 BUSY 弹窗userPageId={}",
RELEASE_DELAY_FOR_TEST_SECONDS, userPageId);
DetectionLockManager.getInstance()
.releaseIfMatchPage(param.getUserPageId(), "ASYNC_CONNECT_FAILED");
}
}
@@ -489,15 +467,9 @@ public class NettyClient {
notifyFrontendError(param, handler);
// 释放检测锁,理由同 onConnectionFailure
// TODO TEST-ONLY: 测试 BUSY 弹窗期间延迟释放,正式部署改回立即释放
if (param != null && param.getUserPageId() != null) {
final String userPageId = param.getUserPageId();
DELAYED_RELEASER.schedule(
() -> DetectionLockManager.getInstance()
.releaseIfMatchPage(userPageId, "ASYNC_CONNECT_EXCEPTION_DELAYED"),
RELEASE_DELAY_FOR_TEST_SECONDS, TimeUnit.SECONDS);
log.warn("[TEST-ONLY] 检测锁将在 {}s 后释放(连接异常延迟释放,便于测试 BUSY 弹窗userPageId={}",
RELEASE_DELAY_FOR_TEST_SECONDS, userPageId);
DetectionLockManager.getInstance()
.releaseIfMatchPage(param.getUserPageId(), "ASYNC_CONNECT_EXCEPTION");
}
}