fix: acquire lock in _DefaultLoadCalc.get_load() to prevent race condition #4435
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.
Summary
_DefaultLoadCalc.get_load()where the sharedMovingAverageobject was accessed without acquiring the threading lockget_load()reads it, causing potential inconsistent state reads_get_avg()method which properly acquires the lock before readingDetails
The
get_load()classmethod was directly callingcls._instance._m_avg.get_avg()without lock protection, while:self._lockbefore callingadd_sample()_get_avg()properly acquiresself._lockbefore callingget_avg()This inconsistency could cause workers to report incorrect CPU load values to the LiveKit server, potentially leading to incorrect job assignment decisions.
Test plan
_get_avg()method properly acquires the lock🤖 Generated with Claude Code