From 1275e5cba149aecaad83d4056f9cfb21f9490a1e Mon Sep 17 00:00:00 2001 From: ekexium Date: Mon, 15 Nov 2021 23:22:57 +0800 Subject: [PATCH 1/3] export DeleteKey Signed-off-by: ekexium --- internal/unionstore/memdb.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/unionstore/memdb.go b/internal/unionstore/memdb.go index aef1bcf8c..da04fe3c0 100644 --- a/internal/unionstore/memdb.go +++ b/internal/unionstore/memdb.go @@ -261,6 +261,15 @@ func (db *MemDB) Delete(key []byte) error { return db.set(key, tombstone) } +func (db *MemDB) DeleteKey(key []byte) { + x := db.traverse(key, false) + if x.isNull() { + return + } + db.size -= len(db.vlog.getValue(x.vptr)) + db.deleteNode(x) +} + // DeleteWithFlags delete key with the given KeyFlags func (db *MemDB) DeleteWithFlags(key []byte, ops ...kv.FlagsOp) error { return db.set(key, tombstone, ops...) From 555ded4169c582d88bcd1e1d1572a587dc55769a Mon Sep 17 00:00:00 2001 From: ekexium Date: Mon, 29 Nov 2021 20:44:57 +0800 Subject: [PATCH 2/3] rename DeleteKey to UnsafeRemoveRecord Signed-off-by: ekexium --- internal/unionstore/memdb.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/internal/unionstore/memdb.go b/internal/unionstore/memdb.go index da04fe3c0..956bbb8fd 100644 --- a/internal/unionstore/memdb.go +++ b/internal/unionstore/memdb.go @@ -261,15 +261,6 @@ func (db *MemDB) Delete(key []byte) error { return db.set(key, tombstone) } -func (db *MemDB) DeleteKey(key []byte) { - x := db.traverse(key, false) - if x.isNull() { - return - } - db.size -= len(db.vlog.getValue(x.vptr)) - db.deleteNode(x) -} - // DeleteWithFlags delete key with the given KeyFlags func (db *MemDB) DeleteWithFlags(key []byte, ops ...kv.FlagsOp) error { return db.set(key, tombstone, ops...) @@ -848,3 +839,13 @@ func (n *memdbNode) getKeyFlags() kv.KeyFlags { func (n *memdbNode) setKeyFlags(f kv.KeyFlags) { n.flags = (^nodeFlagsMask & n.flags) | uint8(f) } + +// UnsafeRemoveRecord removes a record from the mem buffer. It should be only used for test. +func (db *MemDB) UnsafeRemoveRecord(key []byte) { + x := db.traverse(key, false) + if x.isNull() { + return + } + db.size -= len(db.vlog.getValue(x.vptr)) + db.deleteNode(x) +} From 5a14f925d6a18df8af1101a4b40c017656b2978a Mon Sep 17 00:00:00 2001 From: ekexium Date: Tue, 30 Nov 2021 15:50:38 +0800 Subject: [PATCH 3/3] rename the old DeleteKey Signed-off-by: ekexium --- internal/unionstore/memdb.go | 4 ++-- internal/unionstore/memdb_norace_test.go | 2 +- internal/unionstore/memdb_test.go | 10 ---------- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/internal/unionstore/memdb.go b/internal/unionstore/memdb.go index dbc57a09b..621e41bfe 100644 --- a/internal/unionstore/memdb.go +++ b/internal/unionstore/memdb.go @@ -834,8 +834,8 @@ func (n *memdbNode) setKeyFlags(f kv.KeyFlags) { n.flags = (^nodeFlagsMask & n.flags) | uint16(f) } -// UnsafeRemoveRecord removes a record from the mem buffer. It should be only used for test. -func (db *MemDB) UnsafeRemoveRecord(key []byte) { +// RemoveFromBuffer removes a record from the mem buffer. It should be only used for test. +func (db *MemDB) RemoveFromBuffer(key []byte) { x := db.traverse(key, false) if x.isNull() { return diff --git a/internal/unionstore/memdb_norace_test.go b/internal/unionstore/memdb_norace_test.go index 6610cac46..ed0405638 100644 --- a/internal/unionstore/memdb_norace_test.go +++ b/internal/unionstore/memdb_norace_test.go @@ -72,7 +72,7 @@ func TestRandom(t *testing.T) { for _, k := range keys { op := rand.Float64() if op < 0.35 { - p1.DeleteKey(k) + p1.RemoveFromBuffer(k) p2.Delete(k) } else { newValue := make([]byte, rand.Intn(19)+1) diff --git a/internal/unionstore/memdb_test.go b/internal/unionstore/memdb_test.go index d5d682407..18bed9fc0 100644 --- a/internal/unionstore/memdb_test.go +++ b/internal/unionstore/memdb_test.go @@ -53,16 +53,6 @@ func init() { testMode = true } -// DeleteKey is used in test to verify the `deleteNode` used in `vlog.revertToCheckpoint`. -func (db *MemDB) DeleteKey(key []byte) { - x := db.traverse(key, false) - if x.isNull() { - return - } - db.size -= len(db.vlog.getValue(x.vptr)) - db.deleteNode(x) -} - func TestGetSet(t *testing.T) { require := require.New(t)