diff --git a/bgs/bgs.go b/bgs/bgs.go index 35dfab9d..7e225f6c 100644 --- a/bgs/bgs.go +++ b/bgs/bgs.go @@ -112,6 +112,7 @@ type BGSConfig struct { DefaultRepoLimit int64 ConcurrencyPerPDS int64 MaxQueuePerPDS int64 + InitialNewPDSPerDayLimit int64 NumCompactionWorkers int } @@ -122,6 +123,7 @@ func DefaultBGSConfig() *BGSConfig { DefaultRepoLimit: 100, ConcurrencyPerPDS: 100, MaxQueuePerPDS: 1_000, + InitialNewPDSPerDayLimit: 10, NumCompactionWorkers: 2, } } @@ -159,6 +161,7 @@ func NewBGS(db *gorm.DB, ix *indexer.Indexer, repoman *repomgr.RepoManager, evtm slOpts.DefaultRepoLimit = config.DefaultRepoLimit slOpts.ConcurrencyPerPDS = config.ConcurrencyPerPDS slOpts.MaxQueuePerPDS = config.MaxQueuePerPDS + slOpts.DefaultNewPDSPerDayLimit = config.InitialNewPDSPerDayLimit s, err := NewSlurper(db, bgs.handleFedEvent, slOpts) if err != nil { return nil, err diff --git a/bgs/fedmgr.go b/bgs/fedmgr.go index 42ce7407..9072ba05 100644 --- a/bgs/fedmgr.go +++ b/bgs/fedmgr.go @@ -45,6 +45,7 @@ type Slurper struct { MaxQueuePerPDS int64 NewPDSPerDayLimiter *slidingwindow.Limiter + initialNewPDSPerDayLimit int64 newSubsDisabled bool trustedDomains []string @@ -70,6 +71,7 @@ type SlurperOptions struct { DefaultRepoLimit int64 ConcurrencyPerPDS int64 MaxQueuePerPDS int64 + DefaultNewPDSPerDayLimit int64 } func DefaultSlurperOptions() *SlurperOptions { @@ -82,6 +84,7 @@ func DefaultSlurperOptions() *SlurperOptions { DefaultRepoLimit: 100, ConcurrencyPerPDS: 100, MaxQueuePerPDS: 1_000, + DefaultNewPDSPerDayLimit: 10, } } @@ -112,6 +115,7 @@ func NewSlurper(db *gorm.DB, cb IndexCallback, opts *SlurperOptions) (*Slurper, ssl: opts.SSL, shutdownChan: make(chan bool), shutdownResult: make(chan []error), + initialNewPDSPerDayLimit: opts.DefaultNewPDSPerDayLimit, } if err := s.loadConfig(); err != nil { return nil, err @@ -224,13 +228,15 @@ func (s *Slurper) loadConfig() error { } if sc.ID == 0 { - if err := s.db.Create(&SlurpConfig{}).Error; err != nil { + sc.NewPDSPerDayLimit = s.initialNewPDSPerDayLimit + if err := s.db.Create(&SlurpConfig{ NewPDSPerDayLimit: s.initialNewPDSPerDayLimit, }).Error; err != nil { return err } } s.newSubsDisabled = sc.NewSubsDisabled s.trustedDomains = sc.TrustedDomains + s.initialNewPDSPerDayLimit = sc.NewPDSPerDayLimit s.NewPDSPerDayLimiter, _ = slidingwindow.NewLimiter(time.Hour*24, sc.NewPDSPerDayLimit, windowFunc) diff --git a/cmd/bigsky/main.go b/cmd/bigsky/main.go index 540796f5..cb946aed 100644 --- a/cmd/bigsky/main.go +++ b/cmd/bigsky/main.go @@ -195,6 +195,12 @@ func run(args []string) error { EnvVars: []string{"RELAY_EVENT_PLAYBACK_TTL"}, Value: 72 * time.Hour, }, + &cli.Int64Flag{ + Name: "newpds-perday-limit", + EnvVars: []string{"RELAY_NEWPDS_PERDAY_LIMIT"}, + Value: 10, + Usage: "initial value for NewPDSPerDayLimit", + }, &cli.IntFlag{ Name: "num-compaction-workers", EnvVars: []string{"RELAY_NUM_COMPACTION_WORKERS"}, @@ -418,6 +424,7 @@ func runBigsky(cctx *cli.Context) error { bgsConfig.ConcurrencyPerPDS = cctx.Int64("concurrency-per-pds") bgsConfig.MaxQueuePerPDS = cctx.Int64("max-queue-per-pds") bgsConfig.DefaultRepoLimit = cctx.Int64("default-repo-limit") + bgsConfig.InitialNewPDSPerDayLimit = cctx.Int64("newpds-perday-limit") bgsConfig.NumCompactionWorkers = cctx.Int("num-compaction-workers") bgs, err := libbgs.NewBGS(db, ix, repoman, evtman, cachedidr, rf, hr, bgsConfig) if err != nil {