13937: Fixes file naming inconsistency between storage drivers.
[arvados.git] / services / keepstore / trash_worker.go
index 696c3e53a60abbd352efc035f5a0bb1afaec737f..8a9fedfb7007ca21ef1d5d2e482ce66464fafe1a 100644 (file)
@@ -1,3 +1,7 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
 package main
 
 import (
@@ -5,7 +9,6 @@ import (
        "time"
 
        "git.curoverse.com/arvados.git/sdk/go/arvados"
-       log "github.com/Sirupsen/logrus"
 )
 
 // RunTrashWorker is used by Keepstore to initiate trash worker channel goroutine.
@@ -35,27 +38,37 @@ func TrashItem(trashRequest TrashRequest) {
                return
        }
 
-       for _, volume := range KeepVM.AllWritable() {
+       var volumes []Volume
+       if uuid := trashRequest.MountUUID; uuid == "" {
+               volumes = KeepVM.AllWritable()
+       } else if v := KeepVM.Lookup(uuid, true); v == nil {
+               log.Printf("warning: trash request for nonexistent mount: %v", trashRequest)
+               return
+       } else {
+               volumes = []Volume{v}
+       }
+
+       for _, volume := range volumes {
                mtime, err := volume.Mtime(trashRequest.Locator)
                if err != nil {
-                       log.Printf("%v Delete(%v): %v", volume, trashRequest.Locator, err)
+                       log.Printf("%v Trash(%v): %v", volume, trashRequest.Locator, err)
                        continue
                }
                if trashRequest.BlockMtime != mtime.UnixNano() {
-                       log.Printf("%v Delete(%v): stored mtime %v does not match trash list value %v", volume, trashRequest.Locator, mtime.UnixNano(), trashRequest.BlockMtime)
+                       log.Printf("%v Trash(%v): stored mtime %v does not match trash list value %v", volume, trashRequest.Locator, mtime.UnixNano(), trashRequest.BlockMtime)
                        continue
                }
 
                if !theConfig.EnableDelete {
-                       err = errors.New("did not delete block because EnableDelete is false")
+                       err = errors.New("skipping because EnableDelete is false")
                } else {
                        err = volume.Trash(trashRequest.Locator)
                }
 
                if err != nil {
-                       log.Printf("%v Delete(%v): %v", volume, trashRequest.Locator, err)
+                       log.Printf("%v Trash(%v): %v", volume, trashRequest.Locator, err)
                } else {
-                       log.Printf("%v Delete(%v) OK", volume, trashRequest.Locator)
+                       log.Printf("%v Trash(%v) OK", volume, trashRequest.Locator)
                }
        }
 }