server: fix panic if heartbeat reset happens for GC'd node #23383
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.
When setting up the timer for heartbeat invalidation, there's no control that allows us to remove that timer when the node is GC'd. If the GC window is narrow enough, it's possible to GC a node that has a waiting heartbeat timer. In this case, we hit a bug where querying for the node returns
nil
and this is incorrectly handled when checking for disconnect/reconnect state. Fix this bug by correctly handling anil
node and allowing theNode.Update
RPC to fire normally (which then errors correctly).Fixes: #23376
Ref: https://hashicorp.atlassian.net/browse/NET-10109