diff --git a/internal/cri/server/restart.go b/internal/cri/server/restart.go index f4d63b211..228e751b4 100644 --- a/internal/cri/server/restart.go +++ b/internal/cri/server/restart.go @@ -18,6 +18,7 @@ package server import ( "context" + "errors" "fmt" "os" "path/filepath" @@ -107,6 +108,14 @@ func (c *criService) recover(ctx context.Context) error { metadata := sandboxstore.Metadata{} err := sbx.GetExtension(podsandbox.MetadataKey, &metadata) if err != nil { + if errors.Is(err, errdefs.ErrNotFound) { + err = c.client.SandboxStore().Delete(ctx, sbx.ID) + if err != nil { + return fmt.Errorf("failed to delete sandbox in response to missing metadata for sandbox %q: %w", sbx.ID, err) + } + // TODO: cleanup network namespace + continue + } return fmt.Errorf("failed to get metadata for stored sandbox %q: %w", sbx.ID, err) }