summaryrefslogtreecommitdiff
path: root/util/env.cc
diff options
context:
space:
mode:
authorSanjay Ghemawat <sanjay@google.com>2014-12-11 08:13:18 -0800
committerChris Mumford <cmumford@chromium.org>2015-08-11 14:56:39 -0700
commitac1d69da31205a979b5a8510f33c31ae977530f0 (patch)
treea1bbfceb74a93d34bda9544f8ad62f3555884805 /util/env.cc
parent77948e7eec0613fb5cbecb7e320b9498607030b5 (diff)
downloadleveldb-ac1d69da31205a979b5a8510f33c31ae977530f0.tar.gz
LevelDB now attempts to reuse the preceding MANIFEST and log file when re-opened.
(Based on a suggestion by cmumford.) "open" benchmark on my workstation speeds up significantly since we can now avoid three fdatasync calls and a compaction per open: Before: ~80000 microseconds After: ~130 microseconds Details: (1) Added Options::reuse_logs (currently defaults to false) to control new behavior. The intention is to change the default to true after some baking. (2) Added Env::NewAppendableFile() whose default implementation returns a not-supported error. (3) VersionSet::Recovery attempts to reuse the MANIFEST from which it is recovering. (4) DBImpl recovery attempts to reuse the last log file and memtable. (5) db_test.cc now tests a new configuration that sets reuse_logs to true. (6) fault_injection_test also tests a reuse_logs==true config. (7) Added a new recovery_test.
Diffstat (limited to 'util/env.cc')
-rw-r--r--util/env.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/util/env.cc b/util/env.cc
index c2600e9..c58a082 100644
--- a/util/env.cc
+++ b/util/env.cc
@@ -9,6 +9,10 @@ namespace leveldb {
Env::~Env() {
}
+Status Env::NewAppendableFile(const std::string& fname, WritableFile** result) {
+ return Status::NotSupported("NewAppendableFile", fname);
+}
+
SequentialFile::~SequentialFile() {
}