From ad36eb64a73016d09f9ab71fad4d674b3156f98c Mon Sep 17 00:00:00 2001 From: Gaius Date: Tue, 28 Jun 2022 22:38:11 +0800 Subject: [PATCH] feat: remove github/pkg/errors package (#1416) Signed-off-by: Gaius --- client/clientutil/types.go | 5 ++-- client/config/deprecated.go | 3 +- client/config/dfcache.go | 30 +++++++++---------- client/config/dfget.go | 12 ++++---- client/config/dynconfig_test.go | 2 +- client/config/flags.go | 2 +- client/config/peerhost.go | 12 ++++---- client/daemon/daemon.go | 4 +-- client/daemon/objectstorage/objectstorage.go | 2 +- client/daemon/peer/peertask_conductor.go | 4 +-- client/daemon/peer/peertask_manager.go | 2 +- .../peer/peertask_piecetask_synchronizer.go | 2 +- client/daemon/peer/piece_manager.go | 2 +- client/daemon/proxy/proxy.go | 2 +- client/daemon/proxy/proxy_manager.go | 9 +++--- client/daemon/proxy/proxy_sni.go | 2 +- client/daemon/rpcserver/rpcserver.go | 2 +- client/daemon/storage/const.go | 3 +- client/daemon/storage/storage_manager.go | 2 +- client/dfcache/dfcache.go | 19 ++++++------ client/dfget/dfget.go | 8 ++--- cmd/dependency/dependency.go | 7 ++--- cmd/dependency/doc_cmd.go | 3 +- cmd/dfcache/cmd/export.go | 5 ++-- cmd/dfcache/cmd/import.go | 5 ++-- cmd/dfcache/cmd/root.go | 6 ++-- cmd/dfcache/cmd/stat.go | 5 ++-- cmd/dfget/cmd/daemon.go | 5 ++-- cmd/dfget/cmd/root.go | 17 ++++++----- cmd/manager/cmd/root.go | 4 +-- cmd/scheduler/cmd/root.go | 4 +-- go.mod | 2 +- internal/dferrors/error.go | 3 +- internal/job/job.go | 2 +- internal/job/queue.go | 3 +- manager/middlewares/error.go | 12 ++++---- manager/service/user.go | 5 ++-- pkg/dfnet/dfnet.go | 2 +- pkg/dfpath/dfpath.go | 7 ++--- pkg/digest/digest_reader.go | 3 +- pkg/net/http/range.go | 20 ++++++------- pkg/net/ip/ip.go | 5 ++-- pkg/objectstorage/oss.go | 5 ++-- pkg/rpc/cdnsystem/client/client.go | 4 +-- pkg/rpc/cdnsystem/client/piece_seed_stream.go | 7 +++-- pkg/rpc/client.go | 11 ++++--- pkg/rpc/dfdaemon/client/client.go | 2 +- pkg/rpc/dfdaemon/client/down_result_stream.go | 7 +++-- pkg/rpc/scheduler/client/client.go | 2 +- pkg/rpc/vsock.go | 7 ++--- .../hdfsprotocol/hdfs_source_client.go | 6 ++-- .../hdfsprotocol/hdfs_source_client_test.go | 2 +- .../httpprotocol/http_source_client_test.go | 3 +- .../clients/ossprotocol/oss_source_client.go | 26 ++++++++-------- pkg/source/request.go | 3 +- pkg/source/source_client.go | 19 ++++++------ pkg/unit/byte.go | 8 ++--- scheduler/config/config.go | 3 +- scheduler/config/dynconfig_test.go | 2 +- scheduler/resource/seed_peer.go | 5 ++-- 60 files changed, 183 insertions(+), 193 deletions(-) diff --git a/client/clientutil/types.go b/client/clientutil/types.go index 56e182658..25e016d5a 100644 --- a/client/clientutil/types.go +++ b/client/clientutil/types.go @@ -18,10 +18,11 @@ package clientutil import ( "encoding/json" + "errors" + "fmt" "time" "github.com/docker/go-units" - "github.com/pkg/errors" "golang.org/x/time/rate" "gopkg.in/yaml.v3" ) @@ -58,7 +59,7 @@ func (r *RateLimit) unmarshal(unmarshal func(in []byte, out interface{}) (err er case string: limit, err := units.RAMInBytes(value) if err != nil { - return errors.WithMessage(err, "invalid rate limit") + return fmt.Errorf("invalid rate limit: %w", err) } r.Limit = rate.Limit(limit) return nil diff --git a/client/config/deprecated.go b/client/config/deprecated.go index a81818db2..c0146baea 100644 --- a/client/config/deprecated.go +++ b/client/config/deprecated.go @@ -17,10 +17,9 @@ package config import ( + "errors" "fmt" "strings" - - "github.com/pkg/errors" ) var DefaultSupernodesValue = &SupernodesValue{ diff --git a/client/config/dfcache.go b/client/config/dfcache.go index 675dca362..fc5d9689f 100644 --- a/client/config/dfcache.go +++ b/client/config/dfcache.go @@ -18,6 +18,7 @@ package config import ( "encoding/json" + "errors" "fmt" "os" "path" @@ -25,7 +26,6 @@ import ( "syscall" "time" - "github.com/pkg/errors" "golang.org/x/time/rate" "d7y.io/dragonfly/v2/cmd/dependency/base" @@ -82,14 +82,14 @@ func validateCacheStat(cfg *CacheOption) error { func validateCacheImport(cfg *CacheOption) error { if err := cfg.checkInput(); err != nil { - return errors.Wrapf(dferrors.ErrInvalidArgument, "input path: %v", err) + return fmt.Errorf("input path %s: %w", err.Error(), dferrors.ErrInvalidArgument) } return nil } func ValidateCacheExport(cfg *CacheOption) error { if err := cfg.checkOutput(); err != nil { - return errors.Wrapf(dferrors.ErrInvalidArgument, "output: %v", err) + return fmt.Errorf("output %s: %w", err.Error(), dferrors.ErrInvalidArgument) } return nil } @@ -101,13 +101,13 @@ func ValidateCacheDelete(cfg *CacheOption) error { func (cfg *CacheOption) Validate(cmd string) error { // Some common validations if cfg == nil { - return errors.Wrap(dferrors.ErrInvalidArgument, "runtime config") + return fmt.Errorf("runtime config: %w", dferrors.ErrInvalidArgument) } if cfg.Cid == "" { - return errors.Wrap(dferrors.ErrInvalidArgument, "missing Cid") + return fmt.Errorf("missing Cid: %w", dferrors.ErrInvalidArgument) } if strings.IsBlank(cfg.Cid) { - return errors.Wrap(dferrors.ErrInvalidArgument, "Cid are all blanks") + return fmt.Errorf("Cid are all blanks: %w", dferrors.ErrInvalidArgument) } // cmd specific validations @@ -121,7 +121,7 @@ func (cfg *CacheOption) Validate(cmd string) error { case CmdDelete: return ValidateCacheDelete(cfg) default: - return errors.Wrapf(dferrors.ErrInvalidArgument, "unknown cache subcommand: %s", cmd) + return fmt.Errorf("unknown cache subcommand %s: %w", cmd, dferrors.ErrInvalidArgument) } } @@ -135,11 +135,11 @@ func convertCacheImport(cfg *CacheOption, args []string) error { cfg.Path = args[0] } if cfg.Path == "" { - return errors.Wrap(dferrors.ErrInvalidArgument, "missing input file") + return fmt.Errorf("missing input file: %w", dferrors.ErrInvalidArgument) } if cfg.Path, err = filepath.Abs(cfg.Path); err != nil { - return errors.Wrapf(err, "get absulate path for %s", cfg.Path) + return fmt.Errorf("get absulate path for %s: %w", cfg.Path, err) } return nil } @@ -150,11 +150,11 @@ func ConvertCacheExport(cfg *CacheOption, args []string) error { cfg.Output = args[0] } if cfg.Output == "" { - return errors.Wrap(dferrors.ErrInvalidArgument, "missing output file") + return fmt.Errorf("missing output file: %w", dferrors.ErrInvalidArgument) } if cfg.Output, err = filepath.Abs(cfg.Output); err != nil { - return errors.Wrapf(err, "get absulate path for %s", cfg.Output) + return fmt.Errorf("get absulate path for %s: %w", cfg.Output, err) } return nil } @@ -165,7 +165,7 @@ func ConvertCacheDelete(cfg *CacheOption, args []string) error { func (cfg *CacheOption) Convert(cmd string, args []string) error { if cfg == nil { - return errors.Wrap(dferrors.ErrInvalidArgument, "runtime config") + return fmt.Errorf("runtime config: %w", dferrors.ErrInvalidArgument) } switch cmd { @@ -178,7 +178,7 @@ func (cfg *CacheOption) Convert(cmd string, args []string) error { case CmdDelete: return ConvertCacheDelete(cfg, args) default: - return errors.Wrapf(dferrors.ErrInvalidArgument, "unknown cache subcommand: %s", cmd) + return fmt.Errorf("unknown cache subcommand %s: %w", cmd, dferrors.ErrInvalidArgument) } } @@ -190,13 +190,13 @@ func (cfg *CacheOption) String() string { func (cfg *CacheOption) checkInput() error { stat, err := os.Stat(cfg.Path) if err != nil { - return errors.Wrapf(err, "stat input path %q", cfg.Path) + return fmt.Errorf("stat input path %q: %w", cfg.Path, err) } if stat.IsDir() { return fmt.Errorf("path[%q] is directory but requires file path", cfg.Path) } if err := syscall.Access(cfg.Path, syscall.O_RDONLY); err != nil { - return errors.Wrapf(err, "access %q", cfg.Path) + return fmt.Errorf("access %q: %w", cfg.Path, err) } return nil } diff --git a/client/config/dfget.go b/client/config/dfget.go index 55cb4d848..aae2d4531 100644 --- a/client/config/dfget.go +++ b/client/config/dfget.go @@ -28,8 +28,6 @@ import ( "syscall" "time" - "github.com/pkg/errors" - "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/cmd/dependency/base" "d7y.io/dragonfly/v2/internal/dferrors" @@ -140,11 +138,11 @@ func NewDfgetConfig() *ClientOption { func (cfg *ClientOption) Validate() error { if cfg == nil { - return errors.Wrap(dferrors.ErrInvalidArgument, "runtime config") + return fmt.Errorf("runtime config: %w", dferrors.ErrInvalidArgument) } if !url.IsValid(cfg.URL) { - return errors.Wrapf(dferrors.ErrInvalidArgument, "url: %v", cfg.URL) + return fmt.Errorf("url %s: %w", cfg.URL, dferrors.ErrInvalidArgument) } if _, err := regexp.Compile(cfg.RecursiveAcceptRegex); err != nil { @@ -156,15 +154,15 @@ func (cfg *ClientOption) Validate() error { } if err := cfg.checkOutput(); err != nil { - return errors.Wrapf(dferrors.ErrInvalidArgument, "output: %v", err) + return fmt.Errorf("output %s: %w", err.Error(), dferrors.ErrInvalidArgument) } if err := cfg.checkHeader(); err != nil { - return errors.Wrapf(dferrors.ErrInvalidHeader, "output: %v", err) + return fmt.Errorf("output %s: %w", err.Error(), dferrors.ErrInvalidHeader) } if int64(cfg.RateLimit.Limit) < DefaultMinRate.ToNumber() { - return errors.Wrapf(dferrors.ErrInvalidArgument, "rate limit must be greater than %s", DefaultMinRate.String()) + return fmt.Errorf("rate limit must be greater than %s: %w", DefaultMinRate.String(), dferrors.ErrInvalidArgument) } return nil diff --git a/client/config/dynconfig_test.go b/client/config/dynconfig_test.go index adf0eb515..f0cec2de2 100644 --- a/client/config/dynconfig_test.go +++ b/client/config/dynconfig_test.go @@ -17,13 +17,13 @@ package config import ( + "errors" "os" "path/filepath" "testing" "time" "github.com/golang/mock/gomock" - "github.com/pkg/errors" "github.com/stretchr/testify/assert" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" diff --git a/client/config/flags.go b/client/config/flags.go index c1c24659e..265e9f528 100644 --- a/client/config/flags.go +++ b/client/config/flags.go @@ -17,13 +17,13 @@ package config import ( + "errors" "fmt" "strconv" "strings" "time" "github.com/docker/go-units" - "github.com/pkg/errors" "golang.org/x/time/rate" "d7y.io/dragonfly/v2/client/clientutil" diff --git a/client/config/peerhost.go b/client/config/peerhost.go index a1046b980..2265b8380 100644 --- a/client/config/peerhost.go +++ b/client/config/peerhost.go @@ -21,6 +21,7 @@ import ( "crypto/tls" "crypto/x509" "encoding/json" + "errors" "fmt" "net" "net/url" @@ -30,7 +31,6 @@ import ( "strings" "time" - "github.com/pkg/errors" "gopkg.in/yaml.v3" "d7y.io/dragonfly/v2/client/clientutil" @@ -132,11 +132,11 @@ func (p *DaemonOption) Validate() error { } if int64(p.Download.TotalRateLimit.Limit) < DefaultMinRate.ToNumber() { - return errors.Errorf("rate limit must be greater than %s", DefaultMinRate.String()) + return fmt.Errorf("rate limit must be greater than %s", DefaultMinRate.String()) } if int64(p.Upload.RateLimit.Limit) < DefaultMinRate.ToNumber() { - return errors.Errorf("rate limit must be greater than %s", DefaultMinRate.String()) + return fmt.Errorf("rate limit must be greater than %s", DefaultMinRate.String()) } if p.ObjectStorage.Enable { @@ -723,10 +723,10 @@ func certPoolFromFiles(files ...string) (*x509.CertPool, error) { for _, f := range files { cert, err := os.ReadFile(f) if err != nil { - return nil, errors.Wrapf(err, "read cert file %s", f) + return nil, fmt.Errorf("read cert file %s: %w", f, err) } if !roots.AppendCertsFromPEM(cert) { - return nil, errors.Errorf("invalid cert: %s", f) + return nil, fmt.Errorf("invalid cert: %s", f) } } return roots, nil @@ -745,7 +745,7 @@ type ProxyRule struct { func NewProxyRule(regx string, useHTTPS bool, direct bool, redirect string) (*ProxyRule, error) { exp, err := NewRegexp(regx) if err != nil { - return nil, errors.Wrap(err, "invalid regexp") + return nil, fmt.Errorf("invalid regexp: %w", err) } return &ProxyRule{ diff --git a/client/daemon/daemon.go b/client/daemon/daemon.go index 2c5dc9fd2..5538f4f06 100644 --- a/client/daemon/daemon.go +++ b/client/daemon/daemon.go @@ -20,6 +20,7 @@ import ( "context" "crypto/tls" "crypto/x509" + "errors" "fmt" "net" "net/http" @@ -30,7 +31,6 @@ import ( "time" "github.com/gin-gonic/gin" - "github.com/pkg/errors" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "golang.org/x/sync/errgroup" "golang.org/x/time/rate" @@ -155,7 +155,7 @@ func New(opt *config.DaemonOption, d dfpath.Dfpath) (Daemon, error) { } sched, err := schedulerclient.GetClientByAddr(addrs, opts...) if err != nil { - return nil, errors.Wrap(err, "failed to get schedulers") + return nil, fmt.Errorf("failed to get schedulers: %w", err) } // Storage.Option.DataPath is same with Daemon DataDir diff --git a/client/daemon/objectstorage/objectstorage.go b/client/daemon/objectstorage/objectstorage.go index a99b417a1..468fa7125 100644 --- a/client/daemon/objectstorage/objectstorage.go +++ b/client/daemon/objectstorage/objectstorage.go @@ -19,6 +19,7 @@ package objectstorage import ( "bytes" "context" + "errors" "fmt" "io" "math" @@ -35,7 +36,6 @@ import ( "github.com/gin-gonic/gin" "github.com/go-http-utils/headers" ginprometheus "github.com/mcuadros/go-gin-prometheus" - "github.com/pkg/errors" "go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin" "d7y.io/dragonfly/v2/client/clientutil" diff --git a/client/daemon/peer/peertask_conductor.go b/client/daemon/peer/peertask_conductor.go index 4a233bbcd..646e124f9 100644 --- a/client/daemon/peer/peertask_conductor.go +++ b/client/daemon/peer/peertask_conductor.go @@ -19,13 +19,13 @@ package peer import ( "bytes" "context" + "errors" "fmt" "io" "runtime/debug" "sync" "time" - "github.com/pkg/errors" semconv "go.opentelemetry.io/otel/semconv/v1.7.0" "go.opentelemetry.io/otel/trace" "go.uber.org/atomic" @@ -317,7 +317,7 @@ func (pt *peerTaskConductor) register() error { Content: piece.PieceContent, } } else { - err = errors.Errorf("scheduler return tiny piece but can not parse piece content") + err = errors.New("scheduler return tiny piece but can not parse piece content") // when peer register failed, some actions need to do with peerPacketStream pt.peerPacketStream = &dummyPeerPacketStream{} pt.span.RecordError(err) diff --git a/client/daemon/peer/peertask_manager.go b/client/daemon/peer/peertask_manager.go index d7aa68254..34c3c8f81 100644 --- a/client/daemon/peer/peertask_manager.go +++ b/client/daemon/peer/peertask_manager.go @@ -18,13 +18,13 @@ package peer import ( "context" + "errors" "fmt" "io" "sync" "time" "github.com/go-http-utils/headers" - "github.com/pkg/errors" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/trace" "golang.org/x/time/rate" diff --git a/client/daemon/peer/peertask_piecetask_synchronizer.go b/client/daemon/peer/peertask_piecetask_synchronizer.go index 79866fb08..6466a5e6f 100644 --- a/client/daemon/peer/peertask_piecetask_synchronizer.go +++ b/client/daemon/peer/peertask_piecetask_synchronizer.go @@ -18,12 +18,12 @@ package peer import ( "context" + "errors" "fmt" "io" "sync" "time" - "github.com/pkg/errors" "go.opentelemetry.io/otel/trace" "go.uber.org/atomic" "google.golang.org/grpc/codes" diff --git a/client/daemon/peer/piece_manager.go b/client/daemon/peer/piece_manager.go index 894054e61..da9cc2122 100644 --- a/client/daemon/peer/piece_manager.go +++ b/client/daemon/peer/piece_manager.go @@ -18,6 +18,7 @@ package peer import ( "context" + "errors" "fmt" "io" "net" @@ -26,7 +27,6 @@ import ( "os" "time" - "github.com/pkg/errors" "golang.org/x/time/rate" "d7y.io/dragonfly/v2/client/clientutil" diff --git a/client/daemon/proxy/proxy.go b/client/daemon/proxy/proxy.go index f596030fd..1dead26c0 100644 --- a/client/daemon/proxy/proxy.go +++ b/client/daemon/proxy/proxy.go @@ -19,6 +19,7 @@ package proxy import ( "crypto/tls" "encoding/base64" + "errors" "fmt" "io" "net" @@ -31,7 +32,6 @@ import ( "github.com/go-http-utils/headers" "github.com/golang/groupcache/lru" - "github.com/pkg/errors" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/propagation" semconv "go.opentelemetry.io/otel/semconv/v1.7.0" diff --git a/client/daemon/proxy/proxy_manager.go b/client/daemon/proxy/proxy_manager.go index 31e514d7c..95ca563cf 100644 --- a/client/daemon/proxy/proxy_manager.go +++ b/client/daemon/proxy/proxy_manager.go @@ -27,7 +27,6 @@ import ( "os" "reflect" - "github.com/pkg/errors" "github.com/spf13/viper" "d7y.io/dragonfly/v2/client/config" @@ -101,7 +100,7 @@ func NewProxyManager(peerHost *scheduler.PeerHost, peerTaskManager peer.TaskMana if hijackHTTPS.Cert != "" && hijackHTTPS.Key != "" { cert, err := certFromFile(hijackHTTPS.Cert, hijackHTTPS.Key) if err != nil { - return nil, errors.Wrap(err, "cert from file") + return nil, fmt.Errorf("cert from file: %w", err) } if cert.Leaf != nil && cert.Leaf.IsCA { logger.Debugf("hijack https request with CA <%s>", cert.Leaf.Subject.CommonName) @@ -112,7 +111,7 @@ func NewProxyManager(peerHost *scheduler.PeerHost, peerTaskManager peer.TaskMana p, err := NewProxy(options...) if err != nil { - return nil, errors.Wrap(err, "create proxy") + return nil, fmt.Errorf("create proxy: %w", err) } return &proxyManager{ @@ -198,14 +197,14 @@ func certFromFile(certFile string, keyFile string) (*tls.Certificate, error) { // cert.Certificate is a chain of one or more certificates, leaf first. cert, err := tls.LoadX509KeyPair(certFile, keyFile) if err != nil { - return nil, errors.Wrap(err, "load cert") + return nil, fmt.Errorf("load cert: %w", err) } logger.Infof("use self-signed certificate (%s, %s) for https hijacking", certFile, keyFile) // leaf is CA cert or server cert leaf, err := x509.ParseCertificate(cert.Certificate[0]) if err != nil { - return nil, errors.Wrap(err, "load leaf cert") + return nil, fmt.Errorf("load leaf cert: %w", err) } cert.Leaf = leaf diff --git a/client/daemon/proxy/proxy_sni.go b/client/daemon/proxy/proxy_sni.go index 277903919..8c44c1e90 100644 --- a/client/daemon/proxy/proxy_sni.go +++ b/client/daemon/proxy/proxy_sni.go @@ -18,6 +18,7 @@ package proxy import ( "crypto/tls" + "errors" "fmt" "net" "net/http" @@ -26,7 +27,6 @@ import ( "time" "github.com/golang/groupcache/lru" - "github.com/pkg/errors" logger "d7y.io/dragonfly/v2/internal/dflog" ) diff --git a/client/daemon/rpcserver/rpcserver.go b/client/daemon/rpcserver/rpcserver.go index 172e3e118..935d9a039 100644 --- a/client/daemon/rpcserver/rpcserver.go +++ b/client/daemon/rpcserver/rpcserver.go @@ -18,6 +18,7 @@ package rpcserver import ( "context" + "errors" "fmt" "io" "math" @@ -25,7 +26,6 @@ import ( "os" "time" - "github.com/pkg/errors" "go.uber.org/atomic" "google.golang.org/grpc" "google.golang.org/grpc/codes" diff --git a/client/daemon/storage/const.go b/client/daemon/storage/const.go index 7e0ff3318..797f4c1aa 100644 --- a/client/daemon/storage/const.go +++ b/client/daemon/storage/const.go @@ -17,9 +17,8 @@ package storage import ( + "errors" "os" - - "github.com/pkg/errors" ) const ( diff --git a/client/daemon/storage/storage_manager.go b/client/daemon/storage/storage_manager.go index 3a754fbbb..b737f5588 100644 --- a/client/daemon/storage/storage_manager.go +++ b/client/daemon/storage/storage_manager.go @@ -19,6 +19,7 @@ package storage import ( "context" "encoding/json" + "errors" "fmt" "io" "os" @@ -31,7 +32,6 @@ import ( "time" "github.com/docker/go-units" - "github.com/pkg/errors" "github.com/shirou/gopsutil/v3/disk" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/trace" diff --git a/client/dfcache/dfcache.go b/client/dfcache/dfcache.go index 68ebd20ad..b4a77be59 100644 --- a/client/dfcache/dfcache.go +++ b/client/dfcache/dfcache.go @@ -18,13 +18,12 @@ package dfcache import ( "context" + "errors" "fmt" "net/url" "os" "time" - "github.com/pkg/errors" - "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/internal/dferrors" logger "d7y.io/dragonfly/v2/internal/dflog" @@ -52,7 +51,7 @@ func Stat(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { ) if err := cfg.Validate(config.CmdStat); err != nil { - return errors.Wrap(err, "validate stat option failed") + return fmt.Errorf("validate stat option failed: %w", err) } wLog := logger.With("Cid", cfg.Cid, "Tag", cfg.Tag) @@ -72,7 +71,7 @@ func Stat(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { <-ctx.Done() if ctx.Err() == context.DeadlineExceeded { - return errors.Errorf("stat timeout(%s)", cfg.Timeout) + return fmt.Errorf("stat timeout(%s)", cfg.Timeout) } return statError } @@ -118,7 +117,7 @@ func Import(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { ) if err := cfg.Validate(config.CmdImport); err != nil { - return errors.Wrap(err, "validate import option failed") + return fmt.Errorf("validate import option failed: %w", err) } wLog := logger.With("Cid", cfg.Cid, "Tag", cfg.Tag, "file", cfg.Path) @@ -138,7 +137,7 @@ func Import(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { <-ctx.Done() if ctx.Err() == context.DeadlineExceeded { - return errors.Errorf("import timeout(%s)", cfg.Timeout) + return fmt.Errorf("import timeout(%s)", cfg.Timeout) } return importError } @@ -180,7 +179,7 @@ func Export(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { ) if err := cfg.Validate(config.CmdExport); err != nil { - return errors.Wrap(err, "validate export option failed") + return fmt.Errorf("validate export option failed: %w", err) } wLog := logger.With("Cid", cfg.Cid, "Tag", cfg.Tag, "output", cfg.Output) @@ -200,7 +199,7 @@ func Export(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { <-ctx.Done() if ctx.Err() == context.DeadlineExceeded { - return errors.Errorf("export timeout(%s)", cfg.Timeout) + return fmt.Errorf("export timeout(%s)", cfg.Timeout) } return exportError } @@ -250,7 +249,7 @@ func Delete(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { ) if err := cfg.Validate(config.CmdDelete); err != nil { - return errors.Wrap(err, "validate delete option failed") + return fmt.Errorf("validate delete option failed: %w", err) } wLog := logger.With("Cid", cfg.Cid, "Tag", cfg.Tag) @@ -270,7 +269,7 @@ func Delete(cfg *config.DfcacheConfig, client daemonclient.DaemonClient) error { <-ctx.Done() if ctx.Err() == context.DeadlineExceeded { - return errors.Errorf("delete timeout(%s)", cfg.Timeout) + return fmt.Errorf("delete timeout(%s)", cfg.Timeout) } return deleteError } diff --git a/client/dfget/dfget.go b/client/dfget/dfget.go index 108f83423..f6c060af2 100644 --- a/client/dfget/dfget.go +++ b/client/dfget/dfget.go @@ -18,6 +18,7 @@ package dfget import ( "context" + "errors" "fmt" "io" "net/url" @@ -29,7 +30,6 @@ import ( "time" "github.com/go-http-utils/headers" - "github.com/pkg/errors" "github.com/schollz/progressbar/v3" "d7y.io/dragonfly/v2/client/config" @@ -68,7 +68,7 @@ func Download(cfg *config.DfgetConfig, client daemonclient.DaemonClient) error { <-ctx.Done() if ctx.Err() == context.DeadlineExceeded { - return errors.Errorf("download timeout(%s)", cfg.Timeout) + return fmt.Errorf("download timeout(%s)", cfg.Timeout) } return downError } @@ -185,13 +185,13 @@ func downloadFromSource(ctx context.Context, cfg *config.DfgetConfig, hdr map[st } if encoded != "" && encoded != d.Encoded { - return errors.Errorf("%s digest is not matched: real[%s] expected[%s]", d.Algorithm, encoded, d.Encoded) + return fmt.Errorf("%s digest is not matched: real[%s] expected[%s]", d.Algorithm, encoded, d.Encoded) } } // change file owner if err = os.Chown(target.Name(), basic.UserID, basic.UserGroup); err != nil { - return errors.Wrapf(err, "change file owner to uid[%d] gid[%d]", basic.UserID, basic.UserGroup) + return fmt.Errorf("change file owner to uid[%d] gid[%d]: %w", basic.UserID, basic.UserGroup, err) } if err = os.Rename(target.Name(), cfg.Output); err != nil { diff --git a/cmd/dependency/dependency.go b/cmd/dependency/dependency.go index 59031a4fc..26fe657e7 100644 --- a/cmd/dependency/dependency.go +++ b/cmd/dependency/dependency.go @@ -31,7 +31,6 @@ import ( "github.com/go-echarts/statsview/viewer" "github.com/mitchellh/mapstructure" "github.com/phayes/freeport" - "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/viper" "go.opentelemetry.io/otel" @@ -72,7 +71,7 @@ func InitCobra(cmd *cobra.Command, useConfigFile bool, config interface{}) { // Bind common flags if err := viper.BindPFlags(flags); err != nil { - panic(errors.Wrap(err, "bind common flags to viper")) + panic(fmt.Errorf("bind common flags to viper: %w", err)) } // Config for binding env @@ -178,12 +177,12 @@ func initConfig(useConfigFile bool, name string, config interface{}) { } } if !ignoreErr { - panic(errors.Wrap(err, "viper read config")) + panic(fmt.Errorf("viper read config: %w", err)) } } } if err := viper.Unmarshal(config, initDecoderConfig); err != nil { - panic(errors.Wrap(err, "unmarshal config to struct")) + panic(fmt.Errorf("unmarshal config to struct: %w", err)) } } diff --git a/cmd/dependency/doc_cmd.go b/cmd/dependency/doc_cmd.go index b8cc22cab..569b38c17 100644 --- a/cmd/dependency/doc_cmd.go +++ b/cmd/dependency/doc_cmd.go @@ -21,7 +21,6 @@ import ( "io/fs" "os" - "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/cobra/doc" ) @@ -67,7 +66,7 @@ func (g *genDocCommand) runDoc() error { } if !file.IsDir() { - return errors.Errorf("path %s is not dir, please check it", g.path) + return fmt.Errorf("path %s is not dir, please check it", g.path) } return doc.GenMarkdownTree(g.cmd.Parent(), g.path) diff --git a/cmd/dfcache/cmd/export.go b/cmd/dfcache/cmd/export.go index fa4635ea0..0d962eb88 100644 --- a/cmd/dfcache/cmd/export.go +++ b/cmd/dfcache/cmd/export.go @@ -17,7 +17,8 @@ package cmd import ( - "github.com/pkg/errors" + "fmt" + "github.com/spf13/cobra" "github.com/spf13/viper" @@ -50,7 +51,7 @@ func initExport() { flags.StringVarP(&dfcacheConfig.Output, "output", "O", "", "export file path") flags.BoolVarP(&dfcacheConfig.LocalOnly, "local", "l", false, "only export file from local cache") if err := viper.BindPFlags(flags); err != nil { - panic(errors.Wrap(err, "bind cache export flags to viper")) + panic(fmt.Errorf("bind cache export flags to viper: %w", err)) } } diff --git a/cmd/dfcache/cmd/import.go b/cmd/dfcache/cmd/import.go index 5331038b9..08250d251 100644 --- a/cmd/dfcache/cmd/import.go +++ b/cmd/dfcache/cmd/import.go @@ -17,7 +17,8 @@ package cmd import ( - "github.com/pkg/errors" + "fmt" + "github.com/spf13/cobra" "github.com/spf13/viper" @@ -49,7 +50,7 @@ func initImport() { flags := importCmd.Flags() flags.StringVarP(&dfcacheConfig.Path, "input", "I", "", "import the given file into P2P network") if err := viper.BindPFlags(flags); err != nil { - panic(errors.Wrap(err, "bind cache import flags to viper")) + panic(fmt.Errorf("bind cache import flags to viper: %w", err)) } } diff --git a/cmd/dfcache/cmd/root.go b/cmd/dfcache/cmd/root.go index 30b976245..b6bd7c07a 100644 --- a/cmd/dfcache/cmd/root.go +++ b/cmd/dfcache/cmd/root.go @@ -18,10 +18,10 @@ package cmd import ( "context" + "errors" "fmt" "os" - "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/viper" "gopkg.in/yaml.v3" @@ -88,7 +88,7 @@ func init() { // Bind common flags if err := viper.BindPFlags(flags); err != nil { - panic(errors.Wrap(err, "bind cache common flags to viper")) + panic(fmt.Errorf("bind cache common flags to viper: %w", err)) } initStat() @@ -125,7 +125,7 @@ func runDfcacheSubcmd(cmdName string, args []string) error { // Initialize logger if err := logger.InitDfcache(dfcacheConfig.Console, d.LogDir()); err != nil { - return errors.Wrap(err, "init client dfcache logger") + return fmt.Errorf("init client dfcache logger: %w", err) } logger.Infof("Version:\n%s", version.Version()) diff --git a/cmd/dfcache/cmd/stat.go b/cmd/dfcache/cmd/stat.go index 4642ab875..5e687b596 100644 --- a/cmd/dfcache/cmd/stat.go +++ b/cmd/dfcache/cmd/stat.go @@ -17,7 +17,8 @@ package cmd import ( - "github.com/pkg/errors" + "fmt" + "github.com/spf13/cobra" "github.com/spf13/viper" @@ -49,7 +50,7 @@ func initStat() { flags := statCmd.Flags() flags.BoolVarP(&dfcacheConfig.LocalOnly, "local", "l", dfcacheConfig.LocalOnly, "only check task exists locally, and don't check other peers in P2P network") if err := viper.BindPFlags(flags); err != nil { - panic(errors.Wrap(err, "bind cache stat flags to viper")) + panic(fmt.Errorf("bind cache stat flags to viper: %w", err)) } } diff --git a/cmd/dfget/cmd/daemon.go b/cmd/dfget/cmd/daemon.go index f4d2c94fe..d7adab587 100644 --- a/cmd/dfget/cmd/daemon.go +++ b/cmd/dfget/cmd/daemon.go @@ -18,12 +18,13 @@ package cmd import ( "context" + "errors" + "fmt" "os" "path" "time" "github.com/gofrs/flock" - "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/viper" "gopkg.in/yaml.v3" @@ -62,7 +63,7 @@ it supports container engine, wget and other downloading tools through proxy fun // Initialize logger if err := logger.InitDaemon(cfg.Verbose, cfg.Console, d.LogDir()); err != nil { - return errors.Wrap(err, "init client daemon logger") + return fmt.Errorf("init client daemon logger: %w", err) } logger.RedirectStdoutAndStderr(cfg.Console, path.Join(d.LogDir(), "daemon")) diff --git a/cmd/dfget/cmd/root.go b/cmd/dfget/cmd/root.go index ec5185649..3313e2fc9 100644 --- a/cmd/dfget/cmd/root.go +++ b/cmd/dfget/cmd/root.go @@ -18,6 +18,7 @@ package cmd import ( "context" + "errors" "fmt" "os" "os/exec" @@ -26,7 +27,6 @@ import ( "time" "github.com/gofrs/flock" - "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/viper" "gopkg.in/yaml.v3" @@ -77,7 +77,7 @@ var rootCmd = &cobra.Command{ // Initialize logger if err := logger.InitDfget(dfgetConfig.Verbose, dfgetConfig.Console, d.LogDir()); err != nil { - return errors.Wrap(err, "init client dfget logger") + return fmt.Errorf("init client dfget logger: %w", err) } // update plugin directory @@ -99,17 +99,18 @@ var rootCmd = &cobra.Command{ fmt.Printf("output path: %s\n", dfgetConfig.Output) // do get file - var errInfo string err = runDfget(d.DfgetLockPath(), d.DaemonSockPath()) if err != nil { - errInfo = fmt.Sprintf("error: %v", err) + msg := fmt.Sprintf("download success: %t cost: %d ms error: %s", false, time.Since(start).Milliseconds(), err.Error()) + logger.With("url", dfgetConfig.URL).Info(msg) + fmt.Println(msg) + return fmt.Errorf("download url %s: %w", dfgetConfig.URL, err) } - msg := fmt.Sprintf("download success: %t cost: %d ms %s", err == nil, time.Since(start).Milliseconds(), errInfo) + msg := fmt.Sprintf("download success: %t cost: %d ms", true, time.Since(start).Milliseconds()) logger.With("url", dfgetConfig.URL).Info(msg) fmt.Println(msg) - - return errors.Wrapf(err, "download url: %s", dfgetConfig.URL) + return nil }, } @@ -190,7 +191,7 @@ func init() { // Bind cmd flags if err := viper.BindPFlags(flagSet); err != nil { - panic(errors.Wrap(err, "bind dfget flags to viper")) + panic(fmt.Errorf("bind dfget flags to viper: %w", err)) } } diff --git a/cmd/manager/cmd/root.go b/cmd/manager/cmd/root.go index 8798755b6..9a964f4d5 100644 --- a/cmd/manager/cmd/root.go +++ b/cmd/manager/cmd/root.go @@ -17,10 +17,10 @@ package cmd import ( + "fmt" "os" "path" - "github.com/pkg/errors" "github.com/spf13/cobra" "gopkg.in/yaml.v3" @@ -54,7 +54,7 @@ for managing schedulers and seed peers, offering http apis and portal, etc.`, // Initialize logger if err := logger.InitManager(cfg.Verbose, cfg.Console, d.LogDir()); err != nil { - return errors.Wrap(err, "init manager logger") + return fmt.Errorf("init manager logger: %w", err) } logger.RedirectStdoutAndStderr(cfg.Console, path.Join(d.LogDir(), "manager")) diff --git a/cmd/scheduler/cmd/root.go b/cmd/scheduler/cmd/root.go index 78c44bf59..b6d90b825 100644 --- a/cmd/scheduler/cmd/root.go +++ b/cmd/scheduler/cmd/root.go @@ -18,10 +18,10 @@ package cmd import ( "context" + "fmt" "os" "path" - "github.com/pkg/errors" "github.com/spf13/cobra" "gopkg.in/yaml.v3" @@ -58,7 +58,7 @@ generate and maintain a P2P network during the download process, and push suitab // Initialize logger if err := logger.InitScheduler(cfg.Verbose, cfg.Console, d.LogDir()); err != nil { - return errors.Wrap(err, "init scheduler logger") + return fmt.Errorf("init scheduler logger: %w", err) } logger.RedirectStdoutAndStderr(cfg.Console, path.Join(d.LogDir(), "scheduler")) diff --git a/go.mod b/go.mod index 09715e2a1..2f74c842e 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,6 @@ require ( github.com/onsi/ginkgo/v2 v2.1.4 github.com/onsi/gomega v1.19.0 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 - github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.12.2 github.com/schollz/progressbar/v3 v3.8.6 github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b @@ -164,6 +163,7 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.1 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect github.com/prometheus/client_model v0.2.0 // indirect diff --git a/internal/dferrors/error.go b/internal/dferrors/error.go index 00cbe5a3a..cf5953914 100644 --- a/internal/dferrors/error.go +++ b/internal/dferrors/error.go @@ -17,10 +17,9 @@ package dferrors import ( + "errors" "fmt" - "github.com/pkg/errors" - "d7y.io/dragonfly/v2/pkg/rpc/base" ) diff --git a/internal/job/job.go b/internal/job/job.go index 78dace948..81fe36ed7 100644 --- a/internal/job/job.go +++ b/internal/job/job.go @@ -19,6 +19,7 @@ package job import ( "context" "encoding/json" + "errors" "fmt" "reflect" "time" @@ -28,7 +29,6 @@ import ( machineryv1log "github.com/RichardKnop/machinery/v1/log" machineryv1tasks "github.com/RichardKnop/machinery/v1/tasks" "github.com/go-redis/redis/v8" - "github.com/pkg/errors" ) const ( diff --git a/internal/job/queue.go b/internal/job/queue.go index 87acfa9e9..858c0cee9 100644 --- a/internal/job/queue.go +++ b/internal/job/queue.go @@ -17,9 +17,8 @@ package job import ( + "errors" "fmt" - - "github.com/pkg/errors" ) type Queue string diff --git a/manager/middlewares/error.go b/manager/middlewares/error.go index 4e5b7e53c..f5c0ae212 100644 --- a/manager/middlewares/error.go +++ b/manager/middlewares/error.go @@ -17,13 +17,13 @@ package middlewares import ( + "errors" "net/http" "github.com/VividCortex/mysqlerr" "github.com/gin-gonic/gin" "github.com/go-sql-driver/mysql" redigo "github.com/gomodule/redigo/redis" - "github.com/pkg/errors" "golang.org/x/crypto/bcrypt" "gorm.io/gorm" @@ -55,8 +55,9 @@ func Error() gin.HandlerFunc { } // RPC error handler - if err, ok := errors.Cause(err.Err).(*dferrors.DfError); ok { - switch err.Code { + var dferr *dferrors.DfError + if errors.As(err.Err, &dferr) { + switch dferr.Code { case base.Code_InvalidResourceType: c.JSON(http.StatusBadRequest, ErrorResponse{ Message: http.StatusText(http.StatusBadRequest), @@ -91,8 +92,9 @@ func Error() gin.HandlerFunc { } // Mysql error handler - if err, ok := errors.Cause(err.Err).(*mysql.MySQLError); ok { - switch err.Number { + var merr *mysql.MySQLError + if errors.As(err.Err, &merr) { + switch merr.Number { case mysqlerr.ER_DUP_ENTRY: c.JSON(http.StatusConflict, ErrorResponse{ Message: http.StatusText(http.StatusConflict), diff --git a/manager/service/user.go b/manager/service/user.go index 7e1f94cdf..6ab52c80c 100644 --- a/manager/service/user.go +++ b/manager/service/user.go @@ -18,11 +18,11 @@ package service import ( "context" + "errors" "fmt" "github.com/VividCortex/mysqlerr" "github.com/go-sql-driver/mysql" - "github.com/pkg/errors" "golang.org/x/crypto/bcrypt" manageroauth "d7y.io/dragonfly/v2/manager/auth/oauth" @@ -179,7 +179,8 @@ func (s *service) OauthSigninCallback(ctx context.Context, name, code string) (* State: model.UserStateEnabled, } if err := s.db.WithContext(ctx).Create(&user).Error; err != nil { - if err, ok := errors.Cause(err).(*mysql.MySQLError); ok && err.Number == mysqlerr.ER_DUP_ENTRY { + var merr *mysql.MySQLError + if errors.As(err, &merr) && merr.Number == mysqlerr.ER_DUP_ENTRY { return &user, nil } diff --git a/pkg/dfnet/dfnet.go b/pkg/dfnet/dfnet.go index cc093babc..2207596ae 100644 --- a/pkg/dfnet/dfnet.go +++ b/pkg/dfnet/dfnet.go @@ -18,8 +18,8 @@ package dfnet import ( "encoding/json" + "errors" - "github.com/pkg/errors" "gopkg.in/yaml.v3" ) diff --git a/pkg/dfpath/dfpath.go b/pkg/dfpath/dfpath.go index 9d52dd8c7..fc763ecb3 100644 --- a/pkg/dfpath/dfpath.go +++ b/pkg/dfpath/dfpath.go @@ -17,12 +17,11 @@ package dfpath import ( + "fmt" "io/fs" "os" "path/filepath" "sync" - - "github.com/pkg/errors" ) // Dfpath is the interface used for init project path @@ -110,7 +109,7 @@ func New(options ...Option) (Dfpath, error) { for name, dir := range map[string]string{"workHome": d.workHome, "cacheDir": d.cacheDir, "logDir": d.logDir, "dataDir": d.dataDir, "pluginDir": d.pluginDir} { if err := os.MkdirAll(dir, fs.FileMode(0755)); err != nil { - cache.errs = append(cache.errs, errors.Errorf("create %s dir %s failed: %v", name, dir, err)) + cache.errs = append(cache.errs, fmt.Errorf("create %s dir %s failed: %v", name, dir, err)) } } @@ -118,7 +117,7 @@ func New(options ...Option) (Dfpath, error) { }) if len(cache.errs) > 0 { - return nil, errors.Errorf("create dfpath failed: %s", cache.errs) + return nil, fmt.Errorf("create dfpath failed: %s", cache.errs) } d := *cache.d diff --git a/pkg/digest/digest_reader.go b/pkg/digest/digest_reader.go index 02ba8778e..38c58bf61 100644 --- a/pkg/digest/digest_reader.go +++ b/pkg/digest/digest_reader.go @@ -24,12 +24,11 @@ import ( "crypto/sha256" "crypto/sha512" "encoding/hex" + "errors" "fmt" "hash" "io" - "github.com/pkg/errors" - logger "d7y.io/dragonfly/v2/internal/dflog" ) diff --git a/pkg/net/http/range.go b/pkg/net/http/range.go index 0072de7e5..91aa6db49 100644 --- a/pkg/net/http/range.go +++ b/pkg/net/http/range.go @@ -20,8 +20,6 @@ import ( "fmt" "strconv" "strings" - - "github.com/pkg/errors" ) const ( @@ -72,7 +70,7 @@ func GetRange(rangeStr string) (r *Range, err error) { // length is file total length func ParseRange(rangeStr string, length uint64) (*Range, error) { if strings.Count(rangeStr, "-") != 1 { - return nil, errors.Errorf("invalid range: %s, should be like 0-1023", rangeStr) + return nil, fmt.Errorf("invalid range: %s, should be like 0-1023", rangeStr) } // -{endIndex} @@ -103,11 +101,11 @@ func ParseRange(rangeStr string, length uint64) (*Range, error) { func handlePrefixRange(rangeStr string, length uint64) (*Range, error) { downLength, err := strconv.ParseUint(strings.TrimPrefix(rangeStr, "-"), 10, 64) if err != nil { - return nil, errors.Errorf("failed to parse range: %s to int: %v", rangeStr, err) + return nil, fmt.Errorf("failed to parse range: %s to int: %v", rangeStr, err) } if downLength > length { - return nil, errors.Errorf("range: %s, the downLength is larger than length", rangeStr) + return nil, fmt.Errorf("range: %s, the downLength is larger than length", rangeStr) } return &Range{ @@ -119,11 +117,11 @@ func handlePrefixRange(rangeStr string, length uint64) (*Range, error) { func handleSuffixRange(rangeStr string, length uint64) (*Range, error) { startIndex, err := strconv.ParseUint(strings.TrimSuffix(rangeStr, "-"), 10, 64) if err != nil { - return nil, errors.Errorf("failed to parse range: %s to uint: %v", rangeStr, err) + return nil, fmt.Errorf("failed to parse range: %s to uint: %v", rangeStr, err) } if startIndex > length { - return nil, errors.Errorf("range: %s, the startIndex is larger than length", rangeStr) + return nil, fmt.Errorf("range: %s, the startIndex is larger than length", rangeStr) } return &Range{ @@ -137,15 +135,15 @@ func handlePairRange(rangeStr string, length uint64) (*Range, error) { startIndex, err := strconv.ParseUint(rangePair[0], 10, 64) if err != nil { - return nil, errors.Errorf("failed to parse range: %s to uint: %v", rangeStr, err) + return nil, fmt.Errorf("failed to parse range: %s to uint: %v", rangeStr, err) } if startIndex > length { - return nil, errors.Errorf("range: %s, the startIndex is larger than length", rangeStr) + return nil, fmt.Errorf("range: %s, the startIndex is larger than length", rangeStr) } endIndex, err := strconv.ParseUint(rangePair[1], 10, 64) if err != nil { - return nil, errors.Errorf("failed to parse range: %s to uint: %v", rangeStr, err) + return nil, fmt.Errorf("failed to parse range: %s to uint: %v", rangeStr, err) } if endIndex >= length { //attention @@ -153,7 +151,7 @@ func handlePairRange(rangeStr string, length uint64) (*Range, error) { } if endIndex < startIndex { - return nil, errors.Errorf("range: %s, the start is larger the end", rangeStr) + return nil, fmt.Errorf("range: %s, the start is larger the end", rangeStr) } return &Range{ diff --git a/pkg/net/ip/ip.go b/pkg/net/ip/ip.go index 40fd3d229..57db33913 100644 --- a/pkg/net/ip/ip.go +++ b/pkg/net/ip/ip.go @@ -17,11 +17,10 @@ package ip import ( + "fmt" "net" "os" - "github.com/pkg/errors" - logger "d7y.io/dragonfly/v2/internal/dflog" ) @@ -59,7 +58,7 @@ func externalIPv4() (string, error) { } if len(externalIPs) == 0 { - return "", errors.Errorf("can not found external ipv4") + return "", fmt.Errorf("can not found external ipv4") } return externalIPs[0], nil diff --git a/pkg/objectstorage/oss.go b/pkg/objectstorage/oss.go index 661829c42..cc70e58e6 100644 --- a/pkg/objectstorage/oss.go +++ b/pkg/objectstorage/oss.go @@ -18,6 +18,7 @@ package objectstorage import ( "context" + "errors" "fmt" "io" "net/http" @@ -26,7 +27,6 @@ import ( aliyunoss "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/go-http-utils/headers" - "github.com/pkg/errors" ) type oss struct { @@ -96,7 +96,8 @@ func (o *oss) GetObjectMetadata(ctx context.Context, bucketName, objectKey strin header, err := bucket.GetObjectDetailedMeta(objectKey) if err != nil { - if serr, ok := errors.Cause(err).(aliyunoss.ServiceError); ok && serr.StatusCode == http.StatusNotFound { + var serr *aliyunoss.ServiceError + if errors.As(err, &serr) && serr.StatusCode == http.StatusNotFound { return nil, false, nil } diff --git a/pkg/rpc/cdnsystem/client/client.go b/pkg/rpc/cdnsystem/client/client.go index b881e3255..b82b11a79 100644 --- a/pkg/rpc/cdnsystem/client/client.go +++ b/pkg/rpc/cdnsystem/client/client.go @@ -18,10 +18,10 @@ package client import ( "context" + "fmt" "sync" "time" - "github.com/pkg/errors" "google.golang.org/grpc" logger "d7y.io/dragonfly/v2/internal/dflog" @@ -81,7 +81,7 @@ var _ CdnClient = (*cdnClient)(nil) func (cc *cdnClient) getCdnClient(key string, stick bool) (cdnsystem.SeederClient, string, error) { clientConn, err := cc.Connection.GetClientConn(key, stick) if err != nil { - return nil, "", errors.Wrapf(err, "get ClientConn for hashKey %s", key) + return nil, "", fmt.Errorf("get ClientConn for hashKey %s: %w", key, err) } return cdnsystem.NewSeederClient(clientConn), clientConn.Target(), nil } diff --git a/pkg/rpc/cdnsystem/client/piece_seed_stream.go b/pkg/rpc/cdnsystem/client/piece_seed_stream.go index 6d467dd18..ba1c43d68 100644 --- a/pkg/rpc/cdnsystem/client/piece_seed_stream.go +++ b/pkg/rpc/cdnsystem/client/piece_seed_stream.go @@ -18,8 +18,9 @@ package client import ( "context" + "errors" + "fmt" - "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -76,8 +77,8 @@ func (pss *PieceSeedStream) initStream() error { return client.ObtainSeeds(pss.ctx, pss.sr, pss.opts...) }, pss.InitBackoff, pss.MaxBackOff, pss.MaxAttempts, nil) if err != nil { - if errors.Cause(err) == dferrors.ErrNoCandidateNode { - return errors.Wrapf(err, "get grpc server instance failed") + if errors.Is(err, dferrors.ErrNoCandidateNode) { + return fmt.Errorf("get grpc server instance failed: %w", err) } logger.WithTaskID(pss.hashKey).Errorf("initStream: invoke cdn node %s ObtainSeeds failed: %v", target, err) return pss.replaceClient(pss.hashKey, err) diff --git a/pkg/rpc/client.go b/pkg/rpc/client.go index cea097958..4e3c19d36 100644 --- a/pkg/rpc/client.go +++ b/pkg/rpc/client.go @@ -22,7 +22,6 @@ import ( "sync" "time" - "github.com/pkg/errors" "github.com/serialx/hashring" "google.golang.org/grpc" "google.golang.org/grpc/codes" @@ -292,7 +291,7 @@ func (conn *Connection) GetClientConnByTarget(node string) (*grpc.ClientConn, er defer conn.rwMutex.RUnlock() clientConn, err := conn.loadOrCreateClientConnByNode(node) if err != nil { - return nil, errors.Wrapf(err, "get client conn by conn %s", node) + return nil, fmt.Errorf("get client conn by conn %s: %w", node, err) } logger.GrpcLogger.With("conn", conn.name).Debugf("successfully get %s client conn", node) return clientConn, nil @@ -301,7 +300,7 @@ func (conn *Connection) GetClientConnByTarget(node string) (*grpc.ClientConn, er func (conn *Connection) loadOrCreateClientConnByNode(node string) (clientConn *grpc.ClientConn, err error) { defer func() { if desc := recover(); desc != nil { - err = errors.Errorf("%v", desc) + err = fmt.Errorf("%v", desc) } }() conn.accessNodeMap.Store(node, time.Now()) @@ -320,7 +319,7 @@ func (conn *Connection) loadOrCreateClientConnByNode(node string) (clientConn *g return clientConn, nil } - return nil, errors.Wrapf(err, "cannot found clientConn associated with node %s and create client conn failed", node) + return nil, fmt.Errorf("cannot found clientConn associated with node %s and create client conn failed: %w", node, err) } // GetClientConn get conn or bind hashKey to candidate node, don't do the migrate action @@ -354,7 +353,7 @@ func (conn *Connection) GetClientConn(hashKey string, stick bool) (clientConn *g defer conn.rwMutex.Unlock() client, err := conn.findCandidateClientConn(hashKey, sets.NewString()) if err != nil { - return nil, errors.Wrapf(err, "prob candidate client conn for hash key %s", hashKey) + return nil, fmt.Errorf("prob candidate client conn for hash key %s: %w", hashKey, err) } conn.key2NodeMap.Store(hashKey, client.node) conn.node2ClientMap.Store(client.node, client.Ref) @@ -388,7 +387,7 @@ func (conn *Connection) TryMigrate(key string, cause error, exclusiveNodes []str defer conn.rwMutex.Unlock() client, err := conn.findCandidateClientConn(key, sets.NewString(exclusiveNodes...)) if err != nil { - return "", errors.Wrapf(err, "find candidate client conn for hash key %s", key) + return "", fmt.Errorf("find candidate client conn for hash key %s: %w", key, err) } logger.GrpcLogger.With("conn", conn.name).Infof("successfully migrate hash key %s from server node %s to %s", key, currentNode, client.node) conn.key2NodeMap.Store(key, client.node) diff --git a/pkg/rpc/dfdaemon/client/client.go b/pkg/rpc/dfdaemon/client/client.go index 8560fe785..ccd9b8f9b 100644 --- a/pkg/rpc/dfdaemon/client/client.go +++ b/pkg/rpc/dfdaemon/client/client.go @@ -18,12 +18,12 @@ package client import ( "context" + "errors" "fmt" "sync" "time" "github.com/google/uuid" - "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/protobuf/types/known/emptypb" diff --git a/pkg/rpc/dfdaemon/client/down_result_stream.go b/pkg/rpc/dfdaemon/client/down_result_stream.go index dc92ced72..36b3c34f7 100644 --- a/pkg/rpc/dfdaemon/client/down_result_stream.go +++ b/pkg/rpc/dfdaemon/client/down_result_stream.go @@ -18,8 +18,9 @@ package client import ( "context" + "errors" + "fmt" - "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -75,8 +76,8 @@ func (drs *DownResultStream) initStream() error { return client.Download(drs.ctx, drs.req, drs.opts...) }, drs.InitBackoff, drs.MaxBackOff, drs.MaxAttempts, nil) if err != nil { - if errors.Cause(err) == dferrors.ErrNoCandidateNode { - return errors.Wrapf(err, "get grpc server instance failed") + if errors.Is(err, dferrors.ErrNoCandidateNode) { + return fmt.Errorf("get grpc server instance failed: %w", err) } logger.WithTaskID(drs.hashKey).Infof("initStream: invoke daemon node %s Download failed: %v", target, err) return drs.replaceClient(err) diff --git a/pkg/rpc/scheduler/client/client.go b/pkg/rpc/scheduler/client/client.go index 3014cb683..b420bfeac 100644 --- a/pkg/rpc/scheduler/client/client.go +++ b/pkg/rpc/scheduler/client/client.go @@ -20,9 +20,9 @@ package client import ( "context" + "errors" "time" - "github.com/pkg/errors" "google.golang.org/grpc" logger "d7y.io/dragonfly/v2/internal/dflog" diff --git a/pkg/rpc/vsock.go b/pkg/rpc/vsock.go index 9a13c3a23..87f5a0bdd 100644 --- a/pkg/rpc/vsock.go +++ b/pkg/rpc/vsock.go @@ -24,7 +24,6 @@ import ( "strings" "github.com/mdlayher/vsock" - "github.com/pkg/errors" "google.golang.org/grpc" "d7y.io/dragonfly/v2/pkg/dfnet" @@ -41,16 +40,16 @@ func VsockDialer(_ctx context.Context, address string) (net.Conn, error) { cid, err := strconv.ParseUint(addr[0], 10, 32) if err != nil { - return nil, errors.Wrapf(err, "failed to convert %q to vsock cid", addr[0]) + return nil, fmt.Errorf("failed to convert %q to vsock cid: %w", addr[0], err) } port, err := strconv.ParseUint(addr[1], 10, 32) if err != nil { - return nil, errors.Wrapf(err, "failed to convert %q to vsock port", addr[1]) + return nil, fmt.Errorf("failed to convert %q to vsock port: %w", addr[1], err) } conn, err := vsock.Dial(uint32(cid), uint32(port), nil) if err != nil { - return nil, errors.Wrapf(err, "failed to dial vsock %v:%v, address %s", uint32(cid), uint32(port), address) + return nil, fmt.Errorf("failed to dial vsock %v:%v, address %s: %w", uint32(cid), uint32(port), address, err) } return conn, nil } diff --git a/pkg/source/clients/hdfsprotocol/hdfs_source_client.go b/pkg/source/clients/hdfsprotocol/hdfs_source_client.go index 2c6d8596e..8b80eb551 100644 --- a/pkg/source/clients/hdfsprotocol/hdfs_source_client.go +++ b/pkg/source/clients/hdfsprotocol/hdfs_source_client.go @@ -17,6 +17,7 @@ package hdfsprotocol import ( + "fmt" "io" "net/url" "os/user" @@ -25,7 +26,6 @@ import ( "time" "github.com/colinmarc/hdfs/v2" - "github.com/pkg/errors" "d7y.io/dragonfly/v2/pkg/net/http" "d7y.io/dragonfly/v2/pkg/source" @@ -127,7 +127,7 @@ func (h *hdfsSourceClient) Download(request *source.Request) (*source.Response, // default read all data when rang is nil var limitReadN = fileInfo.Size() if limitReadN < 0 { - return nil, errors.Errorf("file length is illegal, length: %d", limitReadN) + return nil, fmt.Errorf("file length is illegal, length: %d", limitReadN) } if request.Header.Get(source.Range) != "" { @@ -203,7 +203,7 @@ func (h *hdfsSourceClient) getHDFSClient(url *url.URL) (*hdfs.Client, error) { func (h *hdfsSourceClient) getHDFSClientAndPath(url *url.URL) (*hdfs.Client, string, error) { client, err := h.getHDFSClient(url) if err != nil { - return nil, "", errors.Errorf("hdfs create client failed, url is %s", url) + return nil, "", fmt.Errorf("hdfs create client failed, url is %s", url) } return client, url.Path, nil } diff --git a/pkg/source/clients/hdfsprotocol/hdfs_source_client_test.go b/pkg/source/clients/hdfsprotocol/hdfs_source_client_test.go index ca408e70d..939a0393d 100644 --- a/pkg/source/clients/hdfsprotocol/hdfs_source_client_test.go +++ b/pkg/source/clients/hdfsprotocol/hdfs_source_client_test.go @@ -20,6 +20,7 @@ package hdfsprotocol import ( + "errors" "io" "os" "reflect" @@ -28,7 +29,6 @@ import ( "github.com/agiledragon/gomonkey/v2" "github.com/colinmarc/hdfs/v2" - "github.com/pkg/errors" "github.com/stretchr/testify/assert" "d7y.io/dragonfly/v2/pkg/net/http" diff --git a/pkg/source/clients/httpprotocol/http_source_client_test.go b/pkg/source/clients/httpprotocol/http_source_client_test.go index 892330c88..8e548dfd2 100644 --- a/pkg/source/clients/httpprotocol/http_source_client_test.go +++ b/pkg/source/clients/httpprotocol/http_source_client_test.go @@ -26,7 +26,6 @@ import ( "github.com/go-http-utils/headers" "github.com/jarcoal/httpmock" - "github.com/pkg/errors" "github.com/stretchr/testify/suite" nethttp "d7y.io/dragonfly/v2/pkg/net/http" @@ -196,7 +195,7 @@ func (suite *HTTPSourceClientTestSuite) TestHttpSourceClientDownloadWithResponse request: errorRequest, content: "", expireInfo: nil, - wantErr: errors.Errorf("Get \"https://error.com\": error"), + wantErr: fmt.Errorf("Get \"https://error.com\": error"), }, } for _, tt := range tests { diff --git a/pkg/source/clients/ossprotocol/oss_source_client.go b/pkg/source/clients/ossprotocol/oss_source_client.go index 2d52d6fea..c6204207a 100644 --- a/pkg/source/clients/ossprotocol/oss_source_client.go +++ b/pkg/source/clients/ossprotocol/oss_source_client.go @@ -17,6 +17,7 @@ package ossprotocol import ( + "errors" "fmt" "net/http" "strconv" @@ -25,7 +26,6 @@ import ( "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/go-http-utils/headers" - "github.com/pkg/errors" "d7y.io/dragonfly/v2/pkg/source" "d7y.io/dragonfly/v2/pkg/strings" @@ -95,15 +95,15 @@ func (osc *ossSourceClient) GetContentLength(request *source.Request) (int64, er } bucket, err := client.Bucket(request.URL.Host) if err != nil { - return source.UnknownSourceFileLen, errors.Wrapf(err, "get oss bucket: %s", request.URL.Host) + return source.UnknownSourceFileLen, fmt.Errorf("get oss bucket %s: %w", request.URL.Host, err) } header, err := bucket.GetObjectMeta(request.URL.Path, getOptions(request.Header)...) if err != nil { - return source.UnknownSourceFileLen, errors.Wrapf(err, "get oss object %s meta", request.URL.Path) + return source.UnknownSourceFileLen, fmt.Errorf("get oss object %s meta: %w", request.URL.Path, err) } contentLen, err := strconv.ParseInt(header.Get(oss.HTTPHeaderContentLength), 10, 64) if err != nil { - return source.UnknownSourceFileLen, errors.Wrapf(err, "parse content-length str to int64") + return source.UnknownSourceFileLen, fmt.Errorf("parse content-length str to int64: %w", err) } return contentLen, nil } @@ -114,11 +114,11 @@ func (osc *ossSourceClient) IsSupportRange(request *source.Request) (bool, error } client, err := osc.getClient(request.Header) if err != nil { - return false, errors.Wrap(err, "get oss client") + return false, fmt.Errorf("get oss client: %w", err) } bucket, err := client.Bucket(request.URL.Host) if err != nil { - return false, errors.Wrapf(err, "get oss bucket: %s", request.URL.Host) + return false, fmt.Errorf("get oss bucket %s: %w", request.URL.Host, err) } exist, err := bucket.IsObjectExist(request.URL.Path, getOptions(request.Header)...) if err != nil { @@ -133,11 +133,11 @@ func (osc *ossSourceClient) IsSupportRange(request *source.Request) (bool, error func (osc *ossSourceClient) IsExpired(request *source.Request, info *source.ExpireInfo) (bool, error) { client, err := osc.getClient(request.Header) if err != nil { - return false, errors.Wrap(err, "get oss client") + return false, fmt.Errorf("get oss client: %w", err) } bucket, err := client.Bucket(request.URL.Host) if err != nil { - return false, errors.Wrapf(err, "get oss bucket: %s", request.URL.Host) + return false, fmt.Errorf("get oss bucket %s: %w", request.URL.Host, err) } resHeader, err := bucket.GetObjectMeta(request.URL.Path, getOptions(request.Header)...) if err != nil { @@ -149,15 +149,15 @@ func (osc *ossSourceClient) IsExpired(request *source.Request, info *source.Expi func (osc *ossSourceClient) Download(request *source.Request) (*source.Response, error) { client, err := osc.getClient(request.Header) if err != nil { - return nil, errors.Wrapf(err, "get oss client") + return nil, fmt.Errorf("get oss client: %w", err) } bucket, err := client.Bucket(request.URL.Host) if err != nil { - return nil, errors.Wrapf(err, "get oss bucket: %s", request.URL.Host) + return nil, fmt.Errorf("get oss bucket %s: %w", request.URL.Host, err) } objectResult, err := bucket.DoGetObject(&oss.GetObjectRequest{ObjectKey: request.URL.Path}, getOptions(request.Header)) if err != nil { - return nil, errors.Wrapf(err, "get oss Object: %s", request.URL.Path) + return nil, fmt.Errorf("get oss Object %s: %w", request.URL.Path, err) } err = source.CheckResponseCode(objectResult.Response.StatusCode, []int{http.StatusOK, http.StatusPartialContent}) if err != nil { @@ -178,11 +178,11 @@ func (osc *ossSourceClient) Download(request *source.Request) (*source.Response, func (osc *ossSourceClient) GetLastModified(request *source.Request) (int64, error) { client, err := osc.getClient(request.Header) if err != nil { - return -1, errors.Wrap(err, "get oss client") + return -1, fmt.Errorf("get oss client: %w", err) } bucket, err := client.Bucket(request.URL.Host) if err != nil { - return -1, errors.Wrapf(err, "get oss bucket: %s", request.URL.Host) + return -1, fmt.Errorf("get oss bucket %s: %w", request.URL.Host, err) } header, err := bucket.GetObjectMeta(request.URL.Path, getOptions(request.Header)...) if err != nil { diff --git a/pkg/source/request.go b/pkg/source/request.go index edc381855..49998906c 100644 --- a/pkg/source/request.go +++ b/pkg/source/request.go @@ -18,9 +18,8 @@ package source import ( "context" + "errors" "net/url" - - "github.com/pkg/errors" ) type Request struct { diff --git a/pkg/source/source_client.go b/pkg/source/source_client.go index 349c17975..ec79f98f1 100644 --- a/pkg/source/source_client.go +++ b/pkg/source/source_client.go @@ -19,6 +19,7 @@ package source import ( "context" + "errors" "fmt" "net/url" "strconv" @@ -26,8 +27,6 @@ import ( "sync" "time" - "github.com/pkg/errors" - logger "d7y.io/dragonfly/v2/internal/dflog" ) @@ -162,7 +161,7 @@ func (m *clientManager) Register(scheme string, resourceClient ResourceClient, a defer m.mu.Unlock() if client, ok := m.clients[scheme]; ok { if client.(*clientWrapper).rc != resourceClient { - return errors.Errorf("client with scheme %s already exist, current client: %#v", scheme, client) + return fmt.Errorf("client with scheme %s already exist, current client: %#v", scheme, client) } logger.Warnf("client with scheme %s already exist, no need register again", scheme) return nil @@ -279,7 +278,7 @@ func (c *clientWrapper) GetLastModified(request *Request) (int64, error) { func GetContentLength(request *Request) (int64, error) { client, ok := _defaultManager.GetClient(request.URL.Scheme) if !ok { - return UnknownSourceFileLen, errors.Wrapf(ErrNoClientFound, "scheme: %s", request.URL.Scheme) + return UnknownSourceFileLen, fmt.Errorf("scheme %s: %w", request.URL.Scheme, ErrNoClientFound) } if _, ok := request.Context().Deadline(); !ok { ctx, cancel := context.WithTimeout(context.Background(), contextTimeout) @@ -292,7 +291,7 @@ func GetContentLength(request *Request) (int64, error) { func IsSupportRange(request *Request) (bool, error) { client, ok := _defaultManager.GetClient(request.URL.Scheme) if !ok { - return false, errors.Wrapf(ErrNoClientFound, "scheme: %s", request.URL.Scheme) + return false, fmt.Errorf("scheme %s: %w", request.URL.Scheme, ErrNoClientFound) } if _, ok := request.Context().Deadline(); !ok { ctx, cancel := context.WithTimeout(context.Background(), contextTimeout) @@ -308,7 +307,7 @@ func IsSupportRange(request *Request) (bool, error) { func IsExpired(request *Request, info *ExpireInfo) (bool, error) { client, ok := _defaultManager.GetClient(request.URL.Scheme) if !ok { - return false, errors.Wrapf(ErrNoClientFound, "scheme: %s", request.URL.Scheme) + return false, fmt.Errorf("scheme %s: %w", request.URL.Scheme, ErrNoClientFound) } if _, ok := request.Context().Deadline(); !ok { ctx, cancel := context.WithTimeout(context.Background(), contextTimeout) @@ -321,7 +320,7 @@ func IsExpired(request *Request, info *ExpireInfo) (bool, error) { func GetLastModified(request *Request) (int64, error) { client, ok := _defaultManager.GetClient(request.URL.Scheme) if !ok { - return -1, errors.Wrapf(ErrNoClientFound, "scheme: %s", request.URL.Scheme) + return -1, fmt.Errorf("scheme %s: %w", request.URL.Scheme, ErrNoClientFound) } if _, ok := request.Context().Deadline(); !ok { ctx, cancel := context.WithTimeout(context.Background(), contextTimeout) @@ -334,7 +333,7 @@ func GetLastModified(request *Request) (int64, error) { func Download(request *Request) (*Response, error) { client, ok := _defaultManager.GetClient(request.URL.Scheme) if !ok { - return nil, errors.Wrapf(ErrNoClientFound, "scheme: %s", request.URL.Scheme) + return nil, fmt.Errorf("scheme %s: %w", request.URL.Scheme, ErrNoClientFound) } return client.Download(request) } @@ -342,11 +341,11 @@ func Download(request *Request) (*Response, error) { func List(request *Request) ([]*url.URL, error) { client, ok := _defaultManager.GetClient(request.URL.Scheme) if !ok { - return nil, errors.Wrapf(ErrNoClientFound, "scheme: %s", request.URL.Scheme) + return nil, fmt.Errorf("scheme %s: %w", request.URL.Scheme, ErrNoClientFound) } lister, ok := client.(ResourceLister) if !ok { - return nil, errors.Wrapf(ErrClientNotSupportList, "scheme: %s", request.URL.Scheme) + return nil, fmt.Errorf("scheme %s: %w", request.URL.Scheme, ErrClientNotSupportList) } return lister.List(request) } diff --git a/pkg/unit/byte.go b/pkg/unit/byte.go index 0e70599b9..e50bb4430 100644 --- a/pkg/unit/byte.go +++ b/pkg/unit/byte.go @@ -18,11 +18,11 @@ package unit import ( "encoding/json" + "errors" "fmt" "regexp" "strconv" - "github.com/pkg/errors" "gopkg.in/yaml.v3" pkgstrings "d7y.io/dragonfly/v2/pkg/strings" @@ -101,7 +101,7 @@ func parseSize(fsize string) (Bytes, error) { matches := sizeRegexp.FindStringSubmatch(fsize) if len(matches) == 0 { - return 0, errors.Errorf("parse size %s: invalid format", fsize) + return 0, fmt.Errorf("parse size %s: invalid format", fsize) } var unit Bytes @@ -124,7 +124,7 @@ func parseSize(fsize string) (Bytes, error) { num, err := strconv.ParseInt(matches[1], 0, 64) if err != nil { - return 0, errors.Wrapf(err, "failed to parse size: %s", fsize) + return 0, fmt.Errorf("failed to parse size %s: %w", fsize, err) } return ToBytes(num) * unit, nil @@ -161,7 +161,7 @@ func (f *Bytes) unmarshal(unmarshal func(in []byte, out interface{}) (err error) case string: size, err := parseSize(value) if err != nil { - return errors.WithMessage(err, "invalid byte size") + return fmt.Errorf("invalid byte size: %w", err) } *f = size return nil diff --git a/scheduler/config/config.go b/scheduler/config/config.go index 7a73f4846..1f99b5e97 100644 --- a/scheduler/config/config.go +++ b/scheduler/config/config.go @@ -17,10 +17,9 @@ package config import ( + "errors" "time" - "github.com/pkg/errors" - "d7y.io/dragonfly/v2/cmd/dependency/base" "d7y.io/dragonfly/v2/pkg/net/fqdn" "d7y.io/dragonfly/v2/pkg/net/ip" diff --git a/scheduler/config/dynconfig_test.go b/scheduler/config/dynconfig_test.go index d3a557f4d..a516f67dd 100644 --- a/scheduler/config/dynconfig_test.go +++ b/scheduler/config/dynconfig_test.go @@ -17,13 +17,13 @@ package config import ( + "errors" "os" "path/filepath" "testing" "time" "github.com/golang/mock/gomock" - "github.com/pkg/errors" "github.com/stretchr/testify/assert" "d7y.io/dragonfly/v2/pkg/rpc/manager" diff --git a/scheduler/resource/seed_peer.go b/scheduler/resource/seed_peer.go index a5f9b3b3b..bbaedcdcc 100644 --- a/scheduler/resource/seed_peer.go +++ b/scheduler/resource/seed_peer.go @@ -20,10 +20,9 @@ package resource import ( "context" + "fmt" "time" - "github.com/pkg/errors" - "d7y.io/dragonfly/v2/pkg/rpc/base/common" "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" rpcscheduler "d7y.io/dragonfly/v2/pkg/rpc/scheduler" @@ -149,7 +148,7 @@ func (s *seedPeer) initSeedPeer(task *Task, ps *cdnsystem.PieceSeed) (*Peer, err host, ok := s.hostManager.Load(ps.HostId) if !ok { task.Log.Errorf("can not find seed host id: %s", ps.HostId) - return nil, errors.Errorf("can not find host id: %s", ps.HostId) + return nil, fmt.Errorf("can not find host id: %s", ps.HostId) } // New seed peer.