[ARVADOS] created: 1.1.4-319-gf1cf835
Git user
git at public.curoverse.com
Tue May 29 12:21:58 EDT 2018
at f1cf835d576de364faa7e94f5ba8caca5ad7be43 (commit)
commit f1cf835d576de364faa7e94f5ba8caca5ad7be43
Author: Tom Clegg <tclegg at veritasgenetics.com>
Date: Tue May 29 09:46:04 2018 -0400
13513: Fix deadlocked workers.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg at veritasgenetics.com>
diff --git a/services/keep-balance/balance.go b/services/keep-balance/balance.go
index 7b25d78..d6a2dde 100644
--- a/services/keep-balance/balance.go
+++ b/services/keep-balance/balance.go
@@ -365,27 +365,29 @@ func (bal *Balancer) ComputeChangeSets() {
blkid arvados.SizedDigest
blk *BlockState
}
- nWorkers := 1 + runtime.NumCPU()
- todo := make(chan balanceTask, nWorkers)
- results := make(chan balanceResult, 16)
- var wg sync.WaitGroup
- for i := 0; i < nWorkers; i++ {
- wg.Add(1)
- go func() {
- for work := range todo {
- results <- bal.balanceBlock(work.blkid, work.blk)
+ workers := runtime.GOMAXPROCS(-1)
+ todo := make(chan balanceTask, workers)
+ go func() {
+ bal.BlockStateMap.Apply(func(blkid arvados.SizedDigest, blk *BlockState) {
+ todo <- balanceTask{
+ blkid: blkid,
+ blk: blk,
}
- wg.Done()
- }()
- }
- bal.BlockStateMap.Apply(func(blkid arvados.SizedDigest, blk *BlockState) {
- todo <- balanceTask{
- blkid: blkid,
- blk: blk,
- }
- })
- close(todo)
+ })
+ close(todo)
+ }()
+ results := make(chan balanceResult, workers)
go func() {
+ var wg sync.WaitGroup
+ for i := 0; i < workers; i++ {
+ wg.Add(1)
+ go func() {
+ for work := range todo {
+ results <- bal.balanceBlock(work.blkid, work.blk)
+ }
+ wg.Done()
+ }()
+ }
wg.Wait()
close(results)
}()
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list