From 5a329260091feb42bc9178de88ebe699e830a18e Mon Sep 17 00:00:00 2001 From: liangxu Date: Mon, 22 Jun 2026 21:15:05 +0800 Subject: [PATCH] fix: shorten monitor success cooldown --- server/internal/tenant/app/desktop_task_service.go | 14 ++++++++++---- .../tenant/app/desktop_task_service_test.go | 8 ++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/server/internal/tenant/app/desktop_task_service.go b/server/internal/tenant/app/desktop_task_service.go index b079a57..a676515 100644 --- a/server/internal/tenant/app/desktop_task_service.go +++ b/server/internal/tenant/app/desktop_task_service.go @@ -28,6 +28,8 @@ import ( const ( desktopPublishMaxAttempts = 3 maxConcurrentMonitorPlatformsPerDesktopClient = 2 + monitorSucceededTaskCooldownSQL = "2 seconds" + monitorUnhealthyTaskCooldownSQL = "30 seconds" ) var errDesktopTaskLeaseDeferred = errors.New("desktop task lease deferred") @@ -577,8 +579,10 @@ func leaseNextQueuedMonitorTaskSQL() string { AND recent.kind = 'monitor' AND recent.target_client_id = $3 AND recent.platform_id = dt.platform_id - AND recent.status IN ('succeeded', 'failed', 'unknown', 'aborted') - AND recent.updated_at >= now() - interval '30 seconds' + AND ( + (recent.status = 'succeeded' AND recent.updated_at >= now() - interval '` + monitorSucceededTaskCooldownSQL + `') + OR (recent.status IN ('failed', 'unknown', 'aborted') AND recent.updated_at >= now() - interval '` + monitorUnhealthyTaskCooldownSQL + `') + ) AND recent.desktop_id <> dt.desktop_id ) AND ( @@ -758,8 +762,10 @@ func leaseQueuedDesktopTaskByIDSQL() string { AND recent.kind = 'monitor' AND recent.target_client_id = $4 AND recent.platform_id = dt.platform_id - AND recent.status IN ('succeeded', 'failed', 'unknown', 'aborted') - AND recent.updated_at >= now() - interval '30 seconds' + AND ( + (recent.status = 'succeeded' AND recent.updated_at >= now() - interval '` + monitorSucceededTaskCooldownSQL + `') + OR (recent.status IN ('failed', 'unknown', 'aborted') AND recent.updated_at >= now() - interval '` + monitorUnhealthyTaskCooldownSQL + `') + ) AND recent.desktop_id <> dt.desktop_id ) ) diff --git a/server/internal/tenant/app/desktop_task_service_test.go b/server/internal/tenant/app/desktop_task_service_test.go index 174a0c9..acb50f1 100644 --- a/server/internal/tenant/app/desktop_task_service_test.go +++ b/server/internal/tenant/app/desktop_task_service_test.go @@ -252,7 +252,9 @@ func TestLeaseNextQueuedMonitorTaskSQLSerializesPerClientPlatform(t *testing.T) "COUNT(DISTINCT active_platform.platform_id)", "active_platform.target_client_id = $3", "< $8::integer", - "recent.status IN ('succeeded', 'failed', 'unknown', 'aborted')", + "recent.status = 'succeeded'", + "recent.updated_at >= now() - interval '2 seconds'", + "recent.status IN ('failed', 'unknown', 'aborted')", "recent.updated_at >= now() - interval '30 seconds'", } { if !strings.Contains(normalized, fragment) { @@ -274,7 +276,9 @@ func TestLeaseQueuedDesktopTaskByIDSQLSerializesMonitorPerClientPlatform(t *test "COUNT(DISTINCT active_platform.platform_id)", "active_platform.target_client_id = $4", "< $10::integer", - "recent.status IN ('succeeded', 'failed', 'unknown', 'aborted')", + "recent.status = 'succeeded'", + "recent.updated_at >= now() - interval '2 seconds'", + "recent.status IN ('failed', 'unknown', 'aborted')", "recent.updated_at >= now() - interval '30 seconds'", } { if !strings.Contains(normalized, fragment) {