mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
Merge pull request #51826 from thaJeztah/29.x_backport_45939-init-layer-cleanup
[docker-29.x backport] layer: Clean up init layer if initialization fails
This commit is contained in:
@@ -648,7 +648,7 @@ func (ls *layerStore) saveMount(mount *mountedLayer) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ls *layerStore) initMount(graphID, parent, mountLabel string, initFunc MountInit, storageOpt map[string]string) (string, error) {
|
func (ls *layerStore) initMount(graphID, parent, mountLabel string, initFunc MountInit, storageOpt map[string]string) (_ string, retErr error) {
|
||||||
// Use "<graph-id>-init" to maintain compatibility with graph drivers
|
// Use "<graph-id>-init" to maintain compatibility with graph drivers
|
||||||
// which are expecting this layer with this special name. If all
|
// which are expecting this layer with this special name. If all
|
||||||
// graph drivers can be updated to not rely on knowing about this layer
|
// graph drivers can be updated to not rely on knowing about this layer
|
||||||
@@ -663,6 +663,16 @@ func (ls *layerStore) initMount(graphID, parent, mountLabel string, initFunc Mou
|
|||||||
if err := ls.driver.CreateReadWrite(initID, parent, createOpts); err != nil {
|
if err := ls.driver.CreateReadWrite(initID, parent, createOpts); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clean up init layer if any subsequent operation fails
|
||||||
|
defer func() {
|
||||||
|
if retErr != nil {
|
||||||
|
if err := ls.driver.Remove(initID); err != nil {
|
||||||
|
log.G(context.TODO()).WithFields(log.Fields{"init-id": initID, "error": err}).Error("Failed to clean up init layer after error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
p, err := ls.driver.Get(initID, "")
|
p, err := ls.driver.Get(initID, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
|||||||
Reference in New Issue
Block a user