Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit79d4676

Browse files
authored
chore: remove warning for non-trackable workspace builds in metrics (#20775)
Previously, `UpdateWorkspaceTimingsMetrics` would log a warning forworkspace builds that aren't tracked (restarts, stops, subsequent buildsafter creation). This was noisy since these are legitimate operations,not errors.`UpdateWorkspaceTimingsMetrics` is specifically designed to track onlyworkspace creation, prebuild creation, and prebuild claim timings.Related with:#20772
1 parent86c4948 commit79d4676

File tree

2 files changed

+38
-33
lines changed

2 files changed

+38
-33
lines changed

‎coderd/provisionerdserver/metrics.go‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,12 @@ func (m *Metrics) Register(reg prometheus.Registerer) error {
100100
returnreg.Register(m.workspaceClaimTimings)
101101
}
102102

103+
// IsTrackable returns true if the workspace build should be tracked in metrics.
104+
// This includes workspace creation, prebuild creation, and prebuild claims.
105+
func (fWorkspaceTimingFlags)IsTrackable()bool {
106+
returnf.IsPrebuild||f.IsClaim||f.IsFirstBuild
107+
}
108+
103109
// getWorkspaceTimingType classifies a workspace build:
104110
// - PrebuildCreation: creation of a prebuilt workspace
105111
// - PrebuildClaim: claim of an existing prebuilt workspace
@@ -153,9 +159,6 @@ func (m *Metrics) UpdateWorkspaceTimingsMetrics(
153159
m.workspaceClaimTimings.
154160
WithLabelValues(organizationName,templateName,presetName).Observe(buildTime)
155161
default:
156-
m.logger.Warn(ctx,"unsupported workspace timing flags",
157-
"isPrebuild",flags.IsPrebuild,
158-
"isClaim",flags.IsClaim,
159-
"isWorkspaceFirstBuild",flags.IsFirstBuild)
162+
// Not a trackable build type (e.g. restart, stop, subsequent builds)
160163
}
161164
}

‎coderd/provisionerdserver/provisionerdserver.go‎

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2336,40 +2336,42 @@ func (s *server) completeWorkspaceBuildJob(ctx context.Context, job database.Pro
23362336
}
23372337

23382338
// Update workspace (regular and prebuild) timing metrics
2339-
ifs.metrics!=nil {
2340-
// Only consider 'start' workspace builds
2341-
ifworkspaceBuild.Transition==database.WorkspaceTransitionStart {
2342-
// Get the updated job to report the metrics with correct data
2343-
updatedJob,err:=s.Database.GetProvisionerJobByID(ctx,jobID)
2344-
iferr!=nil {
2345-
s.Logger.Error(ctx,"get updated job from database",slog.Error(err))
2346-
}else
2347-
// Only consider 'succeeded' provisioner jobs
2348-
ifupdatedJob.JobStatus==database.ProvisionerJobStatusSucceeded {
2349-
presetName:=""
2350-
ifworkspaceBuild.TemplateVersionPresetID.Valid {
2351-
preset,err:=s.Database.GetPresetByID(ctx,workspaceBuild.TemplateVersionPresetID.UUID)
2352-
iferr!=nil {
2353-
if!errors.Is(err,sql.ErrNoRows) {
2354-
s.Logger.Error(ctx,"get preset by ID for workspace timing metrics",slog.Error(err))
2355-
}
2356-
}else {
2357-
presetName=preset.Name
2339+
// Only consider 'start' workspace builds
2340+
ifs.metrics!=nil&&workspaceBuild.Transition==database.WorkspaceTransitionStart {
2341+
// Get the updated job to report the metrics with correct data
2342+
updatedJob,err:=s.Database.GetProvisionerJobByID(ctx,jobID)
2343+
iferr!=nil {
2344+
s.Logger.Error(ctx,"get updated job from database",slog.Error(err))
2345+
}else
2346+
// Only consider 'succeeded' provisioner jobs
2347+
ifupdatedJob.JobStatus==database.ProvisionerJobStatusSucceeded {
2348+
presetName:=""
2349+
ifworkspaceBuild.TemplateVersionPresetID.Valid {
2350+
preset,err:=s.Database.GetPresetByID(ctx,workspaceBuild.TemplateVersionPresetID.UUID)
2351+
iferr!=nil {
2352+
if!errors.Is(err,sql.ErrNoRows) {
2353+
s.Logger.Error(ctx,"get preset by ID for workspace timing metrics",slog.Error(err))
23582354
}
2355+
}else {
2356+
presetName=preset.Name
23592357
}
2358+
}
23602359

2361-
buildTime:=updatedJob.CompletedAt.Time.Sub(updatedJob.StartedAt.Time).Seconds()
2360+
buildTime:=updatedJob.CompletedAt.Time.Sub(updatedJob.StartedAt.Time).Seconds()
2361+
flags:=WorkspaceTimingFlags{
2362+
// Is a prebuilt workspace creation build
2363+
IsPrebuild:input.PrebuiltWorkspaceBuildStage.IsPrebuild(),
2364+
// Is a prebuilt workspace claim build
2365+
IsClaim:input.PrebuiltWorkspaceBuildStage.IsPrebuiltWorkspaceClaim(),
2366+
// Is a regular workspace creation build
2367+
// Only consider the first build number for regular workspaces
2368+
IsFirstBuild:workspaceBuild.BuildNumber==1,
2369+
}
2370+
// Only track metrics for prebuild creation, prebuild claims and workspace creation
2371+
ifflags.IsTrackable() {
23622372
s.metrics.UpdateWorkspaceTimingsMetrics(
23632373
ctx,
2364-
WorkspaceTimingFlags{
2365-
// Is a prebuilt workspace creation build
2366-
IsPrebuild:input.PrebuiltWorkspaceBuildStage.IsPrebuild(),
2367-
// Is a prebuilt workspace claim build
2368-
IsClaim:input.PrebuiltWorkspaceBuildStage.IsPrebuiltWorkspaceClaim(),
2369-
// Is a regular workspace creation build
2370-
// Only consider the first build number for regular workspaces
2371-
IsFirstBuild:workspaceBuild.BuildNumber==1,
2372-
},
2374+
flags,
23732375
workspace.OrganizationName,
23742376
workspace.TemplateName,
23752377
presetName,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp