Skip to content

Commit c2682f2

Browse files
committed
Reject empty resource refresh interval
1 parent 4d3545d commit c2682f2

2 files changed

Lines changed: 18 additions & 9 deletions

File tree

cmd/api/config/config.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -464,14 +464,15 @@ func (c *Config) Validate() error {
464464
if c.Metrics.VMLabelBudget <= 0 {
465465
return fmt.Errorf("metrics.vm_label_budget must be positive, got %d", c.Metrics.VMLabelBudget)
466466
}
467-
if c.Metrics.ResourceRefreshInterval != "" {
468-
interval, err := time.ParseDuration(c.Metrics.ResourceRefreshInterval)
469-
if err != nil {
470-
return fmt.Errorf("metrics.resource_refresh_interval must be a valid duration, got %q: %w", c.Metrics.ResourceRefreshInterval, err)
471-
}
472-
if interval <= 0 {
473-
return fmt.Errorf("metrics.resource_refresh_interval must be positive, got %q", c.Metrics.ResourceRefreshInterval)
474-
}
467+
if strings.TrimSpace(c.Metrics.ResourceRefreshInterval) == "" {
468+
return fmt.Errorf("metrics.resource_refresh_interval must not be empty")
469+
}
470+
interval, err := time.ParseDuration(c.Metrics.ResourceRefreshInterval)
471+
if err != nil {
472+
return fmt.Errorf("metrics.resource_refresh_interval must be a valid duration, got %q: %w", c.Metrics.ResourceRefreshInterval, err)
473+
}
474+
if interval <= 0 {
475+
return fmt.Errorf("metrics.resource_refresh_interval must be positive, got %q", c.Metrics.ResourceRefreshInterval)
475476
}
476477
if c.Otel.MetricExportInterval != "" {
477478
if _, err := time.ParseDuration(c.Otel.MetricExportInterval); err != nil {

cmd/api/config/config_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,17 @@ func TestValidateRejectsInvalidVMLabelBudget(t *testing.T) {
9797

9898
func TestValidateRejectsInvalidResourceRefreshInterval(t *testing.T) {
9999
cfg := defaultConfig()
100-
cfg.Metrics.ResourceRefreshInterval = "not-a-duration"
100+
cfg.Metrics.ResourceRefreshInterval = ""
101101

102102
err := cfg.Validate()
103+
if err == nil {
104+
t.Fatalf("expected validation error for empty resource refresh interval")
105+
}
106+
107+
cfg = defaultConfig()
108+
cfg.Metrics.ResourceRefreshInterval = "not-a-duration"
109+
110+
err = cfg.Validate()
103111
if err == nil {
104112
t.Fatalf("expected validation error for invalid resource refresh interval")
105113
}

0 commit comments

Comments
 (0)