Skip to content

Commit 078b300

Browse files
committed
lock ordering
1 parent 9fb605b commit 078b300

File tree

5 files changed

+17
-0
lines changed

5 files changed

+17
-0
lines changed

backend/controllers/github_comment.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"log/slog"
77
"os"
88
"runtime/debug"
9+
"slices"
910
"strconv"
1011
"strings"
1112

@@ -415,6 +416,12 @@ func handleIssueCommentEvent(gh utils.GithubClientProvider, payload *github.Issu
415416
"command", *diggerCommand,
416417
)
417418

419+
// Sort projects by name to ensure consistent lock ordering across PRs
420+
// This prevents deadlocks when multiple PRs affect the same projects
421+
slices.SortFunc(impactedProjectsForComment, func(a, b digger_config.Project) int {
422+
return strings.Compare(a.Name, b.Name)
423+
})
424+
418425
for _, project := range impactedProjectsForComment {
419426
prLock := locking.PullRequestLock{
420427
InternalLock: locking2.BackendDBLock{

backend/controllers/github_pull_request.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"runtime/debug"
1010
"slices"
1111
"strconv"
12+
"strings"
1213

1314
"github.com/diggerhq/digger/backend/ci_backends"
1415
config2 "github.com/diggerhq/digger/backend/config"
@@ -321,6 +322,12 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
321322
"command", *diggerCommand,
322323
)
323324

325+
// Sort projects by name to ensure consistent lock ordering across PRs
326+
// This prevents deadlocks when multiple PRs affect the same projects
327+
slices.SortFunc(impactedProjects, func(a, b digger_config.Project) int {
328+
return strings.Compare(a.Name, b.Name)
329+
})
330+
324331
for _, project := range impactedProjects {
325332
prLock := locking.PullRequestLock{
326333
InternalLock: locking2.BackendDBLock{

sandbox-sidecar/templates/build-all.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="node" />
12
import "dotenv/config";
23
import { Template, defaultBuildLogger } from "e2b";
34
import { terraformTemplate } from "./terraform-template.ts";

sandbox-sidecar/templates/build-barebones.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="node" />
12
import "dotenv/config";
23
import { Template, defaultBuildLogger } from "e2b";
34

sandbox-sidecar/templates/build.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="node" />
12
// build.ts
23
import { Template, defaultBuildLogger } from "e2b";
34
import { template } from "./test-template.ts";

0 commit comments

Comments
 (0)