Fix monitor thread crash when a phase carries extra_kwargs - #1326
Closed
rootkiller6788 wants to merge 1 commit into
Closed
Fix monitor thread crash when a phase carries extra_kwargs#1326rootkiller6788 wants to merge 1 commit into
rootkiller6788 wants to merge 1 commit into
Conversation
The monitor thread's get_value() iterated over the phase's extra_kwargs dict directly, yielding keys, and unpacked each key into two names. When a phase was parameterized with PhaseDescriptor.with_args() and the monitor function did not accept **kwargs, the monitor thread raised "ValueError: too many values to unpack (expected 2)" and failed the test. Iterate over extra_kwargs.items() instead and add a regression test.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
openhtf/core/monitors.py_MonitorThread.get_value()filtered the monitored phase'sextra_kwargswith:self.extra_kwargsis adict(seePhaseDescriptor.extra_kwargs), so iterating it yields its keys. Each key (a string) is then unpacked intoarg, val, which raises:This happens whenever a phase is parameterized with
PhaseDescriptor.with_args(...)(so it carriesextra_kwargs) and the monitor function does not take**kwargs. The monitor thread crashes and the test run fails.Reproduction
Before the fix this logs
ValueError: too many values to unpack (expected 2)inmeas_MonitorThreadand the test FAILs.Fix
Iterate over
self.extra_kwargs.items()instead of the dict itself.Tests
Added
test_get_value_with_extra_kwargsintest/core/monitors_test.py, which exercises a monitor without**kwargsagainst a phase descriptor carryingextra_kwargs. It fails on master and passes with the fix.