mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
fix(coderd/database/dbfake): use transaction for workspace builder (#20506)
While investigating a flake I noticed that the dbfake workspace builder executes all database inserts without a transaction. Since our real wsbuilder implementation utilizes one it makes sense to do here as well. For example, our normal workspace <-> build relationship is such that a workspace cannot exist with at least one build. However, our GetWorkspaces query left joins workspace builds but has types that are non-nullable, leading to flakes like coder/internal#1103.
This commit is contained in:
committed by
GitHub
parent
d8b1ca70d6
commit
c3cbd977f1
@@ -161,6 +161,19 @@ func (b WorkspaceBuildBuilder) Canceled() WorkspaceBuildBuilder {
|
||||
// Workspace will be optionally populated if no ID is set on the provided
|
||||
// workspace.
|
||||
func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
|
||||
var resp WorkspaceResponse
|
||||
// Use transaction, like real wsbuilder.
|
||||
err := b.db.InTx(func(tx database.Store) error {
|
||||
//nolint:revive // calls do on modified struct
|
||||
b.db = tx
|
||||
resp = b.doInTX()
|
||||
return nil
|
||||
}, nil)
|
||||
require.NoError(b.t, err)
|
||||
return resp
|
||||
}
|
||||
|
||||
func (b WorkspaceBuildBuilder) doInTX() WorkspaceResponse {
|
||||
b.t.Helper()
|
||||
jobID := uuid.New()
|
||||
b.seed.ID = uuid.New()
|
||||
|
||||
Reference in New Issue
Block a user