Merge branch '6260-work-queue-status' refs #6260
[arvados.git] / services / keepstore / trash_worker.go
index 52f5e7534578d27ddf1d72c51b3258a72950c56d..8f78658c3a7496473c2d81a7f0d7b13213ef9d5f 100644 (file)
@@ -18,6 +18,7 @@ func RunTrashWorker(trashq *WorkQueue) {
        for item := range trashq.NextItem {
                trashRequest := item.(TrashRequest)
                TrashItem(trashRequest)
+               trashq.DoneItem <- struct{}{}
        }
 }
 
@@ -33,22 +34,28 @@ func TrashItem(trashRequest TrashRequest) {
                        blob_signature_ttl)
                return
        }
+
        for _, volume := range KeepVM.AllWritable() {
                mtime, err := volume.Mtime(trashRequest.Locator)
-               if err != nil || trashRequest.BlockMtime != mtime.Unix() {
+               if err != nil {
+                       log.Printf("%v Delete(%v): %v", volume, trashRequest.Locator, err)
+                       continue
+               }
+               if trashRequest.BlockMtime != mtime.Unix() {
+                       log.Printf("%v Delete(%v): mtime on volume is %v does not match trash list value %v", volume, trashRequest.Locator, mtime.Unix(), trashRequest.BlockMtime)
                        continue
                }
 
-               if !never_delete {
-                       err = volume.Delete(trashRequest.Locator)
-               } else {
+               if never_delete {
                        err = errors.New("did not delete block because never_delete is true")
+               } else {
+                       err = volume.Delete(trashRequest.Locator)
                }
 
-               if err == nil {
-                       log.Printf("%v Delete(%v) OK", volume, trashRequest.Locator)
-               } else {
+               if err != nil {
                        log.Printf("%v Delete(%v): %v", volume, trashRequest.Locator, err)
+               } else {
+                       log.Printf("%v Delete(%v) OK", volume, trashRequest.Locator)
                }
        }
 }