Skip to content

fix: Singleton-Guard target-spezifisch für Multi-Target-Jobs (v6.1.0) - #124

Merged
csoscd merged 1 commit into
mainfrom
fix/singleton-multi-target
Sep 1, 2026
Merged

fix: Singleton-Guard target-spezifisch für Multi-Target-Jobs (v6.1.0)#124
csoscd merged 1 commit into
mainfrom
fix/singleton-multi-target

Conversation

@csoscd

@csoscd csoscd commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Bug: ExecutionStartEndpoint::hasRunningExecution() prüfte job-weit (WHERE cronjob_id = :id AND finished_at IS NULL) ohne Target-Filter. Bei Singleton-Jobs mit mehreren Targets (z.B. Job 146 mit di, dm, dv, dvme) blockierte der erste gestartete Target alle weiteren — nur ein Target pro Scheduler-Tick erschien in der Ausführungshistorie.
  • Fix: Neue Methode hasRunningExecutionForTarget() mit AND target = :target-Filter. Der Singleton-Guard lässt jetzt mehrere unabhängige Targets desselben Jobs gleichzeitig laufen — nur dasselbe Target auf demselben Host wird geblockt.
  • Tests: singletonJobWithPendingRetryReturns409 auf Same-Target-Semantik angepasst; zwei neue Tests für korrektes Durchlassen anderer Targets.

Test plan

  • Alle 371 Unit- und Integrationstests lokal grün
  • GitHub CI: Security checks ✅, PHP Tests ✅, Docker Dev-Image Build ✅
  • Manueller Test: Multi-Target-Singleton-Job ausführen → alle Targets in der Historie

hasRunningExecution() prüfte job-weit ohne Target-Filter. Bei Jobs mit
mehreren Targets blockierte der erste gestartete Target alle weiteren,
obwohl jedes Target eine unabhängige Ausführung auf einem anderen System
darstellt. Pro Scheduler-Tick erschien dadurch nur ein einziger Eintrag
in der Ausführungshistorie.

Neue Methode hasRunningExecutionForTarget() mit AND target = :target
im SQL. Singleton-Guard und Retry-Pending-Check verwenden jetzt
hasPendingRetryForTarget() statt hasPendingRetry(), sodass der Guard
nur feuert, wenn dasselbe Target bereits läuft oder auf einen Retry
wartet. Bestehende Single-Target-Jobs sind nicht betroffen.

Tests: singletonJobWithPendingRetryReturns409 auf Same-Target-Semantik
angepasst; zwei neue Tests für das Durchlassen anderer Targets.
@csoscd
csoscd merged commit 85cc286 into main Sep 1, 2026
12 checks passed
@csoscd
csoscd deleted the fix/singleton-multi-target branch September 1, 2026 21:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant