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

Commit228cbec

Browse files
f0sselEmyrk
andauthored
fix: stop updating agent stats from deleted workspaces (#11026)
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
1 parent1e349f0 commit228cbec

File tree

6 files changed

+74
-6
lines changed

6 files changed

+74
-6
lines changed

‎coderd/coderdtest/coderdtest.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,11 +619,15 @@ func CreateAnotherUserMutators(t testing.TB, client *codersdk.Client, organizati
619619
}
620620

621621
// AuthzUserSubject does not include the user's groups.
622-
funcAuthzUserSubject(user codersdk.User) rbac.Subject {
622+
funcAuthzUserSubject(user codersdk.User,orgID uuid.UUID) rbac.Subject {
623623
roles:=make(rbac.RoleNames,0,len(user.Roles))
624+
// Member role is always implied
625+
roles=append(roles,rbac.RoleMember())
624626
for_,r:=rangeuser.Roles {
625627
roles=append(roles,r.Name)
626628
}
629+
// We assume only 1 org exists
630+
roles=append(roles,rbac.RoleOrgMember(orgID))
627631

628632
return rbac.Subject{
629633
ID:user.ID.String(),

‎coderd/database/dbmem/dbmem.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3762,6 +3762,9 @@ func (q *FakeQuerier) GetWorkspaceAgentAndOwnerByAuthToken(_ context.Context, au
37623762
ifbuild.WorkspaceID!=ws.ID {
37633763
continue
37643764
}
3765+
ifws.Deleted {
3766+
continue
3767+
}
37653768
varrow database.GetWorkspaceAgentAndOwnerByAuthTokenRow
37663769
row.WorkspaceID=ws.ID
37673770
usr,err:=q.getUserByIDNoLock(ws.OwnerID)

‎coderd/database/queries.sql.go

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

‎coderd/database/queries/workspaceagents.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,10 @@ FROM users
252252
WHERE
253253
-- TODO: we can add more conditions here, such as:
254254
-- 1) The user must be active
255-
-- 2) The user must not be deleted
256-
-- 3) The workspace must be running
255+
-- 2) The workspace must be running
257256
workspace_agents.auth_token= @auth_token
257+
AND
258+
workspaces.deleted= FALSE
258259
GROUP BY
259260
workspace_agents.id,
260261
workspaces.id,

‎coderd/templates_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ func TestPatchTemplateMeta(t *testing.T) {
560560
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
561561
defercancel()
562562
// nolint:gocritic // Setting up unit test data
563-
err:=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin)), database.UpdateTemplateAccessControlByIDParams{
563+
err:=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin,user.OrganizationID)), database.UpdateTemplateAccessControlByIDParams{
564564
ID:template.ID,
565565
RequireActiveVersion:false,
566566
Deprecated:"Some deprecated message",

‎coderd/workspaceagents_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@ import (
2626
"github.com/coder/coder/v2/coderd"
2727
"github.com/coder/coder/v2/coderd/coderdtest"
2828
"github.com/coder/coder/v2/coderd/database"
29+
"github.com/coder/coder/v2/coderd/database/dbauthz"
2930
"github.com/coder/coder/v2/coderd/database/dbfake"
3031
"github.com/coder/coder/v2/coderd/database/dbmem"
3132
"github.com/coder/coder/v2/coderd/database/dbtime"
3233
"github.com/coder/coder/v2/coderd/database/pubsub"
34+
"github.com/coder/coder/v2/coderd/rbac"
3335
"github.com/coder/coder/v2/codersdk"
3436
"github.com/coder/coder/v2/codersdk/agentsdk"
3537
"github.com/coder/coder/v2/provisioner/echo"
@@ -876,6 +878,63 @@ func TestWorkspaceAgentReportStats(t *testing.T) {
876878
"%s is not after %s",newWorkspace.LastUsedAt,r.Workspace.LastUsedAt,
877879
)
878880
})
881+
882+
t.Run("FailDeleted",func(t*testing.T) {
883+
t.Parallel()
884+
885+
owner,db:=coderdtest.NewWithDatabase(t,nil)
886+
ownerUser:=coderdtest.CreateFirstUser(t,owner)
887+
client,admin:=coderdtest.CreateAnotherUser(t,owner,ownerUser.OrganizationID,rbac.RoleTemplateAdmin(),rbac.RoleUserAdmin())
888+
r:=dbfake.WorkspaceBuild(t,db, database.Workspace{
889+
OrganizationID:admin.OrganizationIDs[0],
890+
OwnerID:admin.ID,
891+
}).WithAgent().Do()
892+
893+
agentClient:=agentsdk.New(client.URL)
894+
agentClient.SetSessionToken(r.AgentToken)
895+
896+
_,err:=agentClient.PostStats(context.Background(),&agentsdk.Stats{
897+
ConnectionsByProto:map[string]int64{"TCP":1},
898+
ConnectionCount:1,
899+
RxPackets:1,
900+
RxBytes:1,
901+
TxPackets:1,
902+
TxBytes:1,
903+
SessionCountVSCode:0,
904+
SessionCountJetBrains:0,
905+
SessionCountReconnectingPTY:0,
906+
SessionCountSSH:0,
907+
ConnectionMedianLatencyMS:10,
908+
})
909+
require.NoError(t,err)
910+
911+
newWorkspace,err:=client.Workspace(context.Background(),r.Workspace.ID)
912+
require.NoError(t,err)
913+
914+
// nolint:gocritic // using db directly over creating a delete job
915+
err=db.UpdateWorkspaceDeletedByID(dbauthz.As(context.Background(),
916+
coderdtest.AuthzUserSubject(admin,ownerUser.OrganizationID)),
917+
database.UpdateWorkspaceDeletedByIDParams{
918+
ID:newWorkspace.ID,
919+
Deleted:true,
920+
})
921+
require.NoError(t,err)
922+
923+
_,err=agentClient.PostStats(context.Background(),&agentsdk.Stats{
924+
ConnectionsByProto:map[string]int64{"TCP":1},
925+
ConnectionCount:1,
926+
RxPackets:1,
927+
RxBytes:1,
928+
TxPackets:1,
929+
TxBytes:1,
930+
SessionCountVSCode:1,
931+
SessionCountJetBrains:0,
932+
SessionCountReconnectingPTY:0,
933+
SessionCountSSH:0,
934+
ConnectionMedianLatencyMS:10,
935+
})
936+
require.ErrorContains(t,err,"agent is invalid")
937+
})
879938
}
880939

881940
funcTestWorkspaceAgent_LifecycleState(t*testing.T) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp