Merge pull request #1663 from molecula/fully-disable-usage-endpoint

CORE-800 Disable /ui/usage endpoint completely when usage-duty-cycle is set to 0
This commit is contained in:
Matthew Jaffee 2021-08-05 09:37:10 -05:00 committed by GitHub
commit 54a4c2a587
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 4 deletions

15
api.go
View file

@ -910,6 +910,7 @@ type usageCache struct {
resetTrigger chan bool
lastCalcDuration time.Duration
waitMultiplier float64
disable bool
muCalculate sync.Mutex
muAssign sync.Mutex
@ -962,6 +963,11 @@ func (api *API) Usage(ctx context.Context, remote bool) (map[string]NodeUsage, e
span, _ := tracing.StartSpanFromContext(ctx, "API.Usage")
defer span.Finish()
if api.usageCache.disable {
resp := make(map[string]NodeUsage)
return resp, nil
}
if api.usageCache.lastCalcDuration < usageCacheMinDuration {
err := api.ResetUsageCache()
if err != nil {
@ -1070,6 +1076,15 @@ func (api *API) calculateUsage() {
// time that is spent recalculating this cache. It is specified relatively, rather than by a set interval, because
// scans can take an unpredictably long time.
func (api *API) RefreshUsageCache(dutyCycle float64) {
if dutyCycle == 0 {
api.server.logger.Warnf("usage-duty-cycle set to 0, usage cache and /ui/usage endpoint are disabled")
api.usageCache = &usageCache{
disable: true,
}
return
}
trigger := make(chan bool)
defer close(trigger)

View file

@ -113,7 +113,7 @@ func BuildServerFlags(cmd *cobra.Command, srv *server.Command) {
flags.Uint16Var(&srv.Config.Postgres.ConnectionLimit, "postgres.connection-limit", srv.Config.Postgres.ConnectionLimit, "Maximum number of simultaneous postgres connections to allow. (set 0 to disable)")
// Disk and Memory usage cache for ui/usage endpoint
flags.Float64Var(&srv.Config.UsageDutyCycle, "usage-duty-cycle", srv.Config.UsageDutyCycle, "Sets the percentage of time that is spent recalculating the disk and memory usage cache. 100.0 for always-running, must be > 0.")
flags.Float64Var(&srv.Config.UsageDutyCycle, "usage-duty-cycle", srv.Config.UsageDutyCycle, "Sets the percentage of time that is spent recalculating the disk and memory usage cache. 100.0 for always-running, 0 disables the cache and the /ui/usage endpoint.")
// Future flags.
flags.BoolVar(&srv.Config.Future.Rename, "future.rename", false, "Present application name as FeatureBase. Defaults to false, will default to true in an upcoming release.")

View file

@ -277,9 +277,7 @@ func (m *Command) Start() (err error) {
}
}
if m.Config.UsageDutyCycle > 0 {
go m.API.RefreshUsageCache(m.Config.UsageDutyCycle)
}
go m.API.RefreshUsageCache(m.Config.UsageDutyCycle)
_ = testhook.Opened(pilosa.NewAuditor(), m, nil)
close(m.Started)