6507: Paste in command line for creating service principals instead of just
[arvados.git] / services / keepstore / trash_worker.go
index bc1775f97eb3e0c700c8197fa5b21b77ecc019e0..4fbe4bb59624e22e820cf7eab7c2bb5013212e14 100644 (file)
@@ -1,6 +1,7 @@
 package main
 
 import (
+       "errors"
        "log"
        "time"
 )
@@ -32,16 +33,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
                }
-               err = volume.Delete(trashRequest.Locator)
+
+               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): %v", volume, trashRequest.Locator, err)
-                       continue
+               } else {
+                       log.Printf("%v Delete(%v) OK", volume, trashRequest.Locator)
                }
-               log.Printf("%v Delete(%v) OK", volume, trashRequest.Locator)
        }
 }