5562: Use static method. Fixes "TypeError: _socket_open() takes exactly 5 arguments...
[arvados.git] / services / keepstore / trash_worker.go
index bc99e9657a21cb490bd1db452d5338d56907b618..ca269126ee61f2a225b3a9a55a830ebfc51c9a97 100644 (file)
@@ -1,7 +1,6 @@
 package main
 
 import (
-       "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
        "log"
        "time"
 )
@@ -14,17 +13,7 @@ import (
                Repeat
 */
 
-var defaultTrashLifetime int64 = 0
-
-func RunTrashWorker(arv *arvadosclient.ArvadosClient, trashq *WorkQueue) {
-       if arv != nil {
-               defaultTrashLifetimeMap, err := arv.Discovery("defaultTrashLifetime")
-               if err != nil {
-                       log.Fatalf("Error setting up arvados client %s", err.Error())
-               }
-               defaultTrashLifetime = int64(defaultTrashLifetimeMap["defaultTrashLifetime"].(float64))
-       }
-
+func RunTrashWorker(trashq *WorkQueue) {
        nextItem := trashq.NextItem
        for item := range nextItem {
                trashRequest := item.(TrashRequest)
@@ -40,15 +29,14 @@ func RunTrashWorker(arv *arvadosclient.ArvadosClient, trashq *WorkQueue) {
 */
 func TrashItem(trashRequest TrashRequest) (err error) {
        // Verify if the block is to be deleted based on its Mtime
-       for _, volume := range KeepVM.Volumes() {
+       for _, volume := range KeepVM.AllWritable() {
                mtime, err := volume.Mtime(trashRequest.Locator)
-               if err == nil {
-                       if trashRequest.BlockMtime == mtime.Unix() {
-                               currentTime := time.Now().Unix()
-                               if (currentTime - trashRequest.BlockMtime) > defaultTrashLifetime {
-                                       err = volume.Delete(trashRequest.Locator)
-                               }
-                       }
+               if err != nil || trashRequest.BlockMtime != mtime.Unix() {
+                       continue
+               }
+               currentTime := time.Now().Unix()
+               if time.Duration(currentTime-trashRequest.BlockMtime)*time.Second >= permission_ttl {
+                       err = volume.Delete(trashRequest.Locator)
                }
        }
        return