*: add "gofail-go" for manual "Release" call #15
Merged
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.
To address #14.
ref. #12 and #13.
/cc @heyitsanthony
To reiterate etcd use case, we want to simulate leader heartbeat drop in incoming traffic:
With this patch,
gofail enable
would output:Now,
*Failpoint.Release
will be waiting to be triggered in a goroutine, instead of never being called withdefer
(triggered whengofail
disables the correspondingFailpoint
). This addsreleased bool
field to safely release multiple goroutines.#14 (comment) originally suggested
This PR's
// gofail-go:
does control queuedRelease
calls. Once disabled, it will prevent new failpoints from being issued. This PR tries to enable manualRelease
calls via disable request, because without control over inflightRelease
calls, the write lock for disable request would block, thus unable to delete the failpoints in the first place.