[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