Repository navigation
Commit b9e43fb
committed
fix(backups): create no driver object for a job that already finished
The Velero, CNPG and MariaDB drivers decide a BackupJob or RestoreJob
is still running from the informer cache, at the top of the pass, and
create their driver object further down without looking again. A job
another actor marked Failed in between, or whose Failed status the
cache has not caught up with yet, still received a Velero Backup or
Restore, a cnpg.io or k8s.mariadb.com Backup, or a k8s.mariadb.com
Restore. Nothing tracks that object afterwards, because the
reconcilers skip terminal jobs: a backup runs that no Backup artifact
will ever reference, and a restore rewrites an application whose
RestoreJob already says Failed.
Restores are worse than that, because they rewrite the target before
creating anything. The Velero driver suspends the HelmReleases, halts
the VM and renames its PVCs over several passes; the CNPG driver
suspends the HelmRelease, patches the Postgres app and deletes the
Cluster with its PVCs once the WAL gate clears, which can take as long
as the archive takes to catch up.
Each driver now re-reads the job through the manager's uncached reader
right before it creates a driver object, and before the destructive
restore steps, and stops without touching the job's status when the
apiserver holds it as finished, deleted or being deleted: whoever
finished it wrote the verdict. A failed re-read requeues instead of
failing the job, since the job's state is what is unknown. The re-read
narrows the window rather than closing it: the job can still turn
terminal between the Get and the Create, as no apiserver precondition
ties the creation of one object to the state of another.
Signed-off-by: Mattia Eleuteri <[email protected]>
Assisted-by: LLM1 parent bc400df commit b9e43fb
7 files changed
Lines changed: 641 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
38 | 42 | | |
39 | 43 | | |
40 | 44 | | |
| |||
230 | 234 | | |
231 | 235 | | |
232 | 236 | | |
| 237 | + | |
233 | 238 | | |
234 | 239 | | |
235 | 240 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
309 | 309 | | |
310 | 310 | | |
311 | 311 | | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
312 | 315 | | |
313 | 316 | | |
314 | 317 | | |
| |||
584 | 587 | | |
585 | 588 | | |
586 | 589 | | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
587 | 593 | | |
588 | 594 | | |
589 | 595 | | |
| |||
916 | 922 | | |
917 | 923 | | |
918 | 924 | | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
919 | 931 | | |
920 | 932 | | |
921 | 933 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
0 commit comments