Skip to content

Commit 686a1db

Browse files
levan-mtbavelier
andauthored
Safeguard unnecessary DS cleanup (#2242)
* Attempt to fix spurrious DS cleanups * don't return from profilesToApply on DAP status update (#2240) * don't return from profilesToApply on DAP status update * add/remove some logging,log uuid * cleanup * remove one more log line * revert datadogagentinternal controller change --------- Co-authored-by: Timothée Bavelier <timothee.bavelier@datadoghq.com>
1 parent f4e8de7 commit 686a1db

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

internal/controller/datadogagent/controller_reconcile_agent.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,24 @@ func (r *Reconciler) cleanupExtraneousDaemonSets(ctx context.Context, logger log
420420
}
421421

422422
dsName := component.GetDaemonSetNameFromDatadogAgent(dda, &dda.Spec)
423+
423424
validDaemonSetNames, validExtendedDaemonSetNames := r.getValidDaemonSetNames(dsName, providerList, profiles, useV3Metadata(dda))
425+
// log computed valid names for debugging
426+
vd := make([]string, 0, len(validDaemonSetNames))
427+
for n := range validDaemonSetNames {
428+
vd = append(vd, n)
429+
}
430+
veds := make([]string, 0, len(validExtendedDaemonSetNames))
431+
for n := range validExtendedDaemonSetNames {
432+
veds = append(veds, n)
433+
}
434+
435+
// Safety guard: if no valid names could be computed, skip cleanup to avoid
436+
// deleting all DaemonSets during transient cache hiccups (e.g., empty provider list).
437+
if len(validDaemonSetNames) == 0 && len(validExtendedDaemonSetNames) == 0 {
438+
logger.Info("Skipping cleanup of DaemonSets: no valid names computed", "providersLen", len(providerList), "profilesLen", len(profiles))
439+
return nil
440+
}
424441

425442
// Only the default profile uses an EDS when profiles are enabled
426443
// Multiple EDSs can be created with introspection
@@ -429,9 +446,10 @@ func (r *Reconciler) cleanupExtraneousDaemonSets(ctx context.Context, logger log
429446
if err := r.client.List(ctx, &edsList, matchLabels); err != nil {
430447
return err
431448
}
432-
449+
logger.V(1).Info("Listed ExtendedDaemonSets for cleanup", "count", len(edsList.Items))
433450
for _, eds := range edsList.Items {
434451
if _, ok := validExtendedDaemonSetNames[eds.Name]; !ok {
452+
logger.Info("Candidate ExtendedDaemonSet deletion", "name", eds.Name)
435453
if err := r.deleteV2ExtendedDaemonSet(logger, dda, &eds, newStatus); err != nil {
436454
return err
437455
}
@@ -444,8 +462,10 @@ func (r *Reconciler) cleanupExtraneousDaemonSets(ctx context.Context, logger log
444462
return err
445463
}
446464

465+
logger.V(1).Info("Listed DaemonSets for cleanup", "count", len(daemonSetList.Items))
447466
for _, daemonSet := range daemonSetList.Items {
448467
if _, ok := validDaemonSetNames[daemonSet.Name]; !ok {
468+
logger.Info("Candidate DaemonSet deletion", "name", daemonSet.Name)
449469
if err := r.deleteV2DaemonSet(logger, dda, &daemonSet, newStatus); err != nil {
450470
return err
451471
}

internal/controller/datadogagent/controller_reconcile_v2.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ func (r *Reconciler) profilesToApply(ctx context.Context, logger logr.Logger, no
322322
profilesList := datadoghqv1alpha1.DatadogAgentProfileList{}
323323
err := r.client.List(ctx, &profilesList)
324324
if err != nil {
325-
return nil, nil, err
325+
logger.Info("unable to list DatadogAgentProfiles", "error", err)
326326
}
327327

328328
var profileListToApply []datadoghqv1alpha1.DatadogAgentProfile
@@ -334,7 +334,7 @@ func (r *Reconciler) profilesToApply(ctx context.Context, logger logr.Logger, no
334334
oldStatus := profile.Status
335335
profileAppliedByNode, err = agentprofile.ApplyProfile(logger, &profile, nodeList, profileAppliedByNode, now, maxUnavailable, r.options.DatadogAgentInternalEnabled)
336336
if result, e := r.updateDAPStatus(ctx, logger, &profile, &oldStatus); utils.ShouldReturn(result, e) {
337-
return nil, nil, e
337+
logger.Info("unable to update DatadogAgentProfile status", "error", e, "requeue", result.Requeue, "requeueAfter", result.RequeueAfter)
338338
}
339339
if err != nil {
340340
// profile is invalid or conflicts

0 commit comments

Comments
 (0)