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

Commit052eaa3

Browse files
committed
fix: Return deleted users when fetching workspace builds
Fixes#4359.
1 parenteefc26c commit052eaa3

File tree

7 files changed

+52
-26
lines changed

7 files changed

+52
-26
lines changed

‎coderd/database/databasefake/databasefake.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -479,19 +479,16 @@ func (q *fakeQuerier) GetUsers(_ context.Context, params database.GetUsersParams
479479
returnusers,nil
480480
}
481481

482-
func (q*fakeQuerier)GetUsersByIDs(_ context.Context,params database.GetUsersByIDsParams) ([]database.User,error) {
482+
func (q*fakeQuerier)GetUsersByIDs(_ context.Context,ids []uuid.UUID) ([]database.User,error) {
483483
q.mutex.RLock()
484484
deferq.mutex.RUnlock()
485485

486486
users:=make([]database.User,0)
487487
for_,user:=rangeq.users {
488-
for_,id:=rangeparams.IDs {
488+
for_,id:=rangeids {
489489
ifuser.ID.String()!=id.String() {
490490
continue
491491
}
492-
ifuser.Deleted!=params.Deleted {
493-
continue
494-
}
495492
users=append(users,user)
496493
}
497494
}

‎coderd/database/querier.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries.sql.go

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

‎coderd/database/queries/users.sql

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ LIMIT
99
1;
1010

1111
-- name: GetUsersByIDs :many
12-
SELECT*FROM usersWHERE id= ANY(@ids :: uuid [ ])AND deleted= @deleted;
12+
-- This shouldn't check for deleted, because it's frequently used
13+
-- to look up references to actions. eg. a user could build a workspace
14+
-- for another user, then be deleted... we still want them to appear!
15+
SELECT*FROM usersWHERE id= ANY(@ids :: uuid [ ]);
1316

1417
-- name: GetUserByEmailOrUsername :one
1518
SELECT

‎coderd/workspacebuilds.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -492,11 +492,9 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
492492
return
493493
}
494494

495-
users,err:=api.Database.GetUsersByIDs(ctx, database.GetUsersByIDsParams{
496-
IDs: []uuid.UUID{
497-
workspace.OwnerID,
498-
workspaceBuild.InitiatorID,
499-
},
495+
users,err:=api.Database.GetUsersByIDs(ctx, []uuid.UUID{
496+
workspace.OwnerID,
497+
workspaceBuild.InitiatorID,
500498
})
501499
iferr!=nil {
502500
httpapi.Write(ctx,rw,http.StatusInternalServerError, codersdk.Response{
@@ -679,9 +677,7 @@ func (api *API) workspaceBuildsData(ctx context.Context, workspaces []database.W
679677
for_,workspace:=rangeworkspaces {
680678
userIDs=append(userIDs,workspace.OwnerID)
681679
}
682-
users,err:=api.Database.GetUsersByIDs(ctx, database.GetUsersByIDsParams{
683-
IDs:userIDs,
684-
})
680+
users,err:=api.Database.GetUsersByIDs(ctx,userIDs)
685681
iferr!=nil {
686682
returnworkspaceBuildsData{},xerrors.Errorf("get users: %w",err)
687683
}

‎coderd/workspacebuilds_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,37 @@ func TestWorkspaceBuilds(t *testing.T) {
178178
require.Len(t,builds,1)
179179
})
180180

181+
t.Run("DeletedInitiator",func(t*testing.T) {
182+
t.Parallel()
183+
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
184+
first:=coderdtest.CreateFirstUser(t,client)
185+
second:=coderdtest.CreateAnotherUser(t,client,first.OrganizationID,"owner")
186+
187+
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
188+
defercancel()
189+
190+
secondUser,err:=second.User(ctx,codersdk.Me)
191+
require.NoError(t,err,"fetch me")
192+
version:=coderdtest.CreateTemplateVersion(t,client,first.OrganizationID,nil)
193+
template:=coderdtest.CreateTemplate(t,client,first.OrganizationID,version.ID)
194+
coderdtest.AwaitTemplateVersionJob(t,client,version.ID)
195+
workspace,err:=second.CreateWorkspace(ctx,first.OrganizationID,first.UserID.String(), codersdk.CreateWorkspaceRequest{
196+
TemplateID:template.ID,
197+
Name:"example",
198+
})
199+
require.NoError(t,err)
200+
coderdtest.AwaitWorkspaceBuildJob(t,client,workspace.LatestBuild.ID)
201+
202+
err=client.DeleteUser(ctx,secondUser.ID)
203+
require.NoError(t,err)
204+
205+
builds,err:=client.WorkspaceBuilds(ctx, codersdk.WorkspaceBuildsRequest{WorkspaceID:workspace.ID})
206+
require.Len(t,builds,1)
207+
require.Equal(t,int32(1),builds[0].BuildNumber)
208+
require.Equal(t,secondUser.Username,builds[0].InitiatorUsername)
209+
require.NoError(t,err)
210+
})
211+
181212
t.Run("PaginateNonExistentRow",func(t*testing.T) {
182213
t.Parallel()
183214
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})

‎coderd/workspaces.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -463,9 +463,7 @@ func (api *API) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Req
463463
}
464464
aReq.New=workspace
465465

466-
users,err:=api.Database.GetUsersByIDs(ctx, database.GetUsersByIDsParams{
467-
IDs: []uuid.UUID{user.ID,workspaceBuild.InitiatorID},
468-
})
466+
users,err:=api.Database.GetUsersByIDs(ctx, []uuid.UUID{user.ID,workspaceBuild.InitiatorID})
469467
iferr!=nil {
470468
httpapi.Write(ctx,rw,http.StatusInternalServerError, codersdk.Response{
471469
Message:"Internal error fetching user.",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp