func putBatchElements(batch storage.Batch, tk storage.TKey, elems interface{}) error { val, err := json.Marshal(elems) if err != nil { return err } batch.Put(tk, val) return nil }
// Given a stored label, make sure our max label tracking is updated. func (d *Data) casMaxLabel(batch storage.Batch, v dvid.VersionID, label uint64) { d.ml_mu.Lock() defer d.ml_mu.Unlock() save := false maxLabel, found := d.MaxLabel[v] if !found { dvid.Errorf("Bad max label of version %d -- none found!\n", v) maxLabel = 0 } if maxLabel < label { maxLabel = label save = true } if save { buf := make([]byte, 8) binary.LittleEndian.PutUint64(buf, maxLabel) batch.Put(maxLabelTKey, buf) d.MaxLabel[v] = maxLabel if d.MaxRepoLabel < maxLabel { d.MaxRepoLabel = maxLabel ctx := storage.NewDataContext(d, 0) store, err := storage.SmallDataStore() if err != nil { dvid.Errorf("Data type labelvol had error initializing store: %v\n", err) } else { store.Put(ctx, maxRepoLabelTKey, buf) } } } if err := batch.Commit(); err != nil { dvid.Errorf("batch put: %v\n", err) return } }