X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5bf77ec1bbbd91ee2f1d063d963850c600251ca7..a7f96d94925721f6fe0be23fc626f00f05be635e:/services/keepstore/trash_worker.go diff --git a/services/keepstore/trash_worker.go b/services/keepstore/trash_worker.go index bc1775f97e..8f78658c3a 100644 --- a/services/keepstore/trash_worker.go +++ b/services/keepstore/trash_worker.go @@ -1,6 +1,7 @@ package main import ( + "errors" "log" "time" ) @@ -17,6 +18,7 @@ func RunTrashWorker(trashq *WorkQueue) { for item := range trashq.NextItem { trashRequest := item.(TrashRequest) TrashItem(trashRequest) + trashq.DoneItem <- struct{}{} } } @@ -32,16 +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 } - 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) } }