log: build on –vmodule downgrade work by replacing Clear() with atomic cache swap #33111
+57
−44
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.
Builds on @MariusVanDerWijden’s original PR (#31536) to allow --vmodule log level downgrades by reworking the GlogHandler to use an atomic.Pointer[*sync.Map] for the callsite cache. I think this will eliminate Clear() races, avoid stale entry reinserts, and reduce lock contention while preserving the functionality introduced in Marius’s PR.
Key changes
• Replaced siteCache sync.Map with cachePtr atomic.Pointer[*sync.Map]
• Vmodule and Verbosity now atomically swap in a new cache instead of calling Clear()
• Updated WithAttrs to share the active cache pointer
Additional changes addressing original PR review feedback
• Handle snapshots h.patterns, performs regex matching outside the lock, and stores only if still current
• Simplified locking to a single sync.Mutex
• Forwarded the original ctx to origin.Handle(ctx, r)
⸻
Closes: #30717