diff options
author | Michael Cahill <michael.cahill@wiredtiger.com> | 2014-06-04 11:39:36 +1000 |
---|---|---|
committer | Michael Cahill <michael.cahill@wiredtiger.com> | 2014-06-04 11:39:36 +1000 |
commit | d6b4ab56393890976291ead6b1cd16a427e2f697 (patch) | |
tree | 17e74a429b0a6a268e881ae83a43cf7c30ca8020 /api | |
parent | 0599b1b5fef797f9b06d52ccbc234386e4e13393 (diff) | |
download | mongo-d6b4ab56393890976291ead6b1cd16a427e2f697.tar.gz |
Implement the LevelDB Cache class, so that applications can safely delete the object we give them. Bump the cache size so that it can include at least 25 chunks.
Diffstat (limited to 'api')
-rw-r--r-- | api/leveldb/leveldb_wt.cc | 20 | ||||
-rw-r--r-- | api/leveldb/leveldb_wt.h | 2 |
2 files changed, 18 insertions, 4 deletions
diff --git a/api/leveldb/leveldb_wt.cc b/api/leveldb/leveldb_wt.cc index 8f515ea04a7..d76491bddc2 100644 --- a/api/leveldb/leveldb_wt.cc +++ b/api/leveldb/leveldb_wt.cc @@ -114,15 +114,25 @@ const FilterPolicy *NewBloomFilterPolicy(int bits_per_key) { return new FilterPolicyImpl(bits_per_key); } -class Cache { +Cache::~Cache() {} + +class CacheImpl : public Cache { public: - Cache(size_t capacity) : capacity_(capacity) {} + CacheImpl(size_t capacity) : Cache(), capacity_(capacity) {} + + virtual Handle* Insert(const Slice& key, void* value, size_t charge, + void (*deleter)(const Slice& key, void* value)) { return 0; } + virtual Handle* Lookup(const Slice& key) { return 0; } + virtual void Release(Handle* handle) {} + virtual void* Value(Handle* handle) { return 0; } + virtual void Erase(const Slice& key) {} + virtual uint64_t NewId() { return 0; } size_t capacity_; }; Cache *NewLRUCache(size_t capacity) { - return new Cache(capacity); + return new CacheImpl(capacity); } Status DestroyDB(const std::string& name, const Options& options) { @@ -337,8 +347,10 @@ leveldb::DB::Open(const Options &options, const std::string &name, leveldb::DB * s_conn << "exclusive,"; if (options.compression == kSnappyCompression) s_conn << "extensions=[libwiredtiger_snappy.so],"; + size_t cache_size = 25 * options.write_buffer_size; if (options.block_cache) - s_conn << "cache_size=" << ((Cache *)options.block_cache)->capacity_ << ","; + cache_size += ((CacheImpl *)options.block_cache)->capacity_; + s_conn << "cache_size=" << cache_size << ","; std::string conn_config = s_conn.str(); WT_CONNECTION *conn; diff --git a/api/leveldb/leveldb_wt.h b/api/leveldb/leveldb_wt.h index 277fd1834c9..759e8a5513d 100644 --- a/api/leveldb/leveldb_wt.h +++ b/api/leveldb/leveldb_wt.h @@ -1,6 +1,7 @@ #include "wiredtiger_config.h" #ifdef HAVE_HYPERLEVELDB +#include <hyperleveldb/cache.h> #include <hyperleveldb/comparator.h> #include <hyperleveldb/db.h> #include <hyperleveldb/env.h> @@ -11,6 +12,7 @@ #include <hyperleveldb/table_builder.h> #include <hyperleveldb/write_batch.h> #else +#include <leveldb/cache.h> #include <leveldb/comparator.h> #include <leveldb/db.h> #include <leveldb/env.h> |