Skip to content

Commit 1eed20b

Browse files
committed
refine error handling
Signed-off-by: YangKeao <[email protected]>
1 parent 6007a4f commit 1eed20b

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
lines changed

go.mod

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ module github.com/chaos-mesh/chaos-driver
22

33
go 1.17
44

5-
require github.com/spf13/cobra v1.2.1
5+
require (
6+
github.com/pkg/errors v0.8.1
7+
github.com/spf13/cobra v1.2.1
8+
)
69

710
require (
811
github.com/inconshreveable/mousetrap v1.0.0 // indirect

go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
187187
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
188188
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
189189
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
190+
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
190191
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
191192
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
192193
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=

pkg/client/client.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ package client
1919
import "C"
2020

2121
import (
22-
"errors"
2322
"math"
2423
"os"
2524
"syscall"
2625
"unsafe"
26+
27+
"github.com/pkg/errors"
2728
)
2829

2930
type Client struct {
@@ -38,11 +39,11 @@ var ErrFailToGetStat = errors.New("failed to get stat")
3839
func New() (*Client, error) {
3940
fd, err := syscall.Open("/dev/chaos", syscall.O_RDWR, 0)
4041
if err != nil {
41-
return nil, err
42+
return nil, errors.Wrap(err, "open /dev/chaos")
4243
}
4344

4445
if C.get_version(C.int(fd)) != COMPATIBLE_VERSION {
45-
return nil, ErrIncompatibleVersion
46+
return nil, errors.WithStack(ErrIncompatibleVersion)
4647
}
4748

4849
return &Client{
@@ -61,11 +62,11 @@ func (c *Client) InjectIOEMDelay(devPath string, op int, pidNs uint, delay int64
6162
if len(devPath) > 0 {
6263
info, err := os.Stat(devPath)
6364
if err != nil {
64-
return 0, err
65+
return 0, errors.Wrapf(err, "stat file: %s", devPath)
6566
}
6667
stat, ok := info.Sys().(*syscall.Stat_t)
6768
if !ok {
68-
return 0, ErrFailToGetStat
69+
return 0, errors.Wrap(ErrFailToGetStat, "dev info is not a stat")
6970
}
7071

7172
dev = C.uint32_t(stat.Rdev)
@@ -76,7 +77,7 @@ func (c *Client) InjectIOEMDelay(devPath string, op int, pidNs uint, delay int64
7677

7778
id := C.add_injection(C.int(c.fd), 0, unsafe.Pointer(&ioem_injection), 0, unsafe.Pointer(&delay_arg))
7879
if id < 0 {
79-
return 0, syscall.Errno(-id)
80+
return 0, errors.Wrap(syscall.Errno(-id), "add injection")
8081
}
8182

8283
return int(id), nil
@@ -85,7 +86,7 @@ func (c *Client) InjectIOEMDelay(devPath string, op int, pidNs uint, delay int64
8586
func (c *Client) Recover(id int) error {
8687
err := C.del_injection(C.int(c.fd), C.int(id))
8788
if err != 0 {
88-
return syscall.Errno(err)
89+
return errors.Wrap(syscall.Errno(err), "recover injection")
8990
}
9091

9192
return nil

0 commit comments

Comments
 (0)