]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/LevelDBStore:Drop buffer_list and key_list in transaction.
authorXiaoxi Chen <xiaoxi.chen@intel.com>
Wed, 10 Jun 2015 04:49:45 +0000 (12:49 +0800)
committerXiaoxi Chen <xiaoxi.chen@intel.com>
Wed, 10 Jun 2015 04:57:02 +0000 (12:57 +0800)
We dont need to keep this inside the transaction.

Signed-off-by: Xiaoxi Chen <xiaoxi.chen@intel.com>
src/os/LevelDBStore.cc
src/os/LevelDBStore.h

index a56cd21ad87e25355cf0ef01137cf0a85bf3aecb..1aaa168a34646078d6207c7b00b520f802788f5f 100644 (file)
@@ -162,21 +162,19 @@ void LevelDBStore::LevelDBTransactionImpl::set(
   const string &k,
   const bufferlist &to_set_bl)
 {
-  buffers.push_back(to_set_bl);
-  bufferlist &bl = *(buffers.rbegin());
   string key = combine_strings(prefix, k);
-  keys.push_back(key);
-  bat.Delete(leveldb::Slice(*(keys.rbegin())));
-  bat.Put(leveldb::Slice(*(keys.rbegin())),
-         leveldb::Slice(bl.c_str(), bl.length()));
+  //bufferlist::c_str() is non-constant, so we need to make a copy
+  bufferlist val = to_set_bl;
+  bat.Delete(leveldb::Slice(key));
+  bat.Put(leveldb::Slice(key),
+         leveldb::Slice(val.c_str(), val.length()));
 }
 
 void LevelDBStore::LevelDBTransactionImpl::rmkey(const string &prefix,
                                                 const string &k)
 {
   string key = combine_strings(prefix, k);
-  keys.push_back(key);
-  bat.Delete(leveldb::Slice(*(keys.rbegin())));
+  bat.Delete(leveldb::Slice(key));
 }
 
 void LevelDBStore::LevelDBTransactionImpl::rmkeys_by_prefix(const string &prefix)
@@ -186,8 +184,7 @@ void LevelDBStore::LevelDBTransactionImpl::rmkeys_by_prefix(const string &prefix
        it->valid();
        it->next()) {
     string key = combine_strings(prefix, it->key());
-    keys.push_back(key);
-    bat.Delete(*(keys.rbegin()));
+    bat.Delete(key);
   }
 }
 
index ae23fdd0cfacfec6efa5400d7ee15e432cc33964..06ea071b4a403fc069cec66ee8463d1aaf23d3a3 100644 (file)
@@ -177,10 +177,7 @@ public:
   class LevelDBTransactionImpl : public KeyValueDB::TransactionImpl {
   public:
     leveldb::WriteBatch bat;
-    list<bufferlist> buffers;
-    list<string> keys;
     LevelDBStore *db;
-
     LevelDBTransactionImpl(LevelDBStore *db) : db(db) {}
     void set(
       const string &prefix,