mirror of
https://github.com/go-gitea/gitea.git
synced 2026-05-19 01:58:12 +00:00
Backport #37631 by @silverwind `UpdateLog` short-circuits on `len(Rows)==0` before honoring `NoMore`, so a final empty `UpdateLog{NoMore:true}` never runs `TransferLogs`. The task's `dbfs_data` rows are then never moved to log storage and never deleted. The bug has been latent since the original Actions implementation, `act_runner` versions after [runner#819](https://gitea.com/gitea/runner/pulls/819) trip it deterministically. Fix: let `NoMore=true` with no new rows fall through to `TransferLogs`. Bail when the runner has outrun the server (`Index > ack`) even with `NoMore`, since archiving a log with a gap is worse than retrying. Always call `WriteLogs` so `offset==0` bootstraps an empty DBFS file in the no-output case (otherwise `TransferLogs` would fail at `dbfs.Open`). Fixes: https://github.com/go-gitea/gitea/issues/37623 Ref: [runner#952](https://gitea.com/gitea/runner/pulls/952) Ref: [runner#950](https://gitea.com/gitea/runner/pulls/950) --- This PR was written with the help of Claude Opus 4.7 Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Claude (Opus 4.7) <noreply@anthropic.com>