mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 03:22:24 +08:00

* Add dashboard cleanup job Change log message Adjust logic to account for new head RV logic Don't update lastResourceVersion due to pagination Save improvements * Address review feedback * Update docs. * Remove docs * Rename config --------- Co-authored-by: Marco de Abreu <18629099+marcoabreu@users.noreply.github.com>
54 lines
1.8 KiB
Go
54 lines
1.8 KiB
Go
package setting
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type K8sDashboardCleanupSettings struct {
|
|
Interval time.Duration
|
|
Timeout time.Duration
|
|
BatchSize int64
|
|
}
|
|
|
|
const (
|
|
defaultK8sDashboardCleanupInterval = 30 * time.Second
|
|
defaultK8sDashboardCleanupBatchSize = int64(10)
|
|
minK8sDashboardCleanupInterval = 10 * time.Second
|
|
minK8sDashboardCleanupTimeout = 5 * time.Second
|
|
minK8sDashboardCleanupBatchSize = int64(5)
|
|
maxK8sDashboardCleanupBatchSize = int64(200)
|
|
)
|
|
|
|
func (cfg *Cfg) readK8sDashboardCleanupSettings() {
|
|
section := cfg.Raw.Section("dashboard_cleanup")
|
|
|
|
// Read interval setting with validation
|
|
cleanupInterval := section.Key("interval").MustDuration(defaultK8sDashboardCleanupInterval)
|
|
if cleanupInterval < minK8sDashboardCleanupInterval {
|
|
cfg.Logger.Warn("[dashboard_cleanup.interval] is too low; the minimum allowed (10s) is enforced")
|
|
cleanupInterval = minK8sDashboardCleanupInterval
|
|
}
|
|
|
|
// Calculate timeout as 5 seconds less than interval, with minimum validation
|
|
cleanupTimeout := cleanupInterval - (5 * time.Second)
|
|
if cleanupTimeout < minK8sDashboardCleanupTimeout {
|
|
cleanupTimeout = minK8sDashboardCleanupTimeout
|
|
}
|
|
|
|
// Read batch size with validation
|
|
batchSize := section.Key("batch_size").MustInt64(defaultK8sDashboardCleanupBatchSize)
|
|
if batchSize < minK8sDashboardCleanupBatchSize {
|
|
cfg.Logger.Warn("[dashboard_cleanup.batch_size] is too low; the minimum allowed (5) is enforced")
|
|
batchSize = minK8sDashboardCleanupBatchSize
|
|
} else if batchSize > maxK8sDashboardCleanupBatchSize {
|
|
cfg.Logger.Warn("[dashboard_cleanup.batch_size] is too high; the maximum allowed (1000) is enforced")
|
|
batchSize = maxK8sDashboardCleanupBatchSize
|
|
}
|
|
|
|
cfg.K8sDashboardCleanup = K8sDashboardCleanupSettings{
|
|
Interval: cleanupInterval,
|
|
Timeout: cleanupTimeout,
|
|
BatchSize: batchSize,
|
|
}
|
|
}
|