Commit 6925ff03 authored by 张振华's avatar 张振华

fix lint warning

parent eacf28fd
...@@ -7,5 +7,6 @@ package kvmvccdb ...@@ -7,5 +7,6 @@ package kvmvccdb
import "errors" import "errors"
var ( var (
//Err for StateHash lost
ErrStateHashLost = errors.New("ErrStateHashLost") ErrStateHashLost = errors.New("ErrStateHashLost")
) )
...@@ -18,10 +18,12 @@ import ( ...@@ -18,10 +18,12 @@ import (
var klog = log.New("module", "kvmvccdb") var klog = log.New("module", "kvmvccdb")
var maxRollbackNum = 200 var maxRollbackNum = 200
// Set log level
func SetLogLevel(level string) { func SetLogLevel(level string) {
clog.SetLogLevel(level) clog.SetLogLevel(level)
} }
// disable log output
func DisableLog() { func DisableLog() {
klog.SetHandler(log.DiscardHandler()) klog.SetHandler(log.DiscardHandler())
} }
...@@ -30,6 +32,7 @@ func init() { ...@@ -30,6 +32,7 @@ func init() {
drivers.Reg("kvmvcc", New) drivers.Reg("kvmvcc", New)
} }
// KV MVCC Store
type KVMVCCStore struct { type KVMVCCStore struct {
*drivers.BaseStore *drivers.BaseStore
mvcc dbm.MVCC mvcc dbm.MVCC
...@@ -41,6 +44,7 @@ type subConfig struct { ...@@ -41,6 +44,7 @@ type subConfig struct {
EnableMVCCIter bool `json:"enableMVCCIter"` EnableMVCCIter bool `json:"enableMVCCIter"`
} }
// new KVMVCCStore module
func New(cfg *types.Store, sub []byte) queue.Module { func New(cfg *types.Store, sub []byte) queue.Module {
bs := drivers.NewBaseStore(cfg) bs := drivers.NewBaseStore(cfg)
var kvs *KVMVCCStore var kvs *KVMVCCStore
...@@ -59,11 +63,13 @@ func New(cfg *types.Store, sub []byte) queue.Module { ...@@ -59,11 +63,13 @@ func New(cfg *types.Store, sub []byte) queue.Module {
return kvs return kvs
} }
// Close the KVMVCCStore module
func (mvccs *KVMVCCStore) Close() { func (mvccs *KVMVCCStore) Close() {
mvccs.BaseStore.Close() mvccs.BaseStore.Close()
klog.Info("store kvdb closed") klog.Info("store kvdb closed")
} }
// set kvs with statehash to KVMVCCStore
func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error) { func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error) {
hash := calcHash(datas) hash := calcHash(datas)
kvlist, err := mvccs.mvcc.AddMVCC(datas.KV, hash, datas.StateHash, datas.Height) kvlist, err := mvccs.mvcc.AddMVCC(datas.KV, hash, datas.StateHash, datas.Height)
...@@ -74,6 +80,7 @@ func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error) ...@@ -74,6 +80,7 @@ func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error)
return hash, nil return hash, nil
} }
// Get kvs with statehash from KVMVCCStore
func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte { func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte {
values := make([][]byte, len(datas.Keys)) values := make([][]byte, len(datas.Keys))
version, err := mvccs.mvcc.GetVersion(datas.StateHash) version, err := mvccs.mvcc.GetVersion(datas.StateHash)
...@@ -92,6 +99,7 @@ func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte { ...@@ -92,6 +99,7 @@ func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte {
return values return values
} }
// Set kvs to the mem of KVMVCCStore module and return the StateHash
func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, error) { func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, error) {
kvset, err := mvccs.checkVersion(datas.Height) kvset, err := mvccs.checkVersion(datas.Height)
if err != nil { if err != nil {
...@@ -110,6 +118,7 @@ func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, erro ...@@ -110,6 +118,7 @@ func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, erro
return hash, nil return hash, nil
} }
// Commit kvs in the mem of KVMVCCStore module to state db and return the StateHash
func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) { func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) {
_, ok := mvccs.kvsetmap[string(req.Hash)] _, ok := mvccs.kvsetmap[string(req.Hash)]
if !ok { if !ok {
...@@ -122,6 +131,7 @@ func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) { ...@@ -122,6 +131,7 @@ func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) {
return req.Hash, nil return req.Hash, nil
} }
// Rollback kvs in the mem of KVMVCCStore module and return the StateHash
func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) { func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) {
_, ok := mvccs.kvsetmap[string(req.Hash)] _, ok := mvccs.kvsetmap[string(req.Hash)]
if !ok { if !ok {
...@@ -135,6 +145,7 @@ func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) { ...@@ -135,6 +145,7 @@ func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) {
return req.Hash, nil return req.Hash, nil
} }
// Iterate range with Prefix by StateHash to get the latest version kvs.
func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte, end []byte, ascending bool, fn func(key, value []byte) bool) { func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte, end []byte, ascending bool, fn func(key, value []byte) bool) {
if !mvccs.enableMVCCIter { if !mvccs.enableMVCCIter {
panic("call IterateRangeByStateHash when disable mvcc iter") panic("call IterateRangeByStateHash when disable mvcc iter")
...@@ -162,10 +173,12 @@ func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte ...@@ -162,10 +173,12 @@ func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte
listhelper.IteratorCallback(start, end, 0, 1, fn) listhelper.IteratorCallback(start, end, 0, 1, fn)
} }
// Proc supported events
func (mvccs *KVMVCCStore) ProcEvent(msg queue.Message) { func (mvccs *KVMVCCStore) ProcEvent(msg queue.Message) {
msg.ReplyErr("KVStore", types.ErrActionNotSupport) msg.ReplyErr("KVStore", types.ErrActionNotSupport)
} }
// Set kvs to nil with StateHash
func (mvccs *KVMVCCStore) Del(req *types.StoreDel) ([]byte, error) { func (mvccs *KVMVCCStore) Del(req *types.StoreDel) ([]byte, error) {
kvset, err := mvccs.mvcc.DelMVCC(req.StateHash, req.Height, true) kvset, err := mvccs.mvcc.DelMVCC(req.StateHash, req.Height, true)
if err != nil { if err != nil {
......
...@@ -35,8 +35,8 @@ func TestKvmvccdbNewClose(t *testing.T) { ...@@ -35,8 +35,8 @@ func TestKvmvccdbNewClose(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
store.Close() store.Close()
...@@ -47,8 +47,8 @@ func TestKvmvccdbSetGet(t *testing.T) { ...@@ -47,8 +47,8 @@ func TestKvmvccdbSetGet(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
keys0 := [][]byte{[]byte("mk1"), []byte("mk2")} keys0 := [][]byte{[]byte("mk1"), []byte("mk2")}
...@@ -93,8 +93,8 @@ func TestKvmvccdbMemSet(t *testing.T) { ...@@ -93,8 +93,8 @@ func TestKvmvccdbMemSet(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -131,8 +131,8 @@ func TestKvmvccdbRollback(t *testing.T) { ...@@ -131,8 +131,8 @@ func TestKvmvccdbRollback(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -164,8 +164,8 @@ func TestKvmvccdbRollbackBatch(t *testing.T) { ...@@ -164,8 +164,8 @@ func TestKvmvccdbRollbackBatch(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -261,7 +261,7 @@ func TestIterateRangeByStateHash(t *testing.T) { ...@@ -261,7 +261,7 @@ func TestIterateRangeByStateHash(t *testing.T) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) store_cfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
execaddr := "0111vcBNSEA7fZhAdLJphDwQRQJa111" execaddr := "0111vcBNSEA7fZhAdLJphDwQRQJa111"
...@@ -406,8 +406,8 @@ func BenchmarkGet(b *testing.B) { ...@@ -406,8 +406,8 @@ func BenchmarkGet(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -450,8 +450,8 @@ func BenchmarkStoreGetKvs4N(b *testing.B) { ...@@ -450,8 +450,8 @@ func BenchmarkStoreGetKvs4N(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -495,8 +495,8 @@ func BenchmarkStoreGetKvsForNN(b *testing.B) { ...@@ -495,8 +495,8 @@ func BenchmarkStoreGetKvsForNN(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -555,8 +555,8 @@ func BenchmarkStoreGetKvsFor10000(b *testing.B) { ...@@ -555,8 +555,8 @@ func BenchmarkStoreGetKvsFor10000(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -620,8 +620,8 @@ func BenchmarkGetIter(b *testing.B) { ...@@ -620,8 +620,8 @@ func BenchmarkGetIter(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -663,8 +663,8 @@ func BenchmarkSet(b *testing.B) { ...@@ -663,8 +663,8 @@ func BenchmarkSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
b.Log(dir) b.Log(dir)
...@@ -700,8 +700,8 @@ func BenchmarkStoreSet(b *testing.B) { ...@@ -700,8 +700,8 @@ func BenchmarkStoreSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -735,8 +735,8 @@ func BenchmarkSetIter(b *testing.B) { ...@@ -735,8 +735,8 @@ func BenchmarkSetIter(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
b.Log(dir) b.Log(dir)
...@@ -784,8 +784,8 @@ func BenchmarkMemSet(b *testing.B) { ...@@ -784,8 +784,8 @@ func BenchmarkMemSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -818,8 +818,8 @@ func BenchmarkStoreMemSet(b *testing.B) { ...@@ -818,8 +818,8 @@ func BenchmarkStoreMemSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -856,8 +856,8 @@ func BenchmarkCommit(b *testing.B) { ...@@ -856,8 +856,8 @@ func BenchmarkCommit(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -897,8 +897,8 @@ func BenchmarkStoreCommit(b *testing.B) { ...@@ -897,8 +897,8 @@ func BenchmarkStoreCommit(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -941,8 +941,8 @@ func BenchmarkIterMemSet(b *testing.B) { ...@@ -941,8 +941,8 @@ func BenchmarkIterMemSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -974,8 +974,8 @@ func BenchmarkIterCommit(b *testing.B) { ...@@ -974,8 +974,8 @@ func BenchmarkIterCommit(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment