summaryrefslogtreecommitdiff
path: root/layer/filestore.go
diff options
context:
space:
mode:
authorDerek McGowan <derek@mcgstyle.net>2016-01-19 11:17:08 -0800
committerDerek McGowan <derek@mcgstyle.net>2016-01-19 11:17:08 -0800
commitcaef48f4e25eb56ae9d63aa58bea588891bed944 (patch)
tree32c5acf0ddd762b305ad8e68409a351a2670dc2b /layer/filestore.go
parent30e42a27991377e4b278dee089436bc57ee04a4d (diff)
downloaddocker-caef48f4e25eb56ae9d63aa58bea588891bed944.tar.gz
Add more robust error handling on layer store creation
Add continue when layer fails on store creation Trim whitespace from layerstore files to keep trailing space from failing a layer load Fixes #19449 Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
Diffstat (limited to 'layer/filestore.go')
-rw-r--r--layer/filestore.go28
1 files changed, 16 insertions, 12 deletions
diff --git a/layer/filestore.go b/layer/filestore.go
index 236c9ba5ad..a0044b3663 100644
--- a/layer/filestore.go
+++ b/layer/filestore.go
@@ -10,6 +10,7 @@ import (
"path/filepath"
"regexp"
"strconv"
+ "strings"
"github.com/Sirupsen/logrus"
"github.com/docker/distribution/digest"
@@ -154,7 +155,7 @@ func (fms *fileMetadataStore) GetParent(layer ChainID) (ChainID, error) {
return "", err
}
- dgst, err := digest.ParseDigest(string(content))
+ dgst, err := digest.ParseDigest(strings.TrimSpace(string(content)))
if err != nil {
return "", err
}
@@ -168,7 +169,7 @@ func (fms *fileMetadataStore) GetDiffID(layer ChainID) (DiffID, error) {
return "", err
}
- dgst, err := digest.ParseDigest(string(content))
+ dgst, err := digest.ParseDigest(strings.TrimSpace(string(content)))
if err != nil {
return "", err
}
@@ -177,16 +178,17 @@ func (fms *fileMetadataStore) GetDiffID(layer ChainID) (DiffID, error) {
}
func (fms *fileMetadataStore) GetCacheID(layer ChainID) (string, error) {
- content, err := ioutil.ReadFile(fms.getLayerFilename(layer, "cache-id"))
+ contentBytes, err := ioutil.ReadFile(fms.getLayerFilename(layer, "cache-id"))
if err != nil {
return "", err
}
+ content := strings.TrimSpace(string(contentBytes))
- if !stringIDRegexp.MatchString(string(content)) {
+ if !stringIDRegexp.MatchString(content) {
return "", errors.New("invalid cache id value")
}
- return string(content), nil
+ return content, nil
}
func (fms *fileMetadataStore) TarSplitReader(layer ChainID) (io.ReadCloser, error) {
@@ -227,32 +229,34 @@ func (fms *fileMetadataStore) SetMountParent(mount string, parent ChainID) error
}
func (fms *fileMetadataStore) GetMountID(mount string) (string, error) {
- content, err := ioutil.ReadFile(fms.getMountFilename(mount, "mount-id"))
+ contentBytes, err := ioutil.ReadFile(fms.getMountFilename(mount, "mount-id"))
if err != nil {
return "", err
}
+ content := strings.TrimSpace(string(contentBytes))
- if !stringIDRegexp.MatchString(string(content)) {
+ if !stringIDRegexp.MatchString(content) {
return "", errors.New("invalid mount id value")
}
- return string(content), nil
+ return content, nil
}
func (fms *fileMetadataStore) GetInitID(mount string) (string, error) {
- content, err := ioutil.ReadFile(fms.getMountFilename(mount, "init-id"))
+ contentBytes, err := ioutil.ReadFile(fms.getMountFilename(mount, "init-id"))
if err != nil {
if os.IsNotExist(err) {
return "", nil
}
return "", err
}
+ content := strings.TrimSpace(string(contentBytes))
- if !stringIDRegexp.MatchString(string(content)) {
+ if !stringIDRegexp.MatchString(content) {
return "", errors.New("invalid init id value")
}
- return string(content), nil
+ return content, nil
}
func (fms *fileMetadataStore) GetMountParent(mount string) (ChainID, error) {
@@ -264,7 +268,7 @@ func (fms *fileMetadataStore) GetMountParent(mount string) (ChainID, error) {
return "", err
}
- dgst, err := digest.ParseDigest(string(content))
+ dgst, err := digest.ParseDigest(strings.TrimSpace(string(content)))
if err != nil {
return "", err
}