lxd: Fix deviceEventListener resource scheduling when joining cluster #11899
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.
Pass
deviceEventListener
a function that can get a fresh copy of state, rather than using a long held version, which can become out of date.This manifested itself in no container CPU scheduling being run for instances launched on a server that had just joined a cluster.
This was because the
ServerName
property in thestate.State
objectdeviceEventListener
was passed on LXD start up contained "none" but after the server had joined the cluster its ServerName changed to its cluster member name.This then meant that the
instance.LoadNodeAll()
call used insidedeviceEventListener
was filtering instances that were on server "none", of which there weren't any because the new instances were associated with the cluster member's name.This then meant that those instances did not get their CPU scheduling configured until LXD was next reloaded.