numa: fix scheduler panic due to topology serialization bug #23284
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.
The NUMA topology struct field
NodeIDs
is aidset.Set
, which has no public members. As a result, this field is never serialized via msgpack and persisted in state. Whennuma.affinity = "prefer"
, the scheduler dereferences this nil field and panics the scheduler worker.Ideally we would fix this by adding a msgpack serialization extension, but because the field already exists and is just always empty, this breaks RPC wire compatibility across upgrades. Instead, create a new field that's populated at the same time we populate the more useful
idset.Set
, and repopulate the set on demand.Fixes: https://hashicorp.atlassian.net/browse/NET-9924
Ref: https://github.com/hashicorp/nomad-enterprise/pull/1527