Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#3,096 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@SebTardif ya está trabajando en esto.

Desde el 20/10/2026.

  • #3097 de @SebTardif — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
go, kubernetes

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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).

Lenguaje dominante
Go
Estrellas
2.9k
Forks
582
Merge medio
1 d 14 h
PR fusionados (30 d)
69

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de NVIDIA/gpu-operator

Todos los issues de NVIDIA/gpu-operator

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.