mvcc: remove unused restore method

This commit is contained in:
sharat 2016-11-18 15:43:55 +05:30
parent 68b04b7067
commit 43078d3ced
4 changed files with 17 additions and 114 deletions

View File

@ -25,7 +25,6 @@ type index interface {
Get(key []byte, atRev int64) (rev, created revision, ver int64, err error)
Range(key, end []byte, atRev int64) ([][]byte, []revision)
Put(key []byte, rev revision)
Restore(key []byte, created, modified revision, ver int64)
Tombstone(key []byte, rev revision) error
RangeSince(key, end []byte, rev int64) []revision
Compact(rev int64) map[revision]struct{}
@ -59,21 +58,6 @@ func (ti *treeIndex) Put(key []byte, rev revision) {
okeyi.put(rev.main, rev.sub)
}
func (ti *treeIndex) Restore(key []byte, created, modified revision, ver int64) {
keyi := &keyIndex{key: key}
ti.Lock()
defer ti.Unlock()
item := ti.tree.Get(keyi)
if item == nil {
keyi.restore(created, modified, ver)
ti.tree.ReplaceOrInsert(keyi)
return
}
okeyi := item.(*keyIndex)
okeyi.put(modified.main, modified.sub)
}
func (ti *treeIndex) Get(key []byte, atRev int64) (modified, created revision, ver int64, err error) {
keyi := &keyIndex{key: key}

View File

@ -1,41 +0,0 @@
// Copyright 2016 The etcd Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package mvcc
import (
"fmt"
"testing"
)
func BenchmarkIndexRestore(b *testing.B) {
var (
keys = make([][]byte, b.N)
createds = make([]revision, b.N)
modifieds = make([]revision, b.N)
ver int64 = 1
)
for i := 0; i < b.N; i++ {
keys[i] = []byte(fmt.Sprintf("foo%d", i))
createds[i] = revision{int64(i), 0}
modifieds[i] = revision{int64(i), 1}
}
kvindex := newTreeIndex()
b.ResetTimer()
for i := 0; i < b.N; i++ {
kvindex.Restore(keys[i], createds[i], modifieds[i], ver)
}
}

View File

@ -17,6 +17,8 @@ package mvcc
import (
"reflect"
"testing"
"github.com/google/btree"
)
func TestIndexGet(t *testing.T) {
@ -225,13 +227,13 @@ func TestIndexCompact(t *testing.T) {
for i := int64(1); i < maxRev; i++ {
am := ti.Compact(i)
wti := newTreeIndex()
wti := &treeIndex{tree: btree.New(32)}
for _, tt := range tests {
if _, ok := am[tt.rev]; ok || tt.rev.GreaterThan(revision{main: i}) {
if tt.remove {
wti.Tombstone(tt.key, tt.rev)
} else {
wti.Restore(tt.key, tt.created, tt.rev, tt.ver)
restore(wti, tt.key, tt.created, tt.rev, tt.ver)
}
}
}
@ -252,13 +254,13 @@ func TestIndexCompact(t *testing.T) {
}
am := ti.Compact(i)
wti := newTreeIndex()
wti := &treeIndex{tree: btree.New(32)}
for _, tt := range tests {
if _, ok := am[tt.rev]; ok || tt.rev.GreaterThan(revision{main: i}) {
if tt.remove {
wti.Tombstone(tt.key, tt.rev)
} else {
wti.Restore(tt.key, tt.created, tt.rev, tt.ver)
restore(wti, tt.key, tt.created, tt.rev, tt.ver)
}
}
}
@ -268,56 +270,17 @@ func TestIndexCompact(t *testing.T) {
}
}
func TestIndexRestore(t *testing.T) {
key := []byte("foo")
func restore(ti *treeIndex, key []byte, created, modified revision, ver int64) {
keyi := &keyIndex{key: key}
tests := []struct {
created revision
modified revision
ver int64
}{
{revision{1, 0}, revision{1, 0}, 1},
{revision{1, 0}, revision{1, 1}, 2},
{revision{1, 0}, revision{2, 0}, 3},
}
// Continuous Restore
ti := newTreeIndex()
for i, tt := range tests {
ti.Restore(key, tt.created, tt.modified, tt.ver)
modified, created, ver, err := ti.Get(key, tt.modified.main)
if modified != tt.modified {
t.Errorf("#%d: modified = %v, want %v", i, modified, tt.modified)
}
if created != tt.created {
t.Errorf("#%d: created = %v, want %v", i, created, tt.created)
}
if ver != tt.ver {
t.Errorf("#%d: ver = %d, want %d", i, ver, tt.ver)
}
if err != nil {
t.Errorf("#%d: err = %v, want nil", i, err)
}
}
// Once Restore
for i, tt := range tests {
ti := newTreeIndex()
ti.Restore(key, tt.created, tt.modified, tt.ver)
modified, created, ver, err := ti.Get(key, tt.modified.main)
if modified != tt.modified {
t.Errorf("#%d: modified = %v, want %v", i, modified, tt.modified)
}
if created != tt.created {
t.Errorf("#%d: created = %v, want %v", i, created, tt.created)
}
if ver != tt.ver {
t.Errorf("#%d: ver = %d, want %d", i, ver, tt.ver)
}
if err != nil {
t.Errorf("#%d: err = %v, want nil", i, err)
}
ti.Lock()
defer ti.Unlock()
item := ti.tree.Get(keyi)
if item == nil {
keyi.restore(created, modified, ver)
ti.tree.ReplaceOrInsert(keyi)
return
}
okeyi := item.(*keyIndex)
okeyi.put(modified.main, modified.sub)
}

View File

@ -655,9 +655,6 @@ func (i *fakeIndex) Range(key, end []byte, atRev int64) ([][]byte, []revision) {
func (i *fakeIndex) Put(key []byte, rev revision) {
i.Recorder.Record(testutil.Action{Name: "put", Params: []interface{}{key, rev}})
}
func (i *fakeIndex) Restore(key []byte, created, modified revision, ver int64) {
i.Recorder.Record(testutil.Action{Name: "restore", Params: []interface{}{key, created, modified, ver}})
}
func (i *fakeIndex) Tombstone(key []byte, rev revision) error {
i.Recorder.Record(testutil.Action{Name: "tombstone", Params: []interface{}{key, rev}})
return nil