Open
Description
I find a problem in this repo when I use orchestrator
.
file: golib/sqlutils/sqlutils.go
code:
// QueryRowsMap is a convenience function allowing querying a result set while poviding a callback
// function activated per read row.
func QueryRowsMap(db *sql.DB, query string, on_row func(RowMap) error, args ...interface{}) error {
var err error
defer func() {
if derr := recover(); derr != nil {
err = errors.New(fmt.Sprintf("QueryRowsMap unexpected error: %+v", derr))
}
}()
... ...
return err
}
The err
modified in defer
will not return to the caller.
For example:
package main
import (
"fmt"
)
func main(){
i := test()
fmt.Println("main i:", i)
}
func test() int {
var a int
defer func () {
a = 2
}()
a = 1
return a
}
output:
main i: 1
The right usage like this:
package main
import (
"fmt"
)
func main(){
i := test()
fmt.Println("main i:", i)
}
func test() (a int) {
defer func () {
a = 2
}()
a = 1
return a
}
output:
main i: 2
Please check it.
Metadata
Metadata
Assignees
Labels
No labels