//
// SPDX-License-Identifier: AGPL-3.0
-package main
+package keepbalance
import (
"context"
// Use about 1 goroutine per 2 CPUs. Based on experiments with
// a 2-core host, using more concurrent database
// calls/transactions makes this process slower, not faster.
- for i := 0; i < runtime.NumCPU()+1/2; i++ {
+ for i := 0; i < (runtime.NumCPU()+1)/2; i++ {
wg.Add(1)
goSendErr(errs, func() error {
defer wg.Done()
// temporarily.
repl = desired
}
- classes, err := json.Marshal(coll.StorageClassesDesired)
- if err != nil {
- bal.logf("BUG? json.Marshal(%v) failed: %s", classes, err)
- continue
+ classes := emptyJSONArray
+ if repl > 0 {
+ classes, err = json.Marshal(coll.StorageClassesDesired)
+ if err != nil {
+ bal.logf("BUG? json.Marshal(%v) failed: %s", classes, err)
+ continue
+ }
}
needUpdate := coll.ReplicationConfirmed == nil || *coll.ReplicationConfirmed != repl || len(coll.StorageClassesConfirmed) != len(coll.StorageClassesDesired)
for i := range coll.StorageClassesDesired {
}
}()
}
+
+var emptyJSONArray = []byte("[]")