Enhance conditional mark logic with use_longest
for special cases
#17317
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.
Description of PR
In PR #16930, we refined the logic of conditional marking to ensure that the longest matching entry with a True condition is prioritized. If the condition for the longest match is False, we then consider the next longest match.
However, there is a special case where the longest match has a False condition, but we still want to adopt this False condition instead of falling back to shorter matches. For example, in a skip scenario:
To address this, this PR introduces a new key,
use_longest
. Whenuse_longest
is set to True, only the conditions of the longest matching entry will be used, ensuring the intended behavior in such edge cases.Summary:
Fixes # (issue)
Type of change
Back port request
Approach
What is the motivation for this PR?
In PR #16930, we refined the logic of conditional marking to ensure that the longest matching entry with a True condition is prioritized. If the condition for the longest match is False, we then consider the next longest match.
However, there is a special case where the longest match has a False condition, but we still want to adopt this False condition instead of falling back to shorter matches. For example, in a skip scenario:
To address this, this PR introduces a new key,
use_longest
. Whenuse_longest
is set to True, only the conditions of the longest matching entry will be used, ensuring the intended behavior in such edge cases.How did you do it?
To address this, this PR introduces a new key,
use_longest
. Whenuse_longest
is set to True, only the conditions of the longest matching entry will be used, ensuring the intended behavior in such edge cases.How did you verify/test it?
Add unit test test cases
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation