package main
import (
- "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
"log"
"time"
)
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)
*/
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