X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/421c879e077ce8f644553ba3a1481cb55529ee33..34227825eec21d3a393d4467b7ed768b52ac32b1:/services/keepstore/trash_worker.go?ds=sidebyside diff --git a/services/keepstore/trash_worker.go b/services/keepstore/trash_worker.go index 6257f7b470..65e3fbd284 100644 --- a/services/keepstore/trash_worker.go +++ b/services/keepstore/trash_worker.go @@ -6,41 +6,46 @@ import ( "time" ) -/* - Keepstore initiates trash worker channel goroutine. - The channel will process trash list. - For each (next) trash request: - Delete the block indicated by the trash request Locator - Repeat -*/ - +// RunTrashWorker is used by Keepstore to initiate trash worker channel goroutine. +// The channel will process trash list. +// For each (next) trash request: +// Delete the block indicated by the trash request Locator +// Repeat +// func RunTrashWorker(trashq *WorkQueue) { for item := range trashq.NextItem { trashRequest := item.(TrashRequest) TrashItem(trashRequest) + trashq.DoneItem <- struct{}{} } } // TrashItem deletes the indicated block from every writable volume. func TrashItem(trashRequest TrashRequest) { reqMtime := time.Unix(trashRequest.BlockMtime, 0) - if time.Since(reqMtime) < blob_signature_ttl { - log.Printf("WARNING: data manager asked to delete a %v old block %v (BlockMtime %d = %v), but my blob_signature_ttl is %v! Skipping.", + if time.Since(reqMtime) < blobSignatureTTL { + log.Printf("WARNING: data manager asked to delete a %v old block %v (BlockMtime %d = %v), but my blobSignatureTTL is %v! Skipping.", time.Since(reqMtime), trashRequest.Locator, trashRequest.BlockMtime, reqMtime, - blob_signature_ttl) + blobSignatureTTL) 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 = errors.New("did not delete block because never_delete is true") + if neverDelete { + err = errors.New("did not delete block because neverDelete is true") } else { err = volume.Delete(trashRequest.Locator) }