Merge branch 'thehyve/fix-crunch-documentation' Fix a typo in Crunch Dispatch install...
[arvados.git] / services / keepstore / s3_volume.go
index 532a0823e2da2aefa5120a5fa2d5326e557bfa5e..9d4d8019282ebf01160544d940345b36fe892076 100644 (file)
@@ -835,18 +835,22 @@ func (v *S3Volume) EmptyTrash() {
                atomic.AddInt64(&blocksDeleted, 1)
 
                _, err = v.bucket.Head(loc, nil)
-               if os.IsNotExist(err) {
-                       err = v.bucket.Del("recent/" + loc)
-                       if err != nil {
-                               log.Printf("warning: %s: EmptyTrash: deleting %q: %s", v, "recent/"+loc, err)
-                       }
-               } else if err != nil {
-                       log.Printf("warning: %s: EmptyTrash: HEAD %q: %s", v, "recent/"+loc, err)
+               if err == nil {
+                       log.Printf("warning: %s: EmptyTrash: HEAD %q succeeded immediately after deleting %q", v, loc, loc)
+                       return
+               }
+               if !os.IsNotExist(v.translateError(err)) {
+                       log.Printf("warning: %s: EmptyTrash: HEAD %q: %s", v, loc, err)
+                       return
+               }
+               err = v.bucket.Del("recent/" + loc)
+               if err != nil {
+                       log.Printf("warning: %s: EmptyTrash: deleting %q: %s", v, "recent/"+loc, err)
                }
        }
 
        var wg sync.WaitGroup
-       todo := make(chan *s3.Key)
+       todo := make(chan *s3.Key, theConfig.EmptyTrashWorkers)
        for i := 0; i < 1 || i < theConfig.EmptyTrashWorkers; i++ {
                wg.Add(1)
                go func() {