fix: queue monitor tasks and recover doubao dom answers
Desktop Client Build / Resolve Build Metadata (push) Successful in 26s
Backend CI / Backend (push) Successful in 15m54s
Desktop Client Build / Build Desktop Client (push) Successful in 22m56s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 28s

This commit is contained in:
2026-06-22 16:37:41 +08:00
parent 12681105f2
commit 8f7a83bba9
6 changed files with 154 additions and 73 deletions
@@ -246,14 +246,6 @@ func (s *MonitoringService) dispatchMonitorDesktopTasks(
spec.TargetClientID = target.ClientID
}
available, throttleErr := acquireMonitorDesktopTaskPlatformSlot(ctx, tx, spec)
if throttleErr != nil {
return nil, nil, throttleErr
}
if !available {
continue
}
task, shouldPublish, fallbackLegacy, upsertErr := s.upsertMonitorDesktopTask(ctx, tx, repo, spec)
if upsertErr != nil {
return nil, nil, upsertErr
@@ -282,43 +274,8 @@ func monitorDesktopTaskSpecsNeedTargetLookup(specs []monitorDesktopTaskSpec) boo
return false
}
func acquireMonitorDesktopTaskPlatformSlot(ctx context.Context, tx pgx.Tx, spec monitorDesktopTaskSpec) (bool, error) {
if tx == nil || spec.TargetClientID == uuid.Nil || strings.TrimSpace(spec.PlatformID) == "" {
return false, nil
}
if _, err := tx.Exec(ctx, `SELECT pg_advisory_xact_lock($1)`, monitorDesktopTaskPlatformSlotLockKey(spec.TargetClientID, spec.PlatformID)); err != nil {
return false, response.ErrInternal(50123, "desktop_task_throttle_lock_failed", "failed to acquire phase2 monitor desktop platform slot")
}
var busy bool
if err := tx.QueryRow(ctx, monitorDesktopTaskPlatformSlotBusySQL(), spec.TenantID, spec.WorkspaceID, spec.TargetClientID, normalizeMonitoringPlatformID(spec.PlatformID), spec.MonitorTaskID).Scan(&busy); err != nil {
return false, response.ErrInternal(50124, "desktop_task_throttle_lookup_failed", "failed to inspect phase2 monitor desktop platform slot")
}
return !busy, nil
}
func monitorDesktopTaskPlatformSlotBusySQL() string {
return `
SELECT EXISTS (
SELECT 1
FROM desktop_tasks
WHERE tenant_id = $1
AND workspace_id = $2
AND kind = 'monitor'
AND target_client_id = $3
AND platform_id = $4
AND status = 'in_progress'
AND (
$5::bigint <= 0
OR monitor_task_id IS NULL
OR monitor_task_id <> $5
)
)
`
}
func monitorDesktopTaskPlatformSlotLockKey(clientID uuid.UUID, platformID string) int64 {
return int64(monitoringDailyStableHash("monitor_desktop_platform_slot", clientID.String(), normalizeMonitoringPlatformID(platformID)))
func monitorDesktopTaskClientSlotLockKey(clientID uuid.UUID) int64 {
return int64(monitoringDailyStableHash("monitor_desktop_client_slot", clientID.String()))
}
func (s *MonitoringService) loadMonitorDesktopTaskTargets(