Why the type of failpoint.Value can't be string
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 895
- Forks
- 67
- PR merge metrics
- No merged PRs in 30d
Description
the definition in the source code about Value's type in "github.com/pingcap/failpoint/failpoint.go"
// Value represents value that retrieved from failpoint terms.
// It can be used as following types:
// 1. val.(int) // GO_FAILPOINTS="failpoint-name=return(1)"
// 2. val.(string) // GO_FAILPOINTS="failpoint-name=return('1')"
// 3. val.(bool) // GO_FAILPOINTS="failpoint-name=return(true)"
Value interface{}
but in my code
failpoint.Inject("demoPanic", func(val failpoint.Value) {
fmt.Println(val)
fmt.Println(val.(string))
}
and start my progrom with cmd:
GO_FAILPOINTS="mypackagename/demoPanic=return('100')" ./beego-backend
An exception was thrown
[panic.go:522] Handler crashed with error interface conversion: failpoint.Value is bool, not string
···
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in failpoint.go by tracing the Value definition and the parsing of return('100'), then reproduce the reported command with GO_FAILPOINTS and the demoPanic injection. Done means explaining why the runtime value is bool rather than string and aligning the documented behavior with the observed result if the implementation is incorrect.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100