[Pkg-javascript-commits] [node-leveldown] 03/23: Don't hold onto options in DB. Hang onto block_cache and filter_policy and free those on DB close.
Andrew Kelley
andrewrk-guest at moszumanska.debian.org
Sun Jul 6 17:21:52 UTC 2014
This is an automated email from the git hooks/post-receive script.
andrewrk-guest pushed a commit to tag hyper-0.10.2
in repository node-leveldown.
commit 04ce3fe8ef5c380c4485dbe9681b8ff0f69495e5
Author: Geoff Greer <geoff at greer.fm>
Date: Sun Jan 19 19:50:32 2014 -0800
Don't hold onto options in DB. Hang onto block_cache and filter_policy and free those on DB close.
---
src/database.cc | 28 +++++++++++++---------------
src/database.h | 5 ++++-
src/database_async.cc | 8 +++++---
src/database_async.h | 3 ++-
4 files changed, 24 insertions(+), 20 deletions(-)
diff --git a/src/database.cc b/src/database.cc
index d552afa..8e1d379 100644
--- a/src/database.cc
+++ b/src/database.cc
@@ -8,7 +8,6 @@
#include <node_buffer.h>
#include "leveldb/db.h"
-#include "leveldb/filter_policy.h"
#include "leveldb/write_batch.h"
#include "leveldown.h"
@@ -26,7 +25,8 @@ Database::Database (char* location) : location(location) {
db = NULL;
currentIteratorId = 0;
pendingCloseWorker = NULL;
- openOptions = NULL;
+ blockCache = NULL;
+ filterPolicy = NULL;
};
Database::~Database () {
@@ -43,7 +43,6 @@ leveldb::Status Database::OpenDatabase (
leveldb::Options* options
, std::string location
) {
- openOptions = options;
return leveldb::DB::Open(*options, location, &db);
}
@@ -118,19 +117,14 @@ void Database::ReleaseIterator (uint32_t id) {
void Database::CloseDatabase () {
delete db;
db = NULL;
- if (openOptions == NULL) {
- return;
+ if (blockCache) {
+ delete blockCache;
+ blockCache = NULL;
}
- if (openOptions->block_cache) {
- delete openOptions->block_cache;
- openOptions->block_cache = NULL;
+ if (filterPolicy) {
+ delete filterPolicy;
+ filterPolicy = NULL;
}
- if (openOptions->filter_policy) {
- delete openOptions->filter_policy;
- openOptions->filter_policy = NULL;
- }
- delete openOptions;
- openOptions = NULL;
}
/* V8 exposed functions *****************************/
@@ -236,13 +230,17 @@ NAN_METHOD(Database::Open) {
, 16
);
+ database->blockCache = leveldb::NewLRUCache(cacheSize);
+ database->filterPolicy = leveldb::NewBloomFilterPolicy(10);
+
OpenWorker* worker = new OpenWorker(
database
, new NanCallback(callback)
+ , database->blockCache
+ , database->filterPolicy
, createIfMissing
, errorIfExists
, compression
- , cacheSize
, writeBufferSize
, blockSize
, maxOpenFiles
diff --git a/src/database.h b/src/database.h
index 21bd8ac..937ec08 100644
--- a/src/database.h
+++ b/src/database.h
@@ -10,7 +10,9 @@
#include <vector>
#include <node.h>
+#include "leveldb/cache.h"
#include "leveldb/db.h"
+#include "leveldb/filter_policy.h"
#include "nan.h"
#include "leveldown.h"
#include "iterator.h"
@@ -78,7 +80,8 @@ public:
private:
leveldb::DB* db;
- leveldb::Options* openOptions;
+ const leveldb::FilterPolicy* filterPolicy;
+ leveldb::Cache* blockCache;
char* location;
uint32_t currentIteratorId;
void(*pendingCloseWorker);
diff --git a/src/database_async.cc b/src/database_async.cc
index 394cd05..3f520b1 100644
--- a/src/database_async.cc
+++ b/src/database_async.cc
@@ -21,10 +21,11 @@ namespace leveldown {
OpenWorker::OpenWorker (
Database *database
, NanCallback *callback
+ , leveldb::Cache* blockCache
+ , const leveldb::FilterPolicy* filterPolicy
, bool createIfMissing
, bool errorIfExists
, bool compression
- , uint32_t cacheSize
, uint32_t writeBufferSize
, uint32_t blockSize
, uint32_t maxOpenFiles
@@ -32,20 +33,21 @@ OpenWorker::OpenWorker (
) : AsyncWorker(database, callback)
{
options = new leveldb::Options();
+ options->block_cache = blockCache;
+ options->filter_policy = filterPolicy;
options->create_if_missing = createIfMissing;
options->error_if_exists = errorIfExists;
options->compression = compression
? leveldb::kSnappyCompression
: leveldb::kNoCompression;
- options->block_cache = leveldb::NewLRUCache(cacheSize);
options->write_buffer_size = writeBufferSize;
options->block_size = blockSize;
options->max_open_files = maxOpenFiles;
options->block_restart_interval = blockRestartInterval;
- options->filter_policy = leveldb::NewBloomFilterPolicy(10);
};
OpenWorker::~OpenWorker () {
+ delete options;
}
void OpenWorker::Execute () {
diff --git a/src/database_async.h b/src/database_async.h
index 5209de3..5b3ee99 100644
--- a/src/database_async.h
+++ b/src/database_async.h
@@ -20,10 +20,11 @@ public:
OpenWorker (
Database *database
, NanCallback *callback
+ , leveldb::Cache* blockCache
+ , const leveldb::FilterPolicy* filterPolicy
, bool createIfMissing
, bool errorIfExists
, bool compression
- , uint32_t cacheSize
, uint32_t writeBufferSize
, uint32_t blockSize
, uint32_t maxOpenFiles
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-leveldown.git
More information about the Pkg-javascript-commits
mailing list