Skip to content

Commit 78e3a99

Browse files
committed
Fix bugs + add tests
Signed-off-by: Justin Jung <jungjust@amazon.com>
1 parent 0e85ae0 commit 78e3a99

File tree

6 files changed

+45
-4
lines changed

6 files changed

+45
-4
lines changed

pkg/cortex/modules.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -781,16 +781,20 @@ func (t *Cortex) initResourceMonitor() (services.Service, error) {
781781
containerLimits[resource.Type(res)] = float64(runtime.GOMAXPROCS(0))
782782
case resource.Heap:
783783
containerLimits[resource.Type(res)] = float64(debug.SetMemoryLimit(-1))
784+
default:
785+
level.Warn(util_log.Logger).Log("msg", fmt.Sprintf("skipping unsupported resource [%s]", res))
784786
}
785787
}
786788

787789
var err error
788790
t.ResourceMonitor, err = resource.NewMonitor(containerLimits, prometheus.DefaultRegisterer)
789-
if t.ResourceMonitor != nil {
790-
util_log.WarnExperimentalUse("resource monitor")
791+
if err != nil {
792+
level.Warn(util_log.Logger).Log("msg", "skipping resource monitor; failed to initialize.", "err", err)
793+
return nil, nil
791794
}
792795

793-
return t.ResourceMonitor, err
796+
util_log.WarnExperimentalUse("resource monitor")
797+
return t.ResourceMonitor, nil
794798
}
795799

796800
func (t *Cortex) setupModuleManager() error {

pkg/cortex/modules_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,16 @@ func Test_setupModuleManager(t *testing.T) {
232232
}
233233
}
234234
}
235+
236+
func Test_initResourceMonitor_shouldNotFailOnInvalidResource(t *testing.T) {
237+
cortex := &Cortex{
238+
Server: &server.Server{},
239+
Cfg: Config{
240+
MonitoredResources: []string{"invalid"},
241+
},
242+
}
243+
244+
// log warning message and spin up other cortex services
245+
_, err := cortex.initResourceMonitor()
246+
require.NoError(t, err)
247+
}

pkg/util/resource/monitor.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func NewMonitor(limits map[Type]float64, registerer prometheus.Registerer) (*Mon
5050
m := &Monitor{
5151
containerLimit: limits,
5252
scanners: make(map[Type]scanner),
53+
utilization: make(map[Type]float64),
5354

5455
cpuRates: [dataPointsToAvg]float64{},
5556
cpuIntervals: [dataPointsToAvg]float64{},

pkg/util/resource/monitor_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package resource
2+
3+
import (
4+
"testing"
5+
6+
"github.com/prometheus/client_golang/prometheus"
7+
"github.com/stretchr/testify/require"
8+
)
9+
10+
func Test_Monitor(t *testing.T) {
11+
m, err := NewMonitor(map[Type]float64{}, prometheus.DefaultRegisterer)
12+
13+
m.scanners[CPU] = &noopScanner{}
14+
m.containerLimit[CPU] = 1
15+
m.utilization[CPU] = 0.5
16+
17+
require.NoError(t, err)
18+
}

pkg/util/resource/scanner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
)
77

88
const (
9-
heapMetricName = "/memory/classes/Heap/objects:bytes"
9+
heapMetricName = "/memory/classes/heap/objects:bytes"
1010
)
1111

1212
type scanner interface {

pkg/util/resource/scanner_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,8 @@ func Test_NoopScanner(t *testing.T) {
1212
require.NoError(t, err)
1313
require.Zero(t, val)
1414
}
15+
16+
func Test_HeapScanner(t *testing.T) {
17+
_, err := newHeapScanner()
18+
require.NoError(t, err)
19+
}

0 commit comments

Comments
 (0)