17574: Confirm storage classes as [] when replication is 0.
[arvados.git] / services / keep-balance / collection.go
index 1da3ec4415946bea6e3176f6746a2229a5017443..1e1e51abe7ebcd55e5d0ed7ca55eae02a8b56504 100644 (file)
@@ -199,10 +199,13 @@ func (bal *Balancer) updateCollections(ctx context.Context, c *arvados.Client, c
                                        // 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 {
@@ -259,3 +262,5 @@ func goSendErr(errs chan<- error, f func() error) {
                }
        }()
 }
+
+var emptyJSONArray = []byte("[]")