Skip to content

Commit

Permalink
Wrap missing container errors with container ID
Browse files Browse the repository at this point in the history
While playing around with podman system df, I saw that my container
database was in bad state.  Basically podman new about containers
that were no longer in container/storage.

The podman system df was just erroring out early stating "container does not exist"
with no indicator of which container.

This Patch wraps the podman system df errors to indicate which container does not exist.
It also logs errors on containers that get into this state, but continues on to work on
all containers.

Signed-off-by: Daniel J Walsh <[email protected]>
  • Loading branch information
rhatdan committed Nov 15, 2020
1 parent 9fa09a8 commit ff65d60
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions pkg/domain/infra/abi/system.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/containers/podman/v2/pkg/rootless"
"github.com/containers/podman/v2/pkg/util"
"github.com/containers/podman/v2/utils"
"github.com/containers/storage"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -231,17 +232,25 @@ func (ic *ContainerEngine) SystemDf(ctx context.Context, options entities.System
dfContainers := make([]*entities.SystemDfContainerReport, 0, len(cons))
for _, c := range cons {
iid, _ := c.Image()
conSize, err := c.RootFsSize()
state, err := c.State()
if err != nil {
return nil, err
return nil, errors.Wrapf(err, "Failed to get state of container %s", c.ID())
}
state, err := c.State()
conSize, err := c.RootFsSize()
if err != nil {
return nil, err
if errors.Cause(err) == storage.ErrContainerUnknown {
logrus.Error(errors.Wrapf(err, "Failed to get root file system size of container %s", c.ID()))
} else {
return nil, errors.Wrapf(err, "Failed to get root file system size of container %s", c.ID())
}
}
rwsize, err := c.RWSize()
if err != nil {
return nil, err
if errors.Cause(err) == storage.ErrContainerUnknown {
logrus.Error(errors.Wrapf(err, "Failed to get read/write size of container %s", c.ID()))
} else {
return nil, errors.Wrapf(err, "Failed to get read/write size of container %s", c.ID())
}
}
report := entities.SystemDfContainerReport{
ContainerID: c.ID(),
Expand Down

0 comments on commit ff65d60

Please sign in to comment.