Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Bug]: ClusterPolicy reconcile panics when a DaemonSet has no annotations

Aperta
#3,096 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@SebTardif ci sta già lavorando.

Dal 20/10/2026.

  • #3097 di @SebTardif — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
go, kubernetes

Direzione di ricerca

Read controllers/object_controls.go and run go test -count=1 -run TestIsDaemonsetSpecChanged/nil_live_annotations ./controllers/ to reproduce the panic. The issue says the desired DaemonSet must have allocated annotations, while a nil live annotation map should be treated like a missing hash. Done means the test passes and reconciliation updates the live DaemonSet; a pull request is already open.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Describe the bug

isDaemonsetSpecChanged panics when the live DaemonSet object has a nil annotation map. controller-runtime recovers the panic, so the operator process stays up, but that ClusterPolicy reconcile does not converge.

This was found by reading controllers/object_controls.go on main (operator v26.7.2). It is not a live cluster repro. The panic was added in 7843bcbfa, which assumed both DaemonSets already had an annotation map. Issue #499 was a different nil-map panic, in applyCommonDaemonsetMetadata, and that one was fixed.

To reproduce

From the code path:

  1. Call isDaemonsetSpecChanged with a live DaemonSet whose metadata.annotations is nil.
  2. A real apps/v1 read does not produce that nil map. etcd stores the internal DaemonSet, and conversion to apps/v1 always writes deprecated.daemonset.template.generation. Removing nvidia.com/last-applied-hash leaves that annotation, so the map stays non-nil.
  3. A unit test or a fake client can still pass a nil map. On main, that panics before the missing-hash branch runs.

Unit test, on current main:

go test -count=1 -run TestIsDaemonsetSpecChanged/nil_live_annotations ./controllers/

That case panics with appsv1.DaemonSet.Annotations must be allocated prior to calling isDaemonsetSpecChanged().

Expected behavior

Treat a nil live annotation map like a missing hash: set nvidia.com/last-applied-hash on the desired DaemonSet and update it. The NVIDIADriver path in internal/state/state_skel.go already does this with GetAnnotations().

The desired object should still be required to have an allocated annotation map. The caller allocates that before the compare.

I will open a pull request with that change. This does not implement #3071 (detecting spec drift beyond the stored hash).

Lingua principale
Go
Stelle
2.9k
Fork
582
Merge medio
2g 2h
PR unite (30g)
57

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di NVIDIA/gpu-operator

Tutte le issue di NVIDIA/gpu-operator

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.