From 9f80abdf988dbf8761a783a14ace1ff79b5262e0 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 23 Sep 2019 10:53:27 -0500 Subject: [PATCH] mon/MonitorDBStore: add erase_range() op to transaction Signed-off-by: Sage Weil (cherry picked from commit 6900420d4e510e6b9e798384f70a2cb9631964db) --- src/mon/MonitorDBStore.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/mon/MonitorDBStore.h b/src/mon/MonitorDBStore.h index 1e001e07174cb..a5fbaa641ab09 100644 --- a/src/mon/MonitorDBStore.h +++ b/src/mon/MonitorDBStore.h @@ -123,6 +123,7 @@ class MonitorDBStore OP_PUT = 1, OP_ERASE = 2, OP_COMPACT = 3, + OP_ERASE_RANGE = 4, }; void put(string prefix, string key, bufferlist& bl) { @@ -156,6 +157,12 @@ class MonitorDBStore erase(prefix, os.str()); } + void erase_range(string prefix, string begin, string end) { + ops.push_back(Op(OP_ERASE_RANGE, prefix, begin, end)); + ++keys; + bytes += prefix.length() + begin.length() + end.length(); + } + void compact_prefix(string prefix) { ops.push_back(Op(OP_COMPACT, prefix, string())); } @@ -189,6 +196,7 @@ class MonitorDBStore bl.append("value"); ls.back()->put("prefix", "key", bl); ls.back()->erase("prefix2", "key2"); + ls.back()->erase_range("prefix3", "key3", "key4"); ls.back()->compact_prefix("prefix3"); ls.back()->compact_range("prefix4", "from", "to"); } @@ -250,6 +258,14 @@ class MonitorDBStore f->dump_string("key", op.key); } break; + case OP_ERASE_RANGE: + { + f->dump_string("type", "ERASE_RANGE"); + f->dump_string("prefix", op.prefix); + f->dump_string("start", op.key); + f->dump_string("end", op.endkey); + } + break; case OP_COMPACT: { f->dump_string("type", "COMPACT"); @@ -301,6 +317,9 @@ class MonitorDBStore case Transaction::OP_ERASE: dbt->rmkey(op.prefix, op.key); break; + case Transaction::OP_ERASE_RANGE: + dbt->rm_range_keys(op.prefix, op.key, op.endkey); + break; case Transaction::OP_COMPACT: compact.push_back(make_pair(op.prefix, make_pair(op.key, op.endkey))); break; -- 2.39.5