4 "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
10 Keepstore initiates trash worker channel goroutine.
11 The channel will process trash list.
12 For each (next) trash request:
13 Delete the block indicated by the trash request Locator
17 var defaultTrashLifetime int64 = 0
19 func RunTrashWorker(arv *arvadosclient.ArvadosClient, trashq *WorkQueue) {
21 defaultTrashLifetimeMap, err := arv.Discovery("defaultTrashLifetime")
23 log.Fatalf("Error setting up arvados client %s", err.Error())
25 defaultTrashLifetime = int64(defaultTrashLifetimeMap["defaultTrashLifetime"].(float64))
28 nextItem := trashq.NextItem
29 for item := range nextItem {
30 trashRequest := item.(TrashRequest)
31 err := TrashItem(trashRequest)
33 log.Printf("Trash request error for %s: %s", trashRequest, err)
39 Delete the block indicated by the Locator in TrashRequest.
41 func TrashItem(trashRequest TrashRequest) (err error) {
42 // Verify if the block is to be deleted based on its Mtime
43 for _, volume := range KeepVM.Volumes() {
44 mtime, err := volume.Mtime(trashRequest.Locator)
46 if trashRequest.BlockMtime == mtime.Unix() {
47 currentTime := time.Now().Unix()
48 if (currentTime - trashRequest.BlockMtime) > defaultTrashLifetime {
49 err = volume.Delete(trashRequest.Locator)