Skip to content

Commit

Permalink
nx-dagger: Wrap parallel map access in mutex
Browse files Browse the repository at this point in the history
  • Loading branch information
JacobLey committed Feb 5, 2025
1 parent 6cf6a14 commit 9de477f
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 3 deletions.
5 changes: 5 additions & 0 deletions .changeset/quick-squids-cover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"nx-dagger": patch
---

Wrap parallel map access in mutex
11 changes: 10 additions & 1 deletion apps/nx-dagger/src/generate/main.go.eta
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ var nxConfig = map[NxProjectDir]NxProject{
<% } %>
}

var mapMutex = sync.RWMutex{}

// Execute Nx targets over all projects in dependency order
// and return the fully built monorepo directory
func (m *<%= it.changeCase.pascalCase(it.dagger.name) %>) Build(
Expand Down Expand Up @@ -132,7 +134,9 @@ func (m *<%= it.changeCase.pascalCase(it.dagger.name) %>) Build(
if buildError != nil {
return buildError
}
mapMutex.RLock()
dependencyDirs[dependencyProjectDir] = builtProjects[dependencyProjectDir].directory
mapMutex.RUnlock()
}

directory, err := m.buildProject(
Expand All @@ -152,15 +156,20 @@ func (m *<%= it.changeCase.pascalCase(it.dagger.name) %>) Build(
buildError = err
}
} else {
mapMutex.Lock()
defer mapMutex.Unlock()
project := builtProjects[projectDir]
project.directory = directory
builtProjects[projectDir] = project
}
return nil
}
triggerProjectBuildGroup = func(projectDir NxProjectDir) {
mapMutex.RLock()
projectOnce := builtProjects[projectDir].once
mapMutex.RUnlock()
// Only run project build once, reporting wait/error groups
builtProjects[projectDir].once.Do(func() {
projectOnce.Do(func() {
defer waitGroup.Done()
triggerProjectBuild(projectDir)
})
Expand Down
11 changes: 10 additions & 1 deletion apps/nx-dagger/src/tests/data/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 10 additions & 1 deletion dagger/monorepo/main.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9de477f

Please sign in to comment.