7
7
"time"
8
8
9
9
"golang.org/x/xerrors"
10
+ "github.com/google/uuid"
10
11
11
12
"cdr.dev/slog"
12
13
"github.com/coder/coder/codersdk"
@@ -31,9 +32,9 @@ func NewWorkspaceAppHealthReporter(logger slog.Logger, apps []codersdk.Workspace
31
32
}
32
33
33
34
hasHealthchecksEnabled := false
34
- health := make (map [string ]codersdk.WorkspaceAppHealth , 0 )
35
+ health := make (map [uuid. UUID ]codersdk.WorkspaceAppHealth , 0 )
35
36
for _ , app := range apps {
36
- health [app .DisplayName ] = app .Health
37
+ health [app .ID ] = app .Health
37
38
if ! hasHealthchecksEnabled && app .Health != codersdk .WorkspaceAppHealthDisabled {
38
39
hasHealthchecksEnabled = true
39
40
}
@@ -46,7 +47,7 @@ func NewWorkspaceAppHealthReporter(logger slog.Logger, apps []codersdk.Workspace
46
47
47
48
// run a ticker for each app health check.
48
49
var mu sync.RWMutex
49
- failures := make (map [string ]int , 0 )
50
+ failures := make (map [uuid. UUID ]int , 0 )
50
51
for _ , nextApp := range apps {
51
52
if ! shouldStartTicker (nextApp ) {
52
53
continue
@@ -85,21 +86,21 @@ func NewWorkspaceAppHealthReporter(logger slog.Logger, apps []codersdk.Workspace
85
86
}()
86
87
if err != nil {
87
88
mu .Lock ()
88
- if failures [app .DisplayName ] < int (app .Healthcheck .Threshold ) {
89
+ if failures [app .ID ] < int (app .Healthcheck .Threshold ) {
89
90
// increment the failure count and keep status the same.
90
91
// we will change it when we hit the threshold.
91
- failures [app .DisplayName ]++
92
+ failures [app .ID ]++
92
93
} else {
93
94
// set to unhealthy if we hit the failure threshold.
94
95
// we stop incrementing at the threshold to prevent the failure value from increasing forever.
95
- health [app .DisplayName ] = codersdk .WorkspaceAppHealthUnhealthy
96
+ health [app .ID ] = codersdk .WorkspaceAppHealthUnhealthy
96
97
}
97
98
mu .Unlock ()
98
99
} else {
99
100
mu .Lock ()
100
101
// we only need one successful health check to be considered healthy.
101
- health [app .DisplayName ] = codersdk .WorkspaceAppHealthHealthy
102
- failures [app .DisplayName ] = 0
102
+ health [app .ID ] = codersdk .WorkspaceAppHealthHealthy
103
+ failures [app .ID ] = 0
103
104
mu .Unlock ()
104
105
}
105
106
@@ -155,7 +156,7 @@ func shouldStartTicker(app codersdk.WorkspaceApp) bool {
155
156
return app .Healthcheck .URL != "" && app .Healthcheck .Interval > 0 && app .Healthcheck .Threshold > 0
156
157
}
157
158
158
- func healthChanged (old map [string ]codersdk.WorkspaceAppHealth , new map [string ]codersdk.WorkspaceAppHealth ) bool {
159
+ func healthChanged (old map [uuid. UUID ]codersdk.WorkspaceAppHealth , new map [uuid. UUID ]codersdk.WorkspaceAppHealth ) bool {
159
160
for name , newValue := range new {
160
161
oldValue , found := old [name ]
161
162
if ! found {
@@ -169,8 +170,8 @@ func healthChanged(old map[string]codersdk.WorkspaceAppHealth, new map[string]co
169
170
return false
170
171
}
171
172
172
- func copyHealth (h1 map [string ]codersdk.WorkspaceAppHealth ) map [string ]codersdk.WorkspaceAppHealth {
173
- h2 := make (map [string ]codersdk.WorkspaceAppHealth , 0 )
173
+ func copyHealth (h1 map [uuid. UUID ]codersdk.WorkspaceAppHealth ) map [uuid. UUID ]codersdk.WorkspaceAppHealth {
174
+ h2 := make (map [uuid. UUID ]codersdk.WorkspaceAppHealth , 0 )
174
175
for k , v := range h1 {
175
176
h2 [k ] = v
176
177
}
0 commit comments