From e3458277dff463b1c540ee8641abbd21ff348bc4 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Tue, 12 Apr 2022 15:11:57 -0500 Subject: [PATCH] fix: Multiple builds using the incorrect agent token (#983) This was an issue with our in-memory database that caused newer builds to return an outdated agent, which would then be rejected. A test case has been added to ensure this can't happen again! --- coderd/database/databasefake/databasefake.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/coderd/database/databasefake/databasefake.go b/coderd/database/databasefake/databasefake.go index 6b3191846d..8e582d85c5 100644 --- a/coderd/database/databasefake/databasefake.go +++ b/coderd/database/databasefake/databasefake.go @@ -626,7 +626,9 @@ func (q *fakeQuerier) GetWorkspaceAgentByAuthToken(_ context.Context, authToken q.mutex.RLock() defer q.mutex.RUnlock() - for _, agent := range q.provisionerJobAgent { + // The schema sorts this by created at, so we iterate the array backwards. + for i := len(q.provisionerJobAgent) - 1; i >= 0; i-- { + agent := q.provisionerJobAgent[i] if agent.AuthToken.String() == authToken.String() { return agent, nil }