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

Commitf44c4af

Browse files
authored
Merge branch 'main' into cj/cli-testprovisionerjobs-speedup
2 parentseaf5f0e +86f9bed commitf44c4af

File tree

4 files changed

+23
-14
lines changed

4 files changed

+23
-14
lines changed

‎enterprise/coderd/dormancy/dormantusersjob.go‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,13 @@ func CheckInactiveUsersWithOptions(ctx context.Context, logger slog.Logger, clk
3737
ctx,cancelFunc:=context.WithCancel(ctx)
3838
tf:=clk.TickerFunc(ctx,checkInterval,func()error {
3939
startTime:=time.Now()
40-
lastSeenAfter:=dbtime.Now().Add(-dormancyPeriod)
40+
now:=dbtime.Time(clk.Now()).UTC()
41+
lastSeenAfter:=now.Add(-dormancyPeriod)
4142
logger.Debug(ctx,"check inactive user accounts",slog.F("dormancy_period",dormancyPeriod),slog.F("last_seen_after",lastSeenAfter))
4243

4344
updatedUsers,err:=db.UpdateInactiveUsersToDormant(ctx, database.UpdateInactiveUsersToDormantParams{
4445
LastSeenAfter:lastSeenAfter,
45-
UpdatedAt:dbtime.Now(),
46+
UpdatedAt:now,
4647
})
4748
iferr!=nil&&!xerrors.Is(err,sql.ErrNoRows) {
4849
logger.Error(ctx,"can't mark inactive users as dormant",slog.Error(err))

‎enterprise/coderd/dormancy/dormantusersjob_test.go‎

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,28 @@ func TestCheckInactiveUsers(t *testing.T) {
3131
ctx,cancelFunc:=context.WithCancel(context.Background())
3232
t.Cleanup(cancelFunc)
3333

34-
inactiveUser1:=setupUser(ctx,t,db,"dormant-user-1@coder.com",database.UserStatusActive,time.Now().Add(-dormancyPeriod).Add(-time.Minute))
35-
inactiveUser2:=setupUser(ctx,t,db,"dormant-user-2@coder.com",database.UserStatusActive,time.Now().Add(-dormancyPeriod).Add(-time.Hour))
36-
inactiveUser3:=setupUser(ctx,t,db,"dormant-user-3@coder.com",database.UserStatusActive,time.Now().Add(-dormancyPeriod).Add(-6*time.Hour))
34+
// Use a fixed base time to avoid timing races
35+
baseTime:=time.Date(2023,1,1,0,0,0,0,time.UTC)
36+
dormancyThreshold:=baseTime.Add(-dormancyPeriod)
3737

38-
activeUser1:=setupUser(ctx,t,db,"active-user-1@coder.com",database.UserStatusActive,time.Now().Add(-dormancyPeriod).Add(time.Minute))
39-
activeUser2:=setupUser(ctx,t,db,"active-user-2@coder.com",database.UserStatusActive,time.Now().Add(-dormancyPeriod).Add(time.Hour))
40-
activeUser3:=setupUser(ctx,t,db,"active-user-3@coder.com",database.UserStatusActive,time.Now().Add(-dormancyPeriod).Add(6*time.Hour))
38+
// Create inactive users (last seen BEFORE dormancy threshold)
39+
inactiveUser1:=setupUser(ctx,t,db,"dormant-user-1@coder.com",database.UserStatusActive,dormancyThreshold.Add(-time.Minute))
40+
inactiveUser2:=setupUser(ctx,t,db,"dormant-user-2@coder.com",database.UserStatusActive,dormancyThreshold.Add(-time.Hour))
41+
inactiveUser3:=setupUser(ctx,t,db,"dormant-user-3@coder.com",database.UserStatusActive,dormancyThreshold.Add(-6*time.Hour))
4142

42-
suspendedUser1:=setupUser(ctx,t,db,"suspended-user-1@coder.com",database.UserStatusSuspended,time.Now().Add(-dormancyPeriod).Add(-time.Minute))
43-
suspendedUser2:=setupUser(ctx,t,db,"suspended-user-2@coder.com",database.UserStatusSuspended,time.Now().Add(-dormancyPeriod).Add(-time.Hour))
44-
suspendedUser3:=setupUser(ctx,t,db,"suspended-user-3@coder.com",database.UserStatusSuspended,time.Now().Add(-dormancyPeriod).Add(-6*time.Hour))
43+
// Create active users (last seen AFTER dormancy threshold)
44+
activeUser1:=setupUser(ctx,t,db,"active-user-1@coder.com",database.UserStatusActive,baseTime.Add(-time.Minute))
45+
activeUser2:=setupUser(ctx,t,db,"active-user-2@coder.com",database.UserStatusActive,baseTime.Add(-time.Hour))
46+
activeUser3:=setupUser(ctx,t,db,"active-user-3@coder.com",database.UserStatusActive,baseTime.Add(-6*time.Hour))
47+
48+
suspendedUser1:=setupUser(ctx,t,db,"suspended-user-1@coder.com",database.UserStatusSuspended,dormancyThreshold.Add(-time.Minute))
49+
suspendedUser2:=setupUser(ctx,t,db,"suspended-user-2@coder.com",database.UserStatusSuspended,dormancyThreshold.Add(-time.Hour))
50+
suspendedUser3:=setupUser(ctx,t,db,"suspended-user-3@coder.com",database.UserStatusSuspended,dormancyThreshold.Add(-6*time.Hour))
4551

4652
mAudit:=audit.NewMock()
4753
mClock:=quartz.NewMock(t)
54+
// Set the mock clock to the base time to ensure consistent behavior
55+
mClock.Set(baseTime)
4856
// Run the periodic job
4957
closeFunc:=dormancy.CheckInactiveUsersWithOptions(ctx,logger,mClock,db,mAudit,interval,dormancyPeriod)
5058
t.Cleanup(closeFunc)

‎go.mod‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ require (
309309
github.com/go-playground/universal-translatorv0.18.1// indirect
310310
github.com/go-sourcemap/sourcemapv2.1.3+incompatible// indirect
311311
github.com/go-test/deepv1.1.0// indirect
312-
github.com/go-viper/mapstructure/v2v2.3.0// indirect
312+
github.com/go-viper/mapstructure/v2v2.4.0// indirect
313313
github.com/gobwas/globv0.2.3// indirect
314314
github.com/gobwas/httpheadv0.1.0// indirect
315315
github.com/gobwas/poolv0.2.1// indirect

‎go.sum‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,8 +1154,8 @@ github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpv
11541154
github.com/go-sql-driver/mysqlv1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
11551155
github.com/go-test/deepv1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
11561156
github.com/go-test/deepv1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
1157-
github.com/go-viper/mapstructure/v2v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk=
1158-
github.com/go-viper/mapstructure/v2v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
1157+
github.com/go-viper/mapstructure/v2v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
1158+
github.com/go-viper/mapstructure/v2v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
11591159
github.com/gobuffalo/flectv1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4=
11601160
github.com/gobuffalo/flectv1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs=
11611161
github.com/gobwas/globv0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp