Commit 28de2d98 authored by liuyuhang's avatar liuyuhang Committed by vipwzw

decrease mem

parent b7217352
...@@ -324,7 +324,7 @@ func (kvmMavls *KVmMavlStore) MemSetUpgrade(datas *types.StoreSet, sync bool) ([ ...@@ -324,7 +324,7 @@ func (kvmMavls *KVmMavlStore) MemSetUpgrade(datas *types.StoreSet, sync bool) ([
// CommitUpgrade kvs in the mem of KVmMavlStore module to state db and return the StateHash // CommitUpgrade kvs in the mem of KVmMavlStore module to state db and return the StateHash
func (kvmMavls *KVmMavlStore) CommitUpgrade(req *types.ReqHash) ([]byte, error) { func (kvmMavls *KVmMavlStore) CommitUpgrade(req *types.ReqHash) ([]byte, error) {
return kvmMavls.KVMVCCStore.Commit(req) return kvmMavls.KVMVCCStore.CommitUpgrade(req)
} }
// Del set kvs to nil with StateHash // Del set kvs to nil with StateHash
......
...@@ -32,6 +32,7 @@ var ( ...@@ -32,6 +32,7 @@ var (
// 每个10000裁剪一次 // 每个10000裁剪一次
pruneHeight = 10000 pruneHeight = 10000
pruningState int32 pruningState int32
batch dbm.Batch
) )
var ( var (
...@@ -152,6 +153,32 @@ func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) { ...@@ -152,6 +153,32 @@ func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) {
return req.Hash, nil return req.Hash, nil
} }
// CommitUpgrade kvs in the mem of KVMVCCStore module to state db and re
func (mvccs *KVMVCCStore) CommitUpgrade(req *types.ReqHash) ([]byte, error) {
_, ok := mvccs.kvsetmap[string(req.Hash)]
if !ok {
kmlog.Error("store kvmvcc commit", "err", types.ErrHashNotFound)
return nil, types.ErrHashNotFound
}
//kmlog.Debug("KVMVCCStore Commit saveKVSets", "hash", common.ToHex(req.Hash))
if batch == nil {
batch = mvccs.db.NewBatch(true)
}
batch.Reset()
kvset := mvccs.kvsetmap[string(req.Hash)]
for i := 0; i < len(kvset); i++ {
if kvset[i].Value == nil {
batch.Delete(kvset[i].Key)
} else {
batch.Set(kvset[i].Key, kvset[i].Value)
}
}
batch.Write()
mvccs.saveKVSets(mvccs.kvsetmap[string(req.Hash)])
delete(mvccs.kvsetmap, string(req.Hash))
return req.Hash, nil
}
// Rollback kvs in the mem of KVMVCCStore module and return the StateHash // 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)]
......
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