projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
20862: Fix charset middleware.
[arvados.git]
/
services
/
crunch-dispatch-slurm
/
slurm.go
diff --git
a/services/crunch-dispatch-slurm/slurm.go
b/services/crunch-dispatch-slurm/slurm.go
index 9e9f45270f82d3450d27e380fe63924177e5501d..e59826f763dcd45f7b6b9b150327b22e64332bb9 100644
(file)
--- a/
services/crunch-dispatch-slurm/slurm.go
+++ b/
services/crunch-dispatch-slurm/slurm.go
@@
-2,7
+2,7
@@
//
// SPDX-License-Identifier: AGPL-3.0
//
// SPDX-License-Identifier: AGPL-3.0
-package
main
+package
dispatchslurm
import (
"fmt"
import (
"fmt"
@@
-20,7
+20,15
@@
type Slurm interface {
Renice(name string, nice int64) error
}
Renice(name string, nice int64) error
}
-type slurmCLI struct{}
+type slurmCLI struct {
+ runSemaphore chan bool
+}
+
+func NewSlurmCLI() *slurmCLI {
+ return &slurmCLI{
+ runSemaphore: make(chan bool, 3),
+ }
+}
func (scli *slurmCLI) Batch(script io.Reader, args []string) error {
return scli.run(script, "sbatch", args)
func (scli *slurmCLI) Batch(script io.Reader, args []string) error {
return scli.run(script, "sbatch", args)
@@
-64,6
+72,8
@@
func (scli *slurmCLI) Renice(name string, nice int64) error {
}
func (scli *slurmCLI) run(stdin io.Reader, prog string, args []string) error {
}
func (scli *slurmCLI) run(stdin io.Reader, prog string, args []string) error {
+ scli.runSemaphore <- true
+ defer func() { <-scli.runSemaphore }()
cmd := exec.Command(prog, args...)
cmd.Stdin = stdin
out, err := cmd.CombinedOutput()
cmd := exec.Command(prog, args...)
cmd.Stdin = stdin
out, err := cmd.CombinedOutput()