txPending := 0
flush := func(final bool) error {
err := tx.Commit()
- if err != nil {
+ if err != nil && ctx.Err() == nil {
tx.Rollback()
return err
}
// 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 {
where uuid=$4`,
repl, thresholdStr, classes, coll.UUID)
if err != nil {
- if err != context.Canceled {
+ if ctx.Err() == nil {
bal.logf("%s: update failed: %s", coll.UUID, err)
}
continue
}
}()
}
+
+var emptyJSONArray = []byte("[]")