Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software:2222/vole.git

A free and open-source forge that lives in your Git repo.

Keep a finished CI attempt and drain before shutting down

73755a56550dc6819b47469fbb08e85e7c7c5d04 · Keenan Nemetz · 10d ago · parent 1265ea55

Keep a finished CI attempt and drain before shutting down

A job whose lease expired was requeued even when its last step had already succeeded. The queue cleared the owner and the runner refused to report, so the same work ran again as attempt 2 for no failing step.

Keep the owner on a requeued row and accept a late record and log until another runner leases the job. The runner now sends a late record when the heartbeat says the lease is gone, and the server accepts it only for the attempt that is still current.

A clean server stop also drained nothing: closing SSH killed the runner and threw the job away. Stop leasing new work on shutdown and wait up to a minute for the jobs already running to report.

packaging/systemd/vole.service +5

@@ -12,6 +12,11 @@ ExecStart=/usr/bin/vole serve --config /etc/vole/vole.toml
12 12 Restart=on-failure
13 13 RestartSec=2s
14 14
15 # A clean stop stops handing out jobs and gives the ones already leased up to a
16 # minute to report, then closes the HTTP listeners with a 20 second budget. Leave
17 # room above both so systemd does not kill the drain early.
18 TimeoutStopSec=100s
19
15 20 # Everything the service creates is group-readable at most: 0027 gives the
16 21 # service account rw, the vole group r, and everybody else nothing. Vole creates
17 22 # its own secrets at 0600 regardless, but a umask is what covers the files git,