From 6f21ed9c660bdd64b3933c4442e3d5712b67bee1 Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Wed, 21 Sep 2016 16:20:48 +0800 Subject: [PATCH] kv/RocksDBStore: no reason to make write_batch using new/delete discards new/delete for bat Signed-off-by: Haomai Wang (cherry picked from commit 79a6611c0aa2c5b16435fad53268dd29a8541188) Conflicts: src/kv/RocksDBStore.cc (trivial) --- src/kv/RocksDBStore.cc | 27 ++++++++++++--------------- src/kv/RocksDBStore.h | 3 +-- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index a2dd90a8aac70..017c4e0349855 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -324,13 +324,13 @@ int RocksDBStore::submit_transaction(KeyValueDB::Transaction t) woptions.disableWAL = disableWAL; lgeneric_subdout(cct, rocksdb, 30) << __func__; RocksWBHandler bat_txc; - _t->bat->Iterate(&bat_txc); + _t->bat.Iterate(&bat_txc); *_dout << " Rocksdb transaction: " << bat_txc.seen << dendl; - rocksdb::Status s = db->Write(woptions, _t->bat); + rocksdb::Status s = db->Write(woptions, &_t->bat); if (!s.ok()) { RocksWBHandler rocks_txc; - _t->bat->Iterate(&rocks_txc); + _t->bat.Iterate(&rocks_txc); derr << __func__ << " error: " << s.ToString() << " code = " << s.code() << " Rocksdb transaction: " << rocks_txc.seen << dendl; } @@ -350,13 +350,13 @@ int RocksDBStore::submit_transaction_sync(KeyValueDB::Transaction t) woptions.disableWAL = disableWAL; lgeneric_subdout(cct, rocksdb, 30) << __func__; RocksWBHandler bat_txc; - _t->bat->Iterate(&bat_txc); + _t->bat.Iterate(&bat_txc); *_dout << " Rocksdb transaction: " << bat_txc.seen << dendl; - rocksdb::Status s = db->Write(woptions, _t->bat); + rocksdb::Status s = db->Write(woptions, &_t->bat); if (!s.ok()) { RocksWBHandler rocks_txc; - _t->bat->Iterate(&rocks_txc); + _t->bat.Iterate(&rocks_txc); derr << __func__ << " error: " << s.ToString() << " code = " << s.code() << " Rocksdb transaction: " << rocks_txc.seen << dendl; } @@ -385,12 +385,8 @@ int RocksDBStore::get_info_log_level(string info_log_level) RocksDBStore::RocksDBTransactionImpl::RocksDBTransactionImpl(RocksDBStore *_db) { db = _db; - bat = new rocksdb::WriteBatch(); -} -RocksDBStore::RocksDBTransactionImpl::~RocksDBTransactionImpl() -{ - delete bat; } + void RocksDBStore::RocksDBTransactionImpl::set( const string &prefix, const string &k, @@ -400,13 +396,13 @@ void RocksDBStore::RocksDBTransactionImpl::set( // bufferlist::c_str() is non-constant, so we can't call c_str() if (to_set_bl.is_contiguous() && to_set_bl.length() > 0) { - bat->Put(rocksdb::Slice(key), + bat.Put(rocksdb::Slice(key), rocksdb::Slice(to_set_bl.buffers().front().c_str(), to_set_bl.length())); } else { // make a copy bufferlist val = to_set_bl; - bat->Put(rocksdb::Slice(key), + bat.Put(rocksdb::Slice(key), rocksdb::Slice(val.c_str(), val.length())); } } @@ -414,7 +410,7 @@ void RocksDBStore::RocksDBTransactionImpl::set( void RocksDBStore::RocksDBTransactionImpl::rmkey(const string &prefix, const string &k) { - bat->Delete(combine_strings(prefix, k)); + bat.Delete(combine_strings(prefix, k)); } void RocksDBStore::RocksDBTransactionImpl::rmkeys_by_prefix(const string &prefix) @@ -423,10 +419,11 @@ void RocksDBStore::RocksDBTransactionImpl::rmkeys_by_prefix(const string &prefix for (it->seek_to_first(); it->valid(); it->next()) { - bat->Delete(combine_strings(prefix, it->key())); + bat.Delete(combine_strings(prefix, it->key())); } } +ew/delete int RocksDBStore::get( const string &prefix, const std::set &keys, diff --git a/src/kv/RocksDBStore.h b/src/kv/RocksDBStore.h index 654c51c105c2a..8cd657c96cd53 100644 --- a/src/kv/RocksDBStore.h +++ b/src/kv/RocksDBStore.h @@ -230,11 +230,10 @@ public: class RocksDBTransactionImpl : public KeyValueDB::TransactionImpl { public: - rocksdb::WriteBatch *bat; + rocksdb::WriteBatch bat; RocksDBStore *db; explicit RocksDBTransactionImpl(RocksDBStore *_db); - ~RocksDBTransactionImpl(); void set( const string &prefix, const string &k, -- 2.39.5