-// Writes each pull list to a file.
-// The filename is based on the hostname.
-//
-// This is just a hack for prototyping, it is not expected to be used
-// in production.
-func WriteTrashLists(arvLogger *logger.Logger,
- trashLists map[string]TrashList) {
- r := strings.NewReplacer(":", ".")
- for host, list := range trashLists {
- filename := fmt.Sprintf("trash_list.%s", r.Replace(host))
- trashListFile, err := os.Create(filename)
- if err != nil {
- loggerutil.FatalWithMessage(arvLogger,
- fmt.Sprintf("Failed to open %s: %v", filename, err))
- }
- defer trashListFile.Close()
+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 _, blockOnServer := range keepServerInfo.BlockToServers[block] {
+ if blockOnServer.Mtime >= expiry {
+ continue
+ }
+
+ // block is older than expire cutoff
+ srv := keepServerInfo.KeepServerIndexToAddress[blockOnServer.ServerIndex].String()