From 2798d7a6a681aee8995e87c9b68128e54876d2b5 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Tue, 9 Feb 2016 09:44:33 -0800 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20stop=20daemon=20on=20migration?= =?UTF-8?q?=20hard=20failure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also changes missing storage layer for container RWLayer to a soft failure. Fixes #20147 Signed-off-by: Tonis Tiigi --- daemon/daemon.go | 2 +- layer/migration.go | 2 +- migrate/v1/migratev1.go | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/daemon/daemon.go b/daemon/daemon.go index 6367577cae..6cb7f8c602 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -748,7 +748,7 @@ func NewDaemon(config *Config, registryService *registry.Service) (daemon *Daemo migrationStart := time.Now() if err := v1.Migrate(config.Root, graphDriver, d.layerStore, d.imageStore, referenceStore, distributionMetadataStore); err != nil { - return nil, err + logrus.Errorf("Graph migration failed: %q. Your old graph data was found to be too inconsistent for upgrading to content-addressable storage. Some of the old data was probably not upgraded. We recommend starting over with a clean storage directory if possible.", err) } logrus.Infof("Graph migration to content-addressability took %.2f seconds", time.Since(migrationStart).Seconds()) diff --git a/layer/migration.go b/layer/migration.go index 9779ab7984..ac0f0065f2 100644 --- a/layer/migration.go +++ b/layer/migration.go @@ -32,7 +32,7 @@ func (ls *layerStore) CreateRWLayerByGraphID(name string, graphID string, parent } if !ls.driver.Exists(graphID) { - return errors.New("graph ID does not exist") + return fmt.Errorf("graph ID does not exist: %q", graphID) } var p *roLayer diff --git a/migrate/v1/migratev1.go b/migrate/v1/migratev1.go index 9243c5a42a..b7ce75b1c0 100644 --- a/migrate/v1/migratev1.go +++ b/migrate/v1/migratev1.go @@ -282,7 +282,8 @@ func migrateContainers(root string, ls graphIDMounter, is image.Store, imageMapp } if err := ls.CreateRWLayerByGraphID(id, id, img.RootFS.ChainID()); err != nil { - return err + logrus.Errorf("migrate container error: %v", err) + continue } logrus.Infof("migrated container %s to point to %s", id, imageID)