Skip to content

Commit

Permalink
Merge pull request #8390 from heyitsanthony/reset-keysgauge-restore
Browse files Browse the repository at this point in the history
mvcc: reset keys gauge on restore
  • Loading branch information
heyitsanthony committed Aug 10, 2017
2 parents 0441345 + ccd1bb1 commit 6c4d990
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
20 changes: 20 additions & 0 deletions mvcc/kv_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ import (
"github.com/coreos/etcd/mvcc/backend"
"github.com/coreos/etcd/mvcc/mvccpb"
"github.com/coreos/etcd/pkg/testutil"

"github.com/prometheus/client_golang/prometheus"
dto "github.com/prometheus/client_model/go"
)

// Functional tests for features implemented in v3 store. It treats v3 store
Expand Down Expand Up @@ -612,6 +615,7 @@ func TestKVRestore(t *testing.T) {
kv.Put([]byte("foo"), []byte("bar0"), 1)
kv.Put([]byte("foo"), []byte("bar1"), 2)
kv.Put([]byte("foo"), []byte("bar2"), 3)
kv.Put([]byte("foo2"), []byte("bar0"), 1)
},
func(kv KV) {
kv.Put([]byte("foo"), []byte("bar0"), 1)
Expand All @@ -633,10 +637,17 @@ func TestKVRestore(t *testing.T) {
r, _ := s.Range([]byte("a"), []byte("z"), RangeOptions{Rev: k})
kvss = append(kvss, r.KVs)
}

keysBefore := readGaugeInt(&keysGauge)
s.Close()

// ns should recover the the previous state from backend.
ns := NewStore(b, &lease.FakeLessor{}, nil)

if keysRestore := readGaugeInt(&keysGauge); keysBefore != keysRestore {
t.Errorf("#%d: got %d key count, expected %d", i, keysRestore, keysBefore)
}

// wait for possible compaction to finish
testutil.WaitSchedule()
var nkvss [][]mvccpb.KeyValue
Expand All @@ -652,6 +663,15 @@ func TestKVRestore(t *testing.T) {
}
}

func readGaugeInt(g *prometheus.Gauge) int {
ch := make(chan prometheus.Metric, 1)
keysGauge.Collect(ch)
m := <-ch
mm := &dto.Metric{}
m.Write(mm)
return int(mm.GetGauge().GetValue())
}

func TestKVSnapshot(t *testing.T) {
b, tmpPath := backend.NewDefaultTmpBackend()
s := NewStore(b, &lease.FakeLessor{}, nil)
Expand Down
1 change: 1 addition & 0 deletions mvcc/kvstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ func (s *store) restore() error {
}

// index keys concurrently as they're loaded in from tx
keysGauge.Set(0)
rkvc, revc := restoreIntoIndex(s.kvindex)
for {
keys, vals := tx.UnsafeRange(keyBucketName, min, max, int64(restoreChunkKeys))
Expand Down

0 comments on commit 6c4d990

Please sign in to comment.