Fix: Always export server state metrics (is_banned, is_paused) #943
+20
−4
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.
Problem
The current implementation has a critical issue with gauge-type metrics like
is_bannedandis_paused:Gauge metrics retain their last reported value indefinitely until explicitly updated. This means:
is_banned=1) and then information about it becomes unavailableis_banned=1forever until explicitly set to0This is especially problematic because state metrics should always reflect the current actual state, not a stale cached value.
Solution
This PR refactors
push_server_stats()to separate state and activity metrics:state_metrics (
is_banned,is_paused) are now exported for every server on every metrics collection cycleactivity_metrics (bytes_received, bytes_sent, etc.) remain conditional
Impact
is_bannedandis_pausedbecomes reliableTesting
cargo checkpasses without errors