reduce storagenode reconcile noise during bootstrap#283
Draft
boddumanohar wants to merge 1 commit into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
reduce storagenode reconcile noise during bootstrap
During initial cluster bring-up, "Storage node API not reachable yet"
logs flooded at INFO level from multiple concurrent reconcile loops
triggered by rapid SPDK proxy pod state transitions.
Two fixes:
expected transient conditions, not actionable at default verbosity.
Update events only trigger a reconcile when the pod phase actually
changes, not on every annotation/status/probe update. This eliminates
the multiple-reconcileID pile-up seen within the same second.
PR description:
Problem
During initial cluster bootstrap, the storagenode controller emitted
"Storage node API not reachable yet" at INFO level at very high
frequency. Two separate issues compounded each other:
The log level was INFO, so every requeue attempt was visible even
though an unreachable node API during bootstrap is fully expected.
More critically: SPDK proxy pods fire many Update events during
startup (Pending → ContainerCreating → Running, plus readiness probe
updates, annotation patches, etc.). Each event triggered a full
reconcile, producing multiple concurrent reconcile loops — visible
as several different reconcileIDs all logging at the same second —
even before the 10s RequeueAfter fired.
Fix
Demote both "not reachable yet" log sites (
postStorageNodeandwaitForNodeInfoReachable) fromlog.Infotolog.V(1).Info.They remain available at
-v=1for debugging but are suppressed atdefault operator verbosity.
Add a
predicate.Funcs{UpdateFunc: ...}to the SPDK proxy pod watchthat only passes Update events through when the pod's
.Status.Phasechanges. Create and Delete events are unaffected. This eliminates the
spurious reconcile storm during bootstrap without missing any
meaningful pod lifecycle transition.
No behaviour change
The reconcile logic, requeue interval, and error handling are
unchanged. Nodes that genuinely fail to come up are still detected and
requeued on the same schedule.