X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/036140f305fc34fdefe0ae393b1011f4c3f840de..f51b562b9def7f6bc17e0cc52b60ffc2641d40b5:/services/datamanager/summary/trash_list.go diff --git a/services/datamanager/summary/trash_list.go b/services/datamanager/summary/trash_list.go index 330cd4e45a..0bedc9cc3a 100644 --- a/services/datamanager/summary/trash_list.go +++ b/services/datamanager/summary/trash_list.go @@ -2,15 +2,16 @@ package summary import ( + "errors" + "fmt" "git.curoverse.com/arvados.git/sdk/go/keepclient" "git.curoverse.com/arvados.git/services/datamanager/keep" - "log" "time" ) func BuildTrashLists(kc *keepclient.KeepClient, keepServerInfo *keep.ReadServers, - keepBlocksNotInCollections BlockSet) (m map[string]keep.TrashList) { + keepBlocksNotInCollections BlockSet) (m map[string]keep.TrashList, err error) { // Servers that are writeable writableServers := map[string]struct{}{} @@ -20,8 +21,7 @@ func BuildTrashLists(kc *keepclient.KeepClient, _ttl, err := kc.Arvados.Discovery("blobSignatureTtl") if err != nil { - log.Printf("Failed to get blobSignatureTtl: %v", err) - return map[string]keep.TrashList{} + return nil, errors.New(fmt.Sprintf("Failed to get blobSignatureTtl, can't build trash lists: %v", err)) } ttl := int64(_ttl.(float64)) @@ -29,28 +29,30 @@ func BuildTrashLists(kc *keepclient.KeepClient, // expire unreferenced blocks more than "ttl" seconds old. expiry := time.Now().UTC().Unix() - ttl - return BuildTrashListsInternal(writableServers, keepServerInfo, expiry, keepBlocksNotInCollections) + return buildTrashListsInternal(writableServers, keepServerInfo, expiry, keepBlocksNotInCollections), nil } -func BuildTrashListsInternal(writableServers map[string]struct{}, +func buildTrashListsInternal(writableServers map[string]struct{}, keepServerInfo *keep.ReadServers, expiry int64, keepBlocksNotInCollections BlockSet) (m map[string]keep.TrashList) { m = make(map[string]keep.TrashList) - for block, _ := range keepBlocksNotInCollections { + for block := range keepBlocksNotInCollections { for _, block_on_server := range keepServerInfo.BlockToServers[block] { - if block_on_server.Mtime < expiry { - // block is older than expire cutoff - srv := keepServerInfo.KeepServerIndexToAddress[block_on_server.ServerIndex].String() + if block_on_server.Mtime >= expiry { + continue + } - _, writable := writableServers[srv] + // block is older than expire cutoff + srv := keepServerInfo.KeepServerIndexToAddress[block_on_server.ServerIndex].String() - if writable { - m[srv] = append(m[srv], keep.TrashRequest{Locator: block.Digest.String(), BlockMtime: block_on_server.Mtime}) - } + if _, writable := writableServers[srv]; !writable { + continue } + + m[srv] = append(m[srv], keep.TrashRequest{Locator: block.Digest.String(), BlockMtime: block_on_server.Mtime}) } } return