Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
| ... | ... |
@@ -110,4 +110,10 @@ func TestRemoveImageGarbageCollector(t *testing.T) {
|
| 110 | 110 |
i.Cleanup() |
| 111 | 111 |
_, err = os.Stat(data["UpperDir"]) |
| 112 | 112 |
assert.Assert(t, os.IsNotExist(err)) |
| 113 |
+ |
|
| 114 |
+ // Make sure that removal pending layers does not exist on layerdb either |
|
| 115 |
+ layerdbItems, _ := ioutil.ReadDir(filepath.Join(d.RootDir(), "/image/overlay2/layerdb/sha256")) |
|
| 116 |
+ for _, folder := range layerdbItems {
|
|
| 117 |
+ assert.Equal(t, false, strings.HasSuffix(folder.Name(), "-removing")) |
|
| 118 |
+ } |
|
| 113 | 119 |
} |
| ... | ... |
@@ -403,7 +403,7 @@ func (fms *fileMetadataStore) Remove(layer ChainID, cache string) error {
|
| 403 | 403 |
return err |
| 404 | 404 |
} |
| 405 | 405 |
for _, f := range files {
|
| 406 |
- if !strings.HasSuffix(f.Name(), "-removing") || !strings.HasPrefix(f.Name(), dgst.String()) {
|
|
| 406 |
+ if !strings.HasSuffix(f.Name(), "-removing") || !strings.HasPrefix(f.Name(), dgst.Encoded()) {
|
|
| 407 | 407 |
continue |
| 408 | 408 |
} |
| 409 | 409 |
|
| ... | ... |
@@ -419,11 +419,11 @@ func (ls *layerStore) Map() map[ChainID]Layer {
|
| 419 | 419 |
func (ls *layerStore) deleteLayer(layer *roLayer, metadata *Metadata) error {
|
| 420 | 420 |
// Rename layer digest folder first so we detect orphan layer(s) |
| 421 | 421 |
// if ls.driver.Remove fails |
| 422 |
- dir := ls.store.getLayerDirectory(layer.chainID) |
|
| 422 |
+ var dir string |
|
| 423 | 423 |
for {
|
| 424 | 424 |
dgst := digest.Digest(layer.chainID) |
| 425 | 425 |
tmpID := fmt.Sprintf("%s-%s-removing", dgst.Hex(), stringid.GenerateRandomID())
|
| 426 |
- dir := filepath.Join(ls.store.root, string(dgst.Algorithm()), tmpID) |
|
| 426 |
+ dir = filepath.Join(ls.store.root, string(dgst.Algorithm()), tmpID) |
|
| 427 | 427 |
err := os.Rename(ls.store.getLayerDirectory(layer.chainID), dir) |
| 428 | 428 |
if os.IsExist(err) {
|
| 429 | 429 |
continue |