// Config contains configurable values for garbage collection
typeConfigstruct{
Intervaltime.Duration`help:"the time between each send of garbage collection filters to storage nodes" releaseDefault:"168h" devDefault:"10m"`
Enabledbool`help:"set if garbage collection is enabled or not" releaseDefault:"false" devDefault:"true"`
// value for InitialPieces currently based on average pieces per node
InitialPiecesint`help:"the initial number of pieces expected for a storage node to have, used for creating a filter" releaseDefault:"400000" devDefault:"10"`
FalsePositiveRatefloat64`help:"the false positive rate used for creating a garbage collection bloom filter" releaseDefault:"0.1" devDefault:"0.1"`
ConcurrentSendsint`help:"the number of nodes to concurrently send garbage collection bloom filters to" releaseDefault:"1" devDefault:"1"`
}
// Service implements the garbage collection service
typeServicestruct{
log*zap.Logger
configConfig
Loopsync2.Cycle
transporttransport.Client
overlayoverlay.DB
metainfoLoop*metainfo.Loop
}
// RetainInfo contains info needed for a storage node to retain important data and delete garbage data
typeRetainInfostruct{
Filter*bloomfilter.Filter
CreationDatetime.Time
Countint
}
// NewService creates a new instance of the gc service