Conversation
Return ErrNotAllowed for off so generated Eval guards skip the injection. Fixes pingcap#86 Signed-off-by: 1fanwang <1fannnw@gmail.com>
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.
What problem does this PR solve?
Setting a failpoint to
offstill runs the injected code. This can inject a failure even after the caller has switched the action off.Fixes #86.
What is changed and how it works?
The off action returns the existing non-triggering error instead of a successful evaluation. Generated injection guards then skip that evaluation. Counted off terms can still advance to a later action.
Check List
Testing Done
The same rewritten program prints
term=off injected=truebefore the fix andterm=off injected=falseafterward. The enabled control remains true.I ran the probe from an unchanged checkout of 55ac33a and from this branch.
Save this program as
/tmp/failpoint-off-probe-XyxNHL/main.go:Rewrite it once from the baseline checkout:
GOMAXPROCS=2 go run ./failpoint-ctl enable /tmp/failpoint-off-probe-XyxNHLGOMAXPROCS=2 go run /tmp/failpoint-off-probe-XyxNHL/*.goGOMAXPROCS=2 go run /tmp/failpoint-off-probe-XyxNHL/*.goRaw logs
Before:
After:
The separate rewriter test
TestRewriteInjectCall/case-0fails on both the unchanged baseline and this branch: its expected output still includes an evaluation guard that the rewriter no longer emits. This change leaves that pre-existing failure untouched.