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

Commit8293890

Browse files
committed
Merge branch 'jjs/prebuilds-metrics' of github.com:/coder/coder into dk/prebuilds
2 parents4afd88e +41d1b66 commit8293890

File tree

40 files changed

+907
-390
lines changed

40 files changed

+907
-390
lines changed

‎agent/agent.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,7 +1042,9 @@ func (a *agent) run() (retErr error) {
10421042
})
10431043

10441044
err=connMan.wait()
1045-
a.logger.Error(context.Background(),"connection manager errored",slog.Error(err))
1045+
iferr!=nil {
1046+
a.logger.Warn(context.Background(),"connection manager errored",slog.Error(err))
1047+
}
10461048
returnerr
10471049
}
10481050

@@ -1959,7 +1961,7 @@ func (a *apiConnRoutineManager) startAgentAPI(
19591961
a.eg.Go(func()error {
19601962
logger.Debug(ctx,"starting agent routine")
19611963
err:=f(ctx,a.aAPI)
1962-
ifxerrors.Is(err,context.Canceled)&&ctx.Err()!=nil {
1964+
iferrors.Is(err,context.Canceled)&&ctx.Err()!=nil {
19631965
logger.Debug(ctx,"swallowing context canceled")
19641966
// Don't propagate context canceled errors to the error group, because we don't want the
19651967
// graceful context being canceled to halt the work of routines with
@@ -1996,7 +1998,7 @@ func (a *apiConnRoutineManager) startTailnetAPI(
19961998
a.eg.Go(func()error {
19971999
logger.Debug(ctx,"starting tailnet routine")
19982000
err:=f(ctx,a.tAPI)
1999-
ifxerrors.Is(err,context.Canceled)&&ctx.Err()!=nil {
2001+
iferrors.Is(err,context.Canceled)&&ctx.Err()!=nil {
20002002
logger.Debug(ctx,"swallowing context canceled")
20012003
// Don't propagate context canceled errors to the error group, because we don't want the
20022004
// graceful context being canceled to halt the work of routines with

‎cli/agent.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -380,10 +380,10 @@ func (r *RootCmd) workspaceAgent() *serpent.Command {
380380
SSHMaxTimeout:sshMaxTimeout,
381381
Subsystems:subsystems,
382382

383-
PrometheusRegistry:prometheusRegistry,
384-
BlockFileTransfer:blockFileTransfer,
385-
Execer:execer,
386-
ContainerLister:containerLister,
383+
PrometheusRegistry:prometheusRegistry,
384+
BlockFileTransfer:blockFileTransfer,
385+
Execer:execer,
386+
ContainerLister:containerLister,
387387
ExperimentalDevcontainersEnabled:experimentalDevcontainersEnabled,
388388
})
389389

‎cli/testdata/coder_server_--help.golden

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,12 @@ workspaces stopping during the day due to template scheduling.
658658
must be *. Only one hour and minute can be specified (ranges or comma
659659
separated values are not supported).
660660

661+
WORKSPACE PREBUILDS OPTIONS:
662+
Configure how workspace prebuilds behave.
663+
664+
--workspace-prebuilds-reconciliation-interval duration, $CODER_WORKSPACE_PREBUILDS_RECONCILIATION_INTERVAL (default: 15s)
665+
How often to reconcile workspace prebuilds state.
666+
661667
⚠️ DANGEROUS OPTIONS:
662668
--dangerous-allow-path-app-sharing bool, $CODER_DANGEROUS_ALLOW_PATH_APP_SHARING
663669
Allow workspace apps that are not served from subdomains to be shared.

‎cli/testdata/server-config.yaml.golden

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,3 +677,15 @@ notifications:
677677
# How often to query the database for queued notifications.
678678
# (default: 15s, type: duration)
679679
fetchInterval: 15s
680+
# Configure how workspace prebuilds behave.
681+
workspace_prebuilds:
682+
# How often to reconcile workspace prebuilds state.
683+
# (default: 15s, type: duration)
684+
reconciliation_interval: 15s
685+
# Interval to increase reconciliation backoff by when unrecoverable errors occur.
686+
# (default: 15s, type: duration)
687+
reconciliation_backoff_interval: 15s
688+
# Interval to look back to determine number of failed builds, which influences
689+
# backoff.
690+
# (default: 1h0m0s, type: duration)
691+
reconciliation_backoff_lookback_period: 1h0m0s

‎coderd/apidoc/docs.go

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/apidoc/swagger.json

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -979,8 +979,8 @@ func (s *MethodTestSuite) TestOrganization() {
979979
})
980980

981981
check.Args(database.OrganizationMembersParams{
982-
OrganizationID:uuid.UUID{},
983-
UserID:uuid.UUID{},
982+
OrganizationID:o.ID,
983+
UserID:u.ID,
984984
}).Asserts(
985985
mem,policy.ActionRead,
986986
)
@@ -4642,6 +4642,72 @@ func (s *MethodTestSuite) TestNotifications() {
46424642
}))
46434643
}
46444644

4645+
func (s*MethodTestSuite)TestPrebuilds() {
4646+
s.Run("ClaimPrebuild",s.Subtest(func(db database.Store,check*expects) {
4647+
check.Args(database.ClaimPrebuildParams{}).
4648+
Asserts(rbac.ResourceWorkspace,policy.ActionUpdate).
4649+
ErrorsWithInMemDB(dbmem.ErrUnimplemented).
4650+
ErrorsWithPG(sql.ErrNoRows)
4651+
4652+
}))
4653+
s.Run("GetPrebuildMetrics",s.Subtest(func(_ database.Store,check*expects) {
4654+
check.Args().
4655+
Asserts(rbac.ResourceTemplate,policy.ActionRead).
4656+
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4657+
4658+
}))
4659+
s.Run("GetPrebuildsInProgress",s.Subtest(func(_ database.Store,check*expects) {
4660+
check.Args().
4661+
Asserts(rbac.ResourceTemplate,policy.ActionRead).
4662+
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4663+
4664+
}))
4665+
s.Run("GetPresetsBackoff",s.Subtest(func(_ database.Store,check*expects) {
4666+
check.Args(time.Time{}).
4667+
Asserts(rbac.ResourceTemplate,policy.ActionRead).
4668+
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4669+
4670+
}))
4671+
s.Run("GetRunningPrebuilds",s.Subtest(func(_ database.Store,check*expects) {
4672+
check.Args().
4673+
Asserts(rbac.ResourceTemplate,policy.ActionRead).
4674+
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4675+
4676+
}))
4677+
s.Run("GetTemplatePresetsWithPrebuilds",s.Subtest(func(db database.Store,check*expects) {
4678+
user:=dbgen.User(s.T(),db, database.User{})
4679+
check.Args(uuid.NullUUID{UUID:user.ID,Valid:true}).
4680+
Asserts(rbac.ResourceTemplate,policy.ActionRead).
4681+
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4682+
4683+
}))
4684+
s.Run("InsertPresetPrebuild",s.Subtest(func(db database.Store,check*expects) {
4685+
org:=dbgen.Organization(s.T(),db, database.Organization{})
4686+
user:=dbgen.User(s.T(),db, database.User{})
4687+
template:=dbgen.Template(s.T(),db, database.Template{
4688+
CreatedBy:user.ID,
4689+
OrganizationID:org.ID,
4690+
})
4691+
templateVersion:=dbgen.TemplateVersion(s.T(),db, database.TemplateVersion{
4692+
TemplateID: uuid.NullUUID{UUID:template.ID,Valid:true},
4693+
OrganizationID:org.ID,
4694+
CreatedBy:user.ID,
4695+
})
4696+
preset:=dbgen.Preset(s.T(),db, database.InsertPresetParams{
4697+
Name:coderdtest.RandomName(s.T()),
4698+
TemplateVersionID:templateVersion.ID,
4699+
})
4700+
check.Args(database.InsertPresetPrebuildParams{
4701+
ID:uuid.New(),
4702+
PresetID:preset.ID,
4703+
DesiredInstances:1,
4704+
}).
4705+
Asserts(rbac.ResourceSystem,policy.ActionCreate).
4706+
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4707+
4708+
}))
4709+
}
4710+
46454711
func (s*MethodTestSuite)TestOAuth2ProviderApps() {
46464712
s.Run("GetOAuth2ProviderApps",s.Subtest(func(db database.Store,check*expects) {
46474713
apps:= []database.OAuth2ProviderApp{

‎coderd/database/dbgen/dbgen.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,6 +1158,37 @@ func TelemetryItem(t testing.TB, db database.Store, seed database.TelemetryItem)
11581158
returnitem
11591159
}
11601160

1161+
funcPreset(t testing.TB,db database.Store,seed database.InsertPresetParams) database.TemplateVersionPreset {
1162+
preset,err:=db.InsertPreset(genCtx, database.InsertPresetParams{
1163+
TemplateVersionID:takeFirst(seed.TemplateVersionID,uuid.New()),
1164+
Name:takeFirst(seed.Name,testutil.GetRandomName(t)),
1165+
CreatedAt:takeFirst(seed.CreatedAt,dbtime.Now()),
1166+
})
1167+
require.NoError(t,err,"insert preset")
1168+
returnpreset
1169+
}
1170+
1171+
funcPresetParameter(t testing.TB,db database.Store,seed database.InsertPresetParametersParams) []database.TemplateVersionPresetParameter {
1172+
parameters,err:=db.InsertPresetParameters(genCtx, database.InsertPresetParametersParams{
1173+
TemplateVersionPresetID:takeFirst(seed.TemplateVersionPresetID,uuid.New()),
1174+
Names:takeFirstSlice(seed.Names, []string{testutil.GetRandomName(t)}),
1175+
Values:takeFirstSlice(seed.Values, []string{testutil.GetRandomName(t)}),
1176+
})
1177+
1178+
require.NoError(t,err,"insert preset parameters")
1179+
returnparameters
1180+
}
1181+
1182+
funcPresetPrebuild(t testing.TB,db database.Store,seed database.InsertPresetPrebuildParams) database.TemplateVersionPresetPrebuild {
1183+
prebuild,err:=db.InsertPresetPrebuild(genCtx, database.InsertPresetPrebuildParams{
1184+
ID:takeFirst(seed.ID,uuid.New()),
1185+
PresetID:takeFirst(seed.PresetID,uuid.New()),
1186+
DesiredInstances:takeFirst(seed.DesiredInstances,1),
1187+
})
1188+
require.NoError(t,err,"insert preset prebuild")
1189+
returnprebuild
1190+
}
1191+
11611192
funcprovisionerJobTiming(t testing.TB,db database.Store,seed database.ProvisionerJobTiming) database.ProvisionerJobTiming {
11621193
timing,err:=db.InsertProvisionerJobTimings(genCtx, database.InsertProvisionerJobTimingsParams{
11631194
JobID:takeFirst(seed.JobID,uuid.New()),

‎coderd/database/dbmem/dbmem.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1709,8 +1709,8 @@ func (*FakeQuerier) BulkMarkNotificationMessagesSent(_ context.Context, arg data
17091709
returnint64(len(arg.IDs)),nil
17101710
}
17111711

1712-
func (q*FakeQuerier)ClaimPrebuild(ctx context.Context,newOwnerID database.ClaimPrebuildParams) (database.ClaimPrebuildRow,error) {
1713-
panic("not implemented")
1712+
func (*FakeQuerier)ClaimPrebuild(_ context.Context,_ database.ClaimPrebuildParams) (database.ClaimPrebuildRow,error) {
1713+
return database.ClaimPrebuildRow{},ErrUnimplemented
17141714
}
17151715

17161716
func (*FakeQuerier)CleanTailnetCoordinators(_ context.Context)error {
@@ -4017,12 +4017,12 @@ func (q *FakeQuerier) GetParameterSchemasByJobID(_ context.Context, jobID uuid.U
40174017
returnparameters,nil
40184018
}
40194019

4020-
func (q*FakeQuerier)GetPrebuildMetrics(ctx context.Context) ([]database.GetPrebuildMetricsRow,error) {
4021-
panic("not implemented")
4020+
func (*FakeQuerier)GetPrebuildMetrics(_ context.Context) ([]database.GetPrebuildMetricsRow,error) {
4021+
returnnil,ErrUnimplemented
40224022
}
40234023

4024-
func (q*FakeQuerier)GetPrebuildsInProgress(ctx context.Context) ([]database.GetPrebuildsInProgressRow,error) {
4025-
panic("not implemented")
4024+
func (*FakeQuerier)GetPrebuildsInProgress(_ context.Context) ([]database.GetPrebuildsInProgressRow,error) {
4025+
returnnil,ErrUnimplemented
40264026
}
40274027

40284028
func (q*FakeQuerier)GetPresetByWorkspaceBuildID(_ context.Context,workspaceBuildID uuid.UUID) (database.TemplateVersionPreset,error) {
@@ -4067,8 +4067,8 @@ func (q *FakeQuerier) GetPresetParametersByTemplateVersionID(_ context.Context,
40674067
returnparameters,nil
40684068
}
40694069

4070-
func (q*FakeQuerier)GetPresetsBackoff(ctx context.Context,period time.Time) ([]database.GetPresetsBackoffRow,error) {
4071-
panic("not implemented")
4070+
func (*FakeQuerier)GetPresetsBackoff(_ context.Context,_ time.Time) ([]database.GetPresetsBackoffRow,error) {
4071+
returnnil,ErrUnimplemented
40724072
}
40734073

40744074
func (q*FakeQuerier)GetPresetsByTemplateVersionID(_ context.Context,templateVersionID uuid.UUID) ([]database.TemplateVersionPreset,error) {
@@ -4734,8 +4734,8 @@ func (q *FakeQuerier) GetReplicasUpdatedAfter(_ context.Context, updatedAt time.
47344734
returnreplicas,nil
47354735
}
47364736

4737-
func (q*FakeQuerier)GetRunningPrebuilds(ctx context.Context) ([]database.GetRunningPrebuildsRow,error) {
4738-
panic("not implemented")
4737+
func (*FakeQuerier)GetRunningPrebuilds(_ context.Context) ([]database.GetRunningPrebuildsRow,error) {
4738+
returnnil,ErrUnimplemented
47394739
}
47404740

47414741
func (q*FakeQuerier)GetRuntimeConfig(_ context.Context,keystring) (string,error) {
@@ -5777,8 +5777,8 @@ func (q *FakeQuerier) GetTemplateParameterInsights(ctx context.Context, arg data
57775777
returnrows,nil
57785778
}
57795779

5780-
func (q*FakeQuerier)GetTemplatePresetsWithPrebuilds(ctx context.Context,templateID uuid.NullUUID) ([]database.GetTemplatePresetsWithPrebuildsRow,error) {
5781-
panic("not implemented")
5780+
func (*FakeQuerier)GetTemplatePresetsWithPrebuilds(_ context.Context,_ uuid.NullUUID) ([]database.GetTemplatePresetsWithPrebuildsRow,error) {
5781+
returnnil,ErrUnimplemented
57825782
}
57835783

57845784
func (q*FakeQuerier)GetTemplateUsageStats(_ context.Context,arg database.GetTemplateUsageStatsParams) ([]database.TemplateUsageStat,error) {
@@ -8551,13 +8551,13 @@ func (q *FakeQuerier) InsertPresetParameters(_ context.Context, arg database.Ins
85518551
returnpresetParameters,nil
85528552
}
85538553

8554-
func (q*FakeQuerier)InsertPresetPrebuild(ctx context.Context,arg database.InsertPresetPrebuildParams) (database.TemplateVersionPresetPrebuild,error) {
8554+
func (*FakeQuerier)InsertPresetPrebuild(_ context.Context,arg database.InsertPresetPrebuildParams) (database.TemplateVersionPresetPrebuild,error) {
85558555
err:=validateDatabaseType(arg)
85568556
iferr!=nil {
85578557
return database.TemplateVersionPresetPrebuild{},err
85588558
}
85598559

8560-
panic("not implemented")
8560+
return database.TemplateVersionPresetPrebuild{},ErrUnimplemented
85618561
}
85628562

85638563
func (q*FakeQuerier)InsertProvisionerJob(_ context.Context,arg database.InsertProvisionerJobParams) (database.ProvisionerJob,error) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp