Merge branch '8784-dir-listings'
[arvados.git] / services / keepstore / trash_worker.go
index 27d6216d01633feca360de94f0a8febaabfb475a..51fbb947917328e30db244ca841441a983d8bec5 100644 (file)
@@ -1,11 +1,15 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
 package main
 
 import (
        "errors"
-       "log"
        "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,7 +39,17 @@ 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)