From c460d8e7f26c02b5fcd48cbc9c03d8c97006b631 Mon Sep 17 00:00:00 2001 From: Michal Niewrzal Date: Wed, 3 Apr 2024 10:42:25 +0200 Subject: [PATCH] satellite/repair: fix segment repairer override configuration Change-Id: I4dda390737a64b5125e00a05c3f7f24e908da8fd --- satellite/repair/checker/config.go | 18 ++++++++++++++---- satellite/repair/checker/observer.go | 8 ++++---- satellite/repair/repairer/segments.go | 7 ++++--- satellite/repairer.go | 2 +- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/satellite/repair/checker/config.go b/satellite/repair/checker/config.go index 6dde76100b0b..fe2f54e5d3c0 100644 --- a/satellite/repair/checker/config.go +++ b/satellite/repair/checker/config.go @@ -17,10 +17,10 @@ import ( type Config struct { Interval time.Duration `help:"how frequently checker should check for bad segments" releaseDefault:"30s" devDefault:"0h0m10s" testDefault:"$TESTINTERVAL"` - ReliabilityCacheStaleness time.Duration `help:"how stale reliable node cache can be" releaseDefault:"5m" devDefault:"5m" testDefault:"1m"` - RepairOverrides RepairOverrides `help:"[DEPRECATED] comma-separated override values for repair threshold in the format k-threshold" releaseDefault:"" devDefault:"" deprecated:"true"` - RepairThresholdOverrides RepairOverrides `help:"comma-separated override values for repair threshold in the format k-threshold" releaseDefault:"29-52" devDefault:""` - RepairTargetOverrides RepairOverrides `help:"comma-separated override values for repair success target in the format k-target" releaseDefault:"29-65" devDefault:""` + ReliabilityCacheStaleness time.Duration `help:"how stale reliable node cache can be" releaseDefault:"5m" devDefault:"5m" testDefault:"1m"` + RepairOverrides RepairOverrides `help:"[DEPRECATED] comma-separated override values for repair threshold in the format k-threshold" releaseDefault:"" devDefault:"" deprecated:"true"` + RepairThresholdOverrides RepairThresholdOverrides `help:"comma-separated override values for repair threshold in the format k-threshold" releaseDefault:"29-52" devDefault:""` + RepairTargetOverrides RepairTargetOverrides `help:"comma-separated override values for repair success target in the format k-target" releaseDefault:"29-65" devDefault:""` // Node failure rate is an estimation based on a 6 hour checker run interval (4 checker iterations per day), a network of about 9200 nodes, and about 2 nodes churning per day. // This results in `2/9200/4 = 0.00005435` being the probability of any single node going down in the interval of one checker iteration. NodeFailureRate float64 `help:"the probability of a single node going down within the next checker iteration" default:"0.00005435" ` @@ -30,6 +30,16 @@ type Config struct { DoPlacementCheck bool `help:"Treat pieces out of segment placement as in need of repair" default:"true"` } +// RepairThresholdOverrides override values for repair threshold. +type RepairThresholdOverrides struct { + RepairOverrides +} + +// RepairTargetOverrides override values for repair success target. +type RepairTargetOverrides struct { + RepairOverrides +} + // RepairOverrides is a configuration struct that contains a list of override repair // values for various given RS combinations of k/o/n (min/success/total). // diff --git a/satellite/repair/checker/observer.go b/satellite/repair/checker/observer.go index ef7801b99c9c..184d179fee5d 100644 --- a/satellite/repair/checker/observer.go +++ b/satellite/repair/checker/observer.go @@ -41,7 +41,7 @@ type Observer struct { repairQueue queue.RepairQueue nodesCache *ReliabilityCache overlayService *overlay.Service - repairThresholdOverrides RepairOverrides + repairThresholdOverrides RepairThresholdOverrides nodeFailureRate float64 repairQueueBatchSize int excludedCountryCodes map[location.CountryCode]struct{} @@ -68,7 +68,7 @@ func NewObserver(logger *zap.Logger, repairQueue queue.RepairQueue, overlay *ove if config.RepairOverrides.String() != "" { // backwards compatibility - config.RepairThresholdOverrides = config.RepairOverrides + config.RepairThresholdOverrides = RepairThresholdOverrides{config.RepairOverrides} } return &Observer{ @@ -244,7 +244,7 @@ func (observer *Observer) getObserverStats(redundancy storj.RedundancyScheme) *o return observerStats } -func loadRedundancy(redundancy storj.RedundancyScheme, repairThresholdOverrides RepairOverrides) (int, int, int, int) { +func loadRedundancy(redundancy storj.RedundancyScheme, repairThresholdOverrides RepairThresholdOverrides) (int, int, int, int) { repair := int(redundancy.RepairShares) if overrideValue := repairThresholdOverrides.GetOverrideValue(redundancy); overrideValue != 0 { @@ -265,7 +265,7 @@ type observerFork struct { nodesCache *ReliabilityCache overlayService *overlay.Service rsStats map[storj.RedundancyScheme]*partialRSStats - repairThresholdOverrides RepairOverrides + repairThresholdOverrides RepairThresholdOverrides nodeFailureRate float64 getNodesEstimate func(ctx context.Context) (int, error) log *zap.Logger diff --git a/satellite/repair/repairer/segments.go b/satellite/repair/repairer/segments.go index 932b0030050c..448d9dc358e5 100644 --- a/satellite/repair/repairer/segments.go +++ b/satellite/repair/repairer/segments.go @@ -98,9 +98,9 @@ type SegmentRepairer struct { multiplierOptimalThreshold float64 // repairThresholdOverrides is the set of values configured by the checker to override the repair threshold for various RS schemes. - repairThresholdOverrides checker.RepairOverrides + repairThresholdOverrides checker.RepairThresholdOverrides // repairTargetOverrides is similar but determines the optimum number of pieces per segment. - repairTargetOverrides checker.RepairOverrides + repairTargetOverrides checker.RepairTargetOverrides excludedCountryCodes map[location.CountryCode]struct{} @@ -123,7 +123,8 @@ func NewSegmentRepairer( reporter audit.Reporter, ecRepairer *ECRepairer, placements nodeselection.PlacementDefinitions, - repairThresholdOverrides, repairTargetOverrides checker.RepairOverrides, + repairThresholdOverrides checker.RepairThresholdOverrides, + repairTargetOverrides checker.RepairTargetOverrides, config Config, ) *SegmentRepairer { diff --git a/satellite/repairer.go b/satellite/repairer.go index 9a2735779c8d..398867080325 100644 --- a/satellite/repairer.go +++ b/satellite/repairer.go @@ -238,7 +238,7 @@ func NewRepairer(log *zap.Logger, full *identity.FullIdentity, peer.Audit.Reporter, peer.EcRepairer, placement, - config.Checker.RepairTargetOverrides, + config.Checker.RepairThresholdOverrides, config.Checker.RepairTargetOverrides, config.Repairer, )