nextcloud/lib/private/TaskProcessing
Yoan Bozhilov 3f3f9c6464 fix(taskprocessing): guard lockTask on scheduled, record started_at, Oracle fallback
Address review feedback (@marcelklehr, Copilot):
- lockTask claims only SCHEDULED tasks (was status != RUNNING) and stamps
  started_at in the same atomic UPDATE, so a finished task cannot be re-claimed
  and the external-provider claim path records started_at as well.
- claimWithBoundedRetry re-reads after lockTask instead of a follow-up UPDATE.
- Oracle joins SQLite on the bounded-retry fallback: Oracle cannot combine a
  row-limiting clause with FOR UPDATE (ORA-02014), which failed the claim tests
  on Oracle CI.
- Reword the worker docblock/comments to "prefer oldest available" (parallel
  SKIP LOCKED does not guarantee a strict global order).
- Add a regression test that lockTask does not resurrect a finished task.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-17 19:00:53 +02:00
..
Db fix(taskprocessing): guard lockTask on scheduled, record started_at, Oracle fallback 2026-06-17 19:00:53 +02:00
Manager.php fix(taskprocessing): claim tasks atomically with SKIP LOCKED + composite index 2026-06-17 19:00:53 +02:00
RemoveOldTasksBackgroundJob.php feat(rector): Enable SafeDeclareStrictTypesRector 2026-02-09 10:59:31 +01:00
SynchronousBackgroundJob.php chore: add missing Override attribute to OC 2026-04-28 21:29:27 +02:00