Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
66412ba2
Commit
66412ba2
authored
Nov 19, 2018
by
张振华
Committed by
vipwzw
Nov 20, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix lint warning
parent
105459cd
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
39 deletions
+53
-39
errors.go
plugin/store/kvmvcc/errors.go
+1
-0
kvmvccdb.go
plugin/store/kvmvcc/kvmvccdb.go
+13
-0
kvmvccdb_test.go
plugin/store/kvmvcc/kvmvccdb_test.go
+39
-39
No files found.
plugin/store/kvmvcc/errors.go
View file @
66412ba2
...
...
@@ -7,5 +7,6 @@ package kvmvccdb
import
"errors"
var
(
//Err for StateHash lost
ErrStateHashLost
=
errors
.
New
(
"ErrStateHashLost"
)
)
plugin/store/kvmvcc/kvmvccdb.go
View file @
66412ba2
...
...
@@ -18,10 +18,12 @@ import (
var
klog
=
log
.
New
(
"module"
,
"kvmvccdb"
)
var
maxRollbackNum
=
200
// Set log level
func
SetLogLevel
(
level
string
)
{
clog
.
SetLogLevel
(
level
)
}
// disable log output
func
DisableLog
()
{
klog
.
SetHandler
(
log
.
DiscardHandler
())
}
...
...
@@ -30,6 +32,7 @@ func init() {
drivers
.
Reg
(
"kvmvcc"
,
New
)
}
// KV MVCC Store
type
KVMVCCStore
struct
{
*
drivers
.
BaseStore
mvcc
dbm
.
MVCC
...
...
@@ -41,6 +44,7 @@ type subConfig struct {
EnableMVCCIter
bool
`json:"enableMVCCIter"`
}
// new KVMVCCStore module
func
New
(
cfg
*
types
.
Store
,
sub
[]
byte
)
queue
.
Module
{
bs
:=
drivers
.
NewBaseStore
(
cfg
)
var
kvs
*
KVMVCCStore
...
...
@@ -59,11 +63,13 @@ func New(cfg *types.Store, sub []byte) queue.Module {
return
kvs
}
// Close the KVMVCCStore module
func
(
mvccs
*
KVMVCCStore
)
Close
()
{
mvccs
.
BaseStore
.
Close
()
klog
.
Info
(
"store kvdb closed"
)
}
// set kvs with statehash to KVMVCCStore
func
(
mvccs
*
KVMVCCStore
)
Set
(
datas
*
types
.
StoreSet
,
sync
bool
)
([]
byte
,
error
)
{
hash
:=
calcHash
(
datas
)
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)
return
hash
,
nil
}
// Get kvs with statehash from KVMVCCStore
func
(
mvccs
*
KVMVCCStore
)
Get
(
datas
*
types
.
StoreGet
)
[][]
byte
{
values
:=
make
([][]
byte
,
len
(
datas
.
Keys
))
version
,
err
:=
mvccs
.
mvcc
.
GetVersion
(
datas
.
StateHash
)
...
...
@@ -92,6 +99,7 @@ func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte {
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
)
{
kvset
,
err
:=
mvccs
.
checkVersion
(
datas
.
Height
)
if
err
!=
nil
{
...
...
@@ -110,6 +118,7 @@ func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, erro
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
)
{
_
,
ok
:=
mvccs
.
kvsetmap
[
string
(
req
.
Hash
)]
if
!
ok
{
...
...
@@ -122,6 +131,7 @@ func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) {
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
)
{
_
,
ok
:=
mvccs
.
kvsetmap
[
string
(
req
.
Hash
)]
if
!
ok
{
...
...
@@ -135,6 +145,7 @@ func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) {
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
)
{
if
!
mvccs
.
enableMVCCIter
{
panic
(
"call IterateRangeByStateHash when disable mvcc iter"
)
...
...
@@ -162,10 +173,12 @@ func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte
listhelper
.
IteratorCallback
(
start
,
end
,
0
,
1
,
fn
)
}
// Proc supported events
func
(
mvccs
*
KVMVCCStore
)
ProcEvent
(
msg
queue
.
Message
)
{
msg
.
ReplyErr
(
"KVStore"
,
types
.
ErrActionNotSupport
)
}
// Set kvs to nil with StateHash
func
(
mvccs
*
KVMVCCStore
)
Del
(
req
*
types
.
StoreDel
)
([]
byte
,
error
)
{
kvset
,
err
:=
mvccs
.
mvcc
.
DelMVCC
(
req
.
StateHash
,
req
.
Height
,
true
)
if
err
!=
nil
{
...
...
plugin/store/kvmvcc/kvmvccdb_test.go
View file @
66412ba2
...
...
@@ -35,8 +35,8 @@ func TestKvmvccdbNewClose(t *testing.T) {
assert
.
Nil
(
t
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
t
,
store
)
store
.
Close
()
...
...
@@ -47,8 +47,8 @@ func TestKvmvccdbSetGet(t *testing.T) {
assert
.
Nil
(
t
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
t
,
store
)
keys0
:=
[][]
byte
{[]
byte
(
"mk1"
),
[]
byte
(
"mk2"
)}
...
...
@@ -93,8 +93,8 @@ func TestKvmvccdbMemSet(t *testing.T) {
assert
.
Nil
(
t
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
t
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -131,8 +131,8 @@ func TestKvmvccdbRollback(t *testing.T) {
assert
.
Nil
(
t
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
t
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -164,8 +164,8 @@ func TestKvmvccdbRollbackBatch(t *testing.T) {
assert
.
Nil
(
t
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
t
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -261,7 +261,7 @@ func TestIterateRangeByStateHash(t *testing.T) {
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
store_cfg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
_c
fg
,
sub
)
.
(
*
KVMVCCStore
)
store
:=
New
(
store
C
fg
,
sub
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
t
,
store
)
execaddr
:=
"0111vcBNSEA7fZhAdLJphDwQRQJa111"
...
...
@@ -406,8 +406,8 @@ func BenchmarkGet(b *testing.B) {
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -450,8 +450,8 @@ func BenchmarkStoreGetKvs4N(b *testing.B) {
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -495,8 +495,8 @@ func BenchmarkStoreGetKvsForNN(b *testing.B) {
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -555,8 +555,8 @@ func BenchmarkStoreGetKvsFor10000(b *testing.B) {
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -620,8 +620,8 @@ func BenchmarkGetIter(b *testing.B) {
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
store
_c
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
_c
fg
,
sub
)
.
(
*
KVMVCCStore
)
store
C
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
C
fg
,
sub
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -663,8 +663,8 @@ func BenchmarkSet(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
b
.
Log
(
dir
)
...
...
@@ -700,8 +700,8 @@ func BenchmarkStoreSet(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -735,8 +735,8 @@ func BenchmarkSetIter(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
store
_c
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
_c
fg
,
sub
)
.
(
*
KVMVCCStore
)
store
C
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
C
fg
,
sub
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
b
.
Log
(
dir
)
...
...
@@ -784,8 +784,8 @@ func BenchmarkMemSet(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -818,8 +818,8 @@ func BenchmarkStoreMemSet(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -856,8 +856,8 @@ func BenchmarkCommit(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -897,8 +897,8 @@ func BenchmarkStoreCommit(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
var
store
_c
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
_c
fg
,
nil
)
.
(
*
KVMVCCStore
)
var
store
C
fg
=
newStoreCfg
(
dir
)
store
:=
New
(
store
C
fg
,
nil
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -941,8 +941,8 @@ func BenchmarkIterMemSet(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
store
_c
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
_c
fg
,
sub
)
.
(
*
KVMVCCStore
)
store
C
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
C
fg
,
sub
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
@@ -974,8 +974,8 @@ func BenchmarkIterCommit(b *testing.B) {
assert
.
Nil
(
b
,
err
)
defer
os
.
RemoveAll
(
dir
)
// clean up
os
.
RemoveAll
(
dir
)
//删除已存在目录
store
_c
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
_c
fg
,
sub
)
.
(
*
KVMVCCStore
)
store
C
fg
,
sub
:=
newStoreCfgIter
(
dir
)
store
:=
New
(
store
C
fg
,
sub
)
.
(
*
KVMVCCStore
)
assert
.
NotNil
(
b
,
store
)
var
kv
[]
*
types
.
KeyValue
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment