feat: replace github.com/pkg/errors to errors

Signed-off-by: haoyun <yun.hao@daocloud.io>
Co-authored-by: zounengren <zouyee1989@gmail.com>
This commit is contained in:
haoyun
2022-01-07 10:19:31 +08:00
parent 3ccd43c8f6
commit bbe46b8c43
299 changed files with 1896 additions and 1874 deletions

View File

@@ -26,7 +26,6 @@ import (
"github.com/docker/go-units"
"github.com/hashicorp/go-multierror"
"github.com/pelletier/go-toml"
"github.com/pkg/errors"
)
// Config represents device mapper configuration loaded from file.
@@ -68,11 +67,11 @@ func LoadConfig(path string) (*Config, error) {
config := Config{}
file, err := toml.LoadFile(path)
if err != nil {
return nil, errors.Wrapf(err, "failed to open devmapepr TOML: %s", path)
return nil, fmt.Errorf("failed to open devmapepr TOML: %s: %w", path, err)
}
if err := file.Unmarshal(&config); err != nil {
return nil, errors.Wrap(err, "failed to unmarshal devmapper TOML")
return nil, fmt.Errorf("failed to unmarshal devmapper TOML: %w", err)
}
if err := config.parse(); err != nil {
@@ -89,7 +88,7 @@ func LoadConfig(path string) (*Config, error) {
func (c *Config) parse() error {
baseImageSize, err := units.RAMInBytes(c.BaseImageSize)
if err != nil {
return errors.Wrapf(err, "failed to parse base image size: '%s'", c.BaseImageSize)
return fmt.Errorf("failed to parse base image size: '%s': %w", c.BaseImageSize, err)
}
if c.FileSystemType == "" {

View File

@@ -22,6 +22,7 @@
package dmsetup
import (
"errors"
"fmt"
"io"
"os"
@@ -29,7 +30,6 @@ import (
"strings"
blkdiscard "github.com/containerd/containerd/snapshots/devmapper/blkdiscard"
"github.com/pkg/errors"
exec "golang.org/x/sys/execabs"
"golang.org/x/sys/unix"
)
@@ -101,7 +101,7 @@ const (
func makeThinPoolMapping(dataFile, metaFile string, blockSizeSectors uint32) (string, error) {
dataDeviceSizeBytes, err := BlockDeviceSize(dataFile)
if err != nil {
return "", errors.Wrapf(err, "failed to get block device size: %s", dataFile)
return "", fmt.Errorf("failed to get block device size: %s: %w", dataFile, err)
}
// Thin-pool mapping target has the following format:
@@ -259,7 +259,7 @@ func Info(deviceName string) ([]*DeviceInfo, error) {
&info.EventNumber)
if err != nil {
return nil, errors.Wrapf(err, "failed to parse line %q", line)
return nil, fmt.Errorf("failed to parse line %q: %w", line, err)
}
// Parse attributes (see "man 8 dmsetup" for details)
@@ -309,17 +309,17 @@ func Status(deviceName string) (*DeviceStatus, error) {
const MinParseCount = 4
parts := strings.Split(output, " ")
if len(parts) < MinParseCount {
return nil, errors.Errorf("failed to parse output: %q", output)
return nil, fmt.Errorf("failed to parse output: %q", output)
}
status.Offset, err = strconv.ParseInt(parts[0], 10, 64)
if err != nil {
return nil, errors.Wrapf(err, "failed to parse offset: %q", parts[0])
return nil, fmt.Errorf("failed to parse offset: %q: %w", parts[0], err)
}
status.Length, err = strconv.ParseInt(parts[1], 10, 64)
if err != nil {
return nil, errors.Wrapf(err, "failed to parse length: %q", parts[1])
return nil, fmt.Errorf("failed to parse length: %q: %w", parts[1], err)
}
status.Target = parts[2]
@@ -347,7 +347,7 @@ func BlockDeviceSize(path string) (int64, error) {
size, err := f.Seek(0, io.SeekEnd)
if err != nil {
return 0, errors.Wrapf(err, "failed to seek on %q", path)
return 0, fmt.Errorf("failed to seek on %q: %w", path, err)
}
return size, nil
}
@@ -379,7 +379,7 @@ func dmsetup(args ...string) (string, error) {
return "", errno
}
return "", errors.Wrapf(err, "dmsetup %s\nerror: %s\n", strings.Join(args, " "), output)
return "", fmt.Errorf("dmsetup %s\nerror: %s\n: %w", strings.Join(args, " "), output, err)
}
output = strings.TrimSuffix(output, "\n")

View File

@@ -22,10 +22,10 @@ package devmapper
import (
"context"
"encoding/json"
"errors"
"fmt"
"strconv"
"github.com/pkg/errors"
bolt "go.etcd.io/bbolt"
)
@@ -70,7 +70,7 @@ func NewPoolMetadata(dbfile string) (*PoolMetadata, error) {
metadata := &PoolMetadata{db: db}
if err := metadata.ensureDatabaseInitialized(); err != nil {
return nil, errors.Wrap(err, "failed to initialize database")
return nil, fmt.Errorf("failed to initialize database: %w", err)
}
return metadata, nil
@@ -102,7 +102,7 @@ func (m *PoolMetadata) AddDevice(ctx context.Context, info *DeviceInfo) error {
// See https://github.com/containerd/containerd/pull/3436 for more context.
var existing DeviceInfo
if err := getObject(devicesBucket, info.Name, &existing); err == nil && existing.State != Faulty {
return errors.Wrapf(ErrAlreadyExists, "device %q is already there %+v", info.Name, existing)
return fmt.Errorf("device %q is already there %+v: %w", info.Name, existing, ErrAlreadyExists)
}
// Find next available device ID
@@ -117,7 +117,7 @@ func (m *PoolMetadata) AddDevice(ctx context.Context, info *DeviceInfo) error {
})
if err != nil {
return errors.Wrapf(err, "failed to save metadata for device %q (parent: %q)", info.Name, info.ParentName)
return fmt.Errorf("failed to save metadata for device %q (parent: %q): %w", info.Name, info.ParentName, err)
}
return nil
@@ -213,7 +213,7 @@ func markDeviceID(tx *bolt.Tx, deviceID uint32, state deviceIDState) error {
)
if err := bucket.Put([]byte(key), value); err != nil {
return errors.Wrapf(err, "failed to free device id %q", key)
return fmt.Errorf("failed to free device id %q: %w", key, err)
}
return nil
@@ -282,7 +282,7 @@ func (m *PoolMetadata) RemoveDevice(ctx context.Context, name string) error {
}
if err := bucket.Delete([]byte(name)); err != nil {
return errors.Wrapf(err, "failed to delete device info for %q", name)
return fmt.Errorf("failed to delete device info for %q: %w", name, err)
}
return markDeviceID(tx, device.DeviceID, deviceFree)
@@ -297,7 +297,7 @@ func (m *PoolMetadata) WalkDevices(ctx context.Context, cb func(info *DeviceInfo
return bucket.ForEach(func(key, value []byte) error {
device := &DeviceInfo{}
if err := json.Unmarshal(value, device); err != nil {
return errors.Wrapf(err, "failed to unmarshal %s", key)
return fmt.Errorf("failed to unmarshal %s: %w", key, err)
}
return cb(device)
@@ -340,16 +340,16 @@ func putObject(bucket *bolt.Bucket, key string, obj interface{}, overwrite bool)
keyBytes := []byte(key)
if !overwrite && bucket.Get(keyBytes) != nil {
return errors.Errorf("object with key %q already exists", key)
return fmt.Errorf("object with key %q already exists", key)
}
data, err := json.Marshal(obj)
if err != nil {
return errors.Wrapf(err, "failed to marshal object with key %q", key)
return fmt.Errorf("failed to marshal object with key %q: %w", key, err)
}
if err := bucket.Put(keyBytes, data); err != nil {
return errors.Wrapf(err, "failed to insert object with key %q", key)
return fmt.Errorf("failed to insert object with key %q: %w", key, err)
}
return nil
@@ -363,7 +363,7 @@ func getObject(bucket *bolt.Bucket, key string, obj interface{}) error {
if obj != nil {
if err := json.Unmarshal(data, obj); err != nil {
return errors.Wrapf(err, "failed to unmarshal object with key %q", key)
return fmt.Errorf("failed to unmarshal object with key %q: %w", key, err)
}
}

View File

@@ -21,12 +21,12 @@ package devmapper
import (
"context"
"errors"
"os"
"path/filepath"
"strconv"
"testing"
"github.com/pkg/errors"
"go.etcd.io/bbolt"
"gotest.tools/v3/assert"
is "gotest.tools/v3/assert/cmp"

View File

@@ -20,10 +20,11 @@
package plugin
import (
"errors"
"github.com/containerd/containerd/platforms"
"github.com/containerd/containerd/plugin"
"github.com/containerd/containerd/snapshots/devmapper"
"github.com/pkg/errors"
)
func init() {

View File

@@ -21,12 +21,13 @@ package devmapper
import (
"context"
"errors"
"fmt"
"path/filepath"
"strconv"
"time"
"github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
"golang.org/x/sys/unix"
"github.com/containerd/containerd/log"
@@ -72,7 +73,7 @@ func NewPoolDevice(ctx context.Context, config *Config) (*PoolDevice, error) {
// Make sure pool exists and available
poolPath := dmsetup.GetFullDevicePath(config.PoolName)
if _, err := dmsetup.Info(poolPath); err != nil {
return nil, errors.Wrapf(err, "failed to query pool %q", poolPath)
return nil, fmt.Errorf("failed to query pool %q: %w", poolPath, err)
}
poolDevice := &PoolDevice{
@@ -82,7 +83,7 @@ func NewPoolDevice(ctx context.Context, config *Config) (*PoolDevice, error) {
}
if err := poolDevice.ensureDeviceStates(ctx); err != nil {
return nil, errors.Wrap(err, "failed to check devices state")
return nil, fmt.Errorf("failed to check devices state: %w", err)
}
return poolDevice, nil
@@ -134,7 +135,7 @@ func (p *PoolDevice) ensureDeviceStates(ctx context.Context) error {
}
return nil
}); err != nil {
return errors.Wrap(err, "failed to query devices from metastore")
return fmt.Errorf("failed to query devices from metastore: %w", err)
}
var result *multierror.Error
@@ -175,7 +176,7 @@ func (p *PoolDevice) transition(ctx context.Context, deviceName string, tryingSt
})
if uerr != nil {
return errors.Wrapf(uerr, "failed to set device %q state to %q", deviceName, tryingState)
return fmt.Errorf("failed to set device %q state to %q: %w", deviceName, tryingState, uerr)
}
var result *multierror.Error
@@ -293,7 +294,7 @@ func (p *PoolDevice) createDevice(ctx context.Context, info *DeviceInfo) error {
if err := p.transition(ctx, info.Name, Creating, Created, func() error {
return dmsetup.CreateDevice(p.poolName, info.DeviceID)
}); err != nil {
return errors.Wrapf(err, "failed to create new thin device %q (dev: %d)", info.Name, info.DeviceID)
return fmt.Errorf("failed to create new thin device %q (dev: %d): %w", info.Name, info.DeviceID, err)
}
return nil
@@ -304,7 +305,7 @@ func (p *PoolDevice) activateDevice(ctx context.Context, info *DeviceInfo) error
if err := p.transition(ctx, info.Name, Activating, Activated, func() error {
return dmsetup.ActivateDevice(p.poolName, info.Name, info.DeviceID, info.Size, "")
}); err != nil {
return errors.Wrapf(err, "failed to activate new thin device %q (dev: %d)", info.Name, info.DeviceID)
return fmt.Errorf("failed to activate new thin device %q (dev: %d): %w", info.Name, info.DeviceID, err)
}
return nil
@@ -314,7 +315,7 @@ func (p *PoolDevice) activateDevice(ctx context.Context, info *DeviceInfo) error
func (p *PoolDevice) CreateSnapshotDevice(ctx context.Context, deviceName string, snapshotName string, virtualSizeBytes uint64) (retErr error) {
baseInfo, err := p.metadata.GetDevice(ctx, deviceName)
if err != nil {
return errors.Wrapf(err, "failed to query device metadata for %q", deviceName)
return fmt.Errorf("failed to query device metadata for %q: %w", deviceName, err)
}
snapInfo := &DeviceInfo{
@@ -386,12 +387,13 @@ func (p *PoolDevice) createSnapshot(ctx context.Context, baseInfo, snapInfo *Dev
if err := p.transition(ctx, snapInfo.Name, Creating, Created, func() error {
return dmsetup.CreateSnapshot(p.poolName, snapInfo.DeviceID, baseInfo.DeviceID)
}); err != nil {
return errors.Wrapf(err,
"failed to create snapshot %q (dev: %d) from %q (dev: %d)",
return fmt.Errorf(
"failed to create snapshot %q (dev: %d) from %q (dev: %d): %w",
snapInfo.Name,
snapInfo.DeviceID,
baseInfo.Name,
baseInfo.DeviceID)
baseInfo.DeviceID, err,
)
}
return nil
@@ -402,7 +404,7 @@ func (p *PoolDevice) SuspendDevice(ctx context.Context, deviceName string) error
if err := p.transition(ctx, deviceName, Suspending, Suspended, func() error {
return dmsetup.SuspendDevice(deviceName)
}); err != nil {
return errors.Wrapf(err, "failed to suspend device %q", deviceName)
return fmt.Errorf("failed to suspend device %q: %w", deviceName, err)
}
return nil
@@ -413,7 +415,7 @@ func (p *PoolDevice) ResumeDevice(ctx context.Context, deviceName string) error
if err := p.transition(ctx, deviceName, Resuming, Resumed, func() error {
return dmsetup.ResumeDevice(deviceName)
}); err != nil {
return errors.Wrapf(err, "failed to resume device %q", deviceName)
return fmt.Errorf("failed to resume device %q: %w", deviceName, err)
}
return nil
@@ -446,13 +448,13 @@ func (p *PoolDevice) DeactivateDevice(ctx context.Context, deviceName string, de
}
}
if err := dmsetup.RemoveDevice(deviceName, opts...); err != nil {
return errors.Wrap(err, "failed to deactivate device")
return fmt.Errorf("failed to deactivate device: %w", err)
}
return nil
})
}); err != nil {
return errors.Wrapf(err, "failed to deactivate device %q", deviceName)
return fmt.Errorf("failed to deactivate device %q: %w", deviceName, err)
}
return nil
@@ -487,7 +489,7 @@ func (p *PoolDevice) IsLoaded(deviceName string) bool {
func (p *PoolDevice) GetUsage(deviceName string) (int64, error) {
status, err := dmsetup.Status(deviceName)
if err != nil {
return 0, errors.Wrapf(err, "can't get status for device %q", deviceName)
return 0, fmt.Errorf("can't get status for device %q: %w", deviceName, err)
}
if len(status.Params) == 0 {
@@ -496,7 +498,7 @@ func (p *PoolDevice) GetUsage(deviceName string) (int64, error) {
count, err := strconv.ParseInt(status.Params[0], 10, 64)
if err != nil {
return 0, errors.Wrapf(err, "failed to parse status params: %q", status.Params[0])
return 0, fmt.Errorf("failed to parse status params: %q: %w", status.Params[0], err)
}
return count * dmsetup.SectorSize, nil
@@ -506,7 +508,7 @@ func (p *PoolDevice) GetUsage(deviceName string) (int64, error) {
func (p *PoolDevice) RemoveDevice(ctx context.Context, deviceName string) error {
info, err := p.metadata.GetDevice(ctx, deviceName)
if err != nil {
return errors.Wrapf(err, "can't query metadata for device %q", deviceName)
return fmt.Errorf("can't query metadata for device %q: %w", deviceName, err)
}
if err := p.DeactivateDevice(ctx, deviceName, false, true); err != nil {
@@ -519,7 +521,7 @@ func (p *PoolDevice) RemoveDevice(ctx context.Context, deviceName string) error
// Remove record from meta store and free device ID
if err := p.metadata.RemoveDevice(ctx, deviceName); err != nil {
return errors.Wrapf(err, "can't remove device %q metadata from store after removal", deviceName)
return fmt.Errorf("can't remove device %q metadata from store after removal: %w", deviceName, err)
}
return nil
@@ -537,7 +539,7 @@ func (p *PoolDevice) deleteDevice(ctx context.Context, info *DeviceInfo) error {
return nil
})
}); err != nil {
return errors.Wrapf(err, "failed to delete device %q (dev id: %d)", info.Name, info.DeviceID)
return fmt.Errorf("failed to delete device %q (dev id: %d): %w", info.Name, info.DeviceID, err)
}
return nil
@@ -547,7 +549,7 @@ func (p *PoolDevice) deleteDevice(ctx context.Context, info *DeviceInfo) error {
func (p *PoolDevice) RemovePool(ctx context.Context) error {
deviceNames, err := p.metadata.GetDeviceNames(ctx)
if err != nil {
return errors.Wrap(err, "can't query device names")
return fmt.Errorf("can't query device names: %w", err)
}
var result *multierror.Error
@@ -555,12 +557,12 @@ func (p *PoolDevice) RemovePool(ctx context.Context) error {
// Deactivate devices if any
for _, name := range deviceNames {
if err := p.DeactivateDevice(ctx, name, true, true); err != nil {
result = multierror.Append(result, errors.Wrapf(err, "failed to remove %q", name))
result = multierror.Append(result, fmt.Errorf("failed to remove %q: %w", name, err))
}
}
if err := dmsetup.RemoveDevice(p.poolName, dmsetup.RemoveWithForce, dmsetup.RemoveWithRetries, dmsetup.RemoveDeferred); err != nil {
result = multierror.Append(result, errors.Wrapf(err, "failed to remove pool %q", p.poolName))
result = multierror.Append(result, fmt.Errorf("failed to remove pool %q: %w", p.poolName, err))
}
return result.ErrorOrNil()

View File

@@ -21,6 +21,7 @@ package devmapper
import (
"context"
"errors"
"fmt"
"os"
"path/filepath"
@@ -34,7 +35,6 @@ import (
"github.com/containerd/containerd/snapshots/devmapper/dmsetup"
"github.com/containerd/containerd/snapshots/storage"
"github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
exec "golang.org/x/sys/execabs"
)
@@ -76,12 +76,12 @@ func NewSnapshotter(ctx context.Context, config *Config) (*Snapshotter, error) {
var cleanupFn []closeFunc
if err := os.MkdirAll(config.RootPath, 0750); err != nil && !os.IsExist(err) {
return nil, errors.Wrapf(err, "failed to create root directory: %s", config.RootPath)
return nil, fmt.Errorf("failed to create root directory: %s: %w", config.RootPath, err)
}
store, err := storage.NewMetaStore(filepath.Join(config.RootPath, metadataFileName))
if err != nil {
return nil, errors.Wrap(err, "failed to create metastore")
return nil, fmt.Errorf("failed to create metastore: %w", err)
}
cleanupFn = append(cleanupFn, store.Close)
@@ -481,7 +481,7 @@ func mkfs(ctx context.Context, fs fsType, fsOptions string, path string) error {
b, err := exec.Command(mkfsCommand, args...).CombinedOutput()
out := string(b)
if err != nil {
return errors.Wrapf(err, "%s couldn't initialize %q: %s", mkfsCommand, path, out)
return fmt.Errorf("%s couldn't initialize %q: %s: %w", mkfsCommand, path, out, err)
}
log.G(ctx).Debugf("mkfs:\n%s", out)
@@ -539,12 +539,12 @@ func (s *Snapshotter) withTransaction(ctx context.Context, writable bool, fn fun
if err != nil || !writable {
if terr := trans.Rollback(); terr != nil {
log.G(ctx).WithError(terr).Error("failed to rollback transaction")
result = multierror.Append(result, errors.Wrap(terr, "rollback failed"))
result = multierror.Append(result, fmt.Errorf("rollback failed: %w", terr))
}
} else {
if terr := trans.Commit(); terr != nil {
log.G(ctx).WithError(terr).Error("failed to commit transaction")
result = multierror.Append(result, errors.Wrap(terr, "commit failed"))
result = multierror.Append(result, fmt.Errorf("commit failed: %w", terr))
}
}