From 36a5f8ed7f9fb3373236d5eace4f5fea369856ee Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Mon, 31 Oct 2011 17:22:06 +0000 Subject: [PATCH] A number of fixes: - Replace raw slice comparison with a call to user comparator. Added test for custom comparators. - Fix end of namespace comments. - Fixed bug in picking inputs for a level-0 compaction. When finding overlapping files, the covered range may expand as files are added to the input set. We now correctly expand the range when this happens instead of continuing to use the old range. For example, suppose L0 contains files with the following ranges: F1: a .. d F2: c .. g F3: f .. j and the initial compaction target is F3. We used to search for range f..j which yielded {F2,F3}. However we now expand the range as soon as another file is added. In this case, when F2 is added, we expand the range to c..j and restart the search. That picks up file F1 as well. This change fixes a bug related to deleted keys showing up incorrectly after a compaction as described in Issue 44. (Sync with upstream @25072954) --- db/builder.cc | 2 +- db/builder.h | 2 +- db/corruption_test.cc | 2 +- db/db_bench.cc | 4 +- db/db_impl.cc | 4 +- db/db_impl.h | 2 +- db/db_iter.cc | 2 +- db/db_iter.h | 2 +- db/db_test.cc | 102 +++++++++++++++++++++++++++++++- db/dbformat.cc | 2 +- db/dbformat.h | 4 +- db/dbformat_test.cc | 2 +- db/filename.cc | 2 +- db/filename.h | 2 +- db/filename_test.cc | 2 +- db/log_format.h | 4 +- db/log_reader.cc | 4 +- db/log_reader.h | 4 +- db/log_test.cc | 4 +- db/log_writer.cc | 4 +- db/log_writer.h | 4 +- db/memtable.cc | 2 +- db/memtable.h | 2 +- db/repair.cc | 4 +- db/skiplist.h | 2 +- db/skiplist_test.cc | 2 +- db/snapshot.h | 2 +- db/table_cache.cc | 2 +- db/table_cache.h | 2 +- db/version_edit.cc | 2 +- db/version_edit.h | 2 +- db/version_edit_test.cc | 2 +- db/version_set.cc | 36 +++++++---- db/version_set.h | 2 +- db/version_set_test.cc | 2 +- db/write_batch.cc | 4 +- db/write_batch_internal.h | 2 +- db/write_batch_test.cc | 2 +- doc/bench/db_bench_sqlite3.cc | 4 +- doc/bench/db_bench_tree_db.cc | 4 +- helpers/memenv/memenv.cc | 4 +- helpers/memenv/memenv.h | 2 +- helpers/memenv/memenv_test.cc | 2 +- include/leveldb/cache.h | 2 +- include/leveldb/comparator.h | 2 +- include/leveldb/db.h | 2 +- include/leveldb/env.h | 2 +- include/leveldb/iterator.h | 2 +- include/leveldb/options.h | 2 +- include/leveldb/slice.h | 2 +- include/leveldb/status.h | 2 +- include/leveldb/table.h | 2 +- include/leveldb/table_builder.h | 2 +- include/leveldb/write_batch.h | 2 +- port/atomic_pointer.h | 4 +- port/port_android.cc | 4 +- port/port_android.h | 4 +- port/port_example.h | 4 +- port/port_posix.cc | 4 +- table/block.cc | 2 +- table/block.h | 2 +- table/block_builder.cc | 2 +- table/block_builder.h | 2 +- table/format.cc | 2 +- table/format.h | 2 +- table/iterator.cc | 4 +- table/merger.cc | 4 +- table/merger.h | 2 +- table/table.cc | 2 +- table/table_builder.cc | 2 +- table/table_test.cc | 6 +- table/two_level_iterator.cc | 4 +- table/two_level_iterator.h | 2 +- util/arena.cc | 2 +- util/arena.h | 2 +- util/arena_test.cc | 2 +- util/cache.cc | 2 +- util/cache_test.cc | 2 +- util/coding.cc | 2 +- util/coding.h | 2 +- util/coding_test.cc | 2 +- util/comparator.cc | 4 +- util/crc32c.cc | 4 +- util/crc32c.h | 4 +- util/crc32c_test.cc | 4 +- util/env.cc | 2 +- util/env_posix.cc | 4 +- util/env_test.cc | 2 +- util/hash.cc | 2 +- util/histogram.cc | 2 +- util/histogram.h | 2 +- util/logging.cc | 2 +- util/logging.h | 2 +- util/mutexlock.h | 2 +- util/options.cc | 2 +- util/posix_logger.h | 2 +- util/random.h | 2 +- util/status.cc | 2 +- util/testharness.cc | 4 +- util/testharness.h | 4 +- util/testutil.cc | 4 +- util/testutil.h | 4 +- 102 files changed, 258 insertions(+), 146 deletions(-) diff --git a/db/builder.cc b/db/builder.cc index 34a7b873f1..f419882197 100644 --- a/db/builder.cc +++ b/db/builder.cc @@ -85,4 +85,4 @@ Status BuildTable(const std::string& dbname, return s; } -} +} // namespace leveldb diff --git a/db/builder.h b/db/builder.h index b2aeabf9f1..62431fcf44 100644 --- a/db/builder.h +++ b/db/builder.h @@ -29,6 +29,6 @@ extern Status BuildTable(const std::string& dbname, Iterator* iter, FileMetaData* meta); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_BUILDER_H_ diff --git a/db/corruption_test.cc b/db/corruption_test.cc index 1edcd84b7d..31b2d5f416 100644 --- a/db/corruption_test.cc +++ b/db/corruption_test.cc @@ -352,7 +352,7 @@ TEST(CorruptionTest, UnrelatedKeys) { ASSERT_EQ(Value(1000, &tmp2).ToString(), v); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/db/db_bench.cc b/db/db_bench.cc index cf9bb6583a..bbfd618e90 100644 --- a/db/db_bench.cc +++ b/db/db_bench.cc @@ -288,7 +288,7 @@ struct ThreadState { } }; -} +} // namespace class Benchmark { private: @@ -829,7 +829,7 @@ class Benchmark { } }; -} +} // namespace leveldb int main(int argc, char** argv) { FLAGS_write_buffer_size = leveldb::Options().write_buffer_size; diff --git a/db/db_impl.cc b/db/db_impl.cc index 56182a07dd..b4df80d537 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -985,7 +985,7 @@ static void CleanupIteratorState(void* arg1, void* arg2) { state->mu->Unlock(); delete state; } -} +} // namespace Iterator* DBImpl::NewInternalIterator(const ReadOptions& options, SequenceNumber* latest_snapshot) { @@ -1378,4 +1378,4 @@ Status DestroyDB(const std::string& dbname, const Options& options) { return result; } -} +} // namespace leveldb diff --git a/db/db_impl.h b/db/db_impl.h index ab03181108..fc40d1e458 100644 --- a/db/db_impl.h +++ b/db/db_impl.h @@ -187,6 +187,6 @@ extern Options SanitizeOptions(const std::string& db, const InternalKeyComparator* icmp, const Options& src); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_DB_IMPL_H_ diff --git a/db/db_iter.cc b/db/db_iter.cc index 8849f928c0..87dca2ded4 100644 --- a/db/db_iter.cc +++ b/db/db_iter.cc @@ -296,4 +296,4 @@ Iterator* NewDBIterator( return new DBIter(dbname, env, user_key_comparator, internal_iter, sequence); } -} +} // namespace leveldb diff --git a/db/db_iter.h b/db/db_iter.h index 195f3d3d63..d9e1b174ab 100644 --- a/db/db_iter.h +++ b/db/db_iter.h @@ -21,6 +21,6 @@ extern Iterator* NewDBIterator( Iterator* internal_iter, const SequenceNumber& sequence); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_DB_ITER_H_ diff --git a/db/db_test.cc b/db/db_test.cc index ab71c5170d..f1cb949210 100644 --- a/db/db_test.cc +++ b/db/db_test.cc @@ -136,6 +136,33 @@ class DBTest { return result; } + // Return a string that contains all key,value pairs in order, + // formatted like "(k1->v1)(k2->v2)". + std::string Contents() { + std::vector forward; + std::string result; + Iterator* iter = db_->NewIterator(ReadOptions()); + for (iter->SeekToFirst(); iter->Valid(); iter->Next()) { + std::string s = IterStatus(iter); + result.push_back('('); + result.append(s); + result.push_back(')'); + forward.push_back(s); + } + + // Check reverse iteration results are the reverse of forward results + int matched = 0; + for (iter->SeekToLast(); iter->Valid(); iter->Prev()) { + ASSERT_LT(matched, forward.size()); + ASSERT_EQ(IterStatus(iter), forward[forward.size() - matched - 1]); + matched++; + } + ASSERT_EQ(matched, forward.size()); + + delete iter; + return result; + } + std::string AllEntriesFor(const Slice& user_key) { Iterator* iter = dbfull()->TEST_NewInternalIterator(); InternalKey target(user_key, kMaxSequenceNumber, kTypeValue); @@ -1048,6 +1075,49 @@ TEST(DBTest, OverlapInLevel0) { ASSERT_EQ("NOT_FOUND", Get("600")); } +TEST(DBTest, L0_CompactionBug_Issue44_a) { + Reopen(); + ASSERT_OK(Put("b", "v")); + Reopen(); + ASSERT_OK(Delete("b")); + ASSERT_OK(Delete("a")); + Reopen(); + ASSERT_OK(Delete("a")); + Reopen(); + ASSERT_OK(Put("a", "v")); + Reopen(); + Reopen(); + ASSERT_EQ("(a->v)", Contents()); + env_->SleepForMicroseconds(1000000); // Wait for compaction to finish + ASSERT_EQ("(a->v)", Contents()); +} + +TEST(DBTest, L0_CompactionBug_Issue44_b) { + Reopen(); + Put("",""); + Reopen(); + Delete("e"); + Put("",""); + Reopen(); + Put("c", "cv"); + Reopen(); + Put("",""); + Reopen(); + Put("",""); + env_->SleepForMicroseconds(1000000); // Wait for compaction to finish + Reopen(); + Put("d","dv"); + Reopen(); + Put("",""); + Reopen(); + Delete("d"); + Delete("b"); + Reopen(); + ASSERT_EQ("(->)(c->cv)", Contents()); + env_->SleepForMicroseconds(1000000); // Wait for compaction to finish + ASSERT_EQ("(->)(c->cv)", Contents()); +} + TEST(DBTest, ComparatorCheck) { class NewComparator : public Comparator { public: @@ -1071,6 +1141,34 @@ TEST(DBTest, ComparatorCheck) { << s.ToString(); } +TEST(DBTest, CustomComparator) { + class NumberComparator : public Comparator { + public: + virtual const char* Name() const { return "test.NumberComparator"; } + virtual int Compare(const Slice& a, const Slice& b) const { + return (strtol(a.ToString().c_str(), NULL, 0) - + strtol(b.ToString().c_str(), NULL, 0)); + } + virtual void FindShortestSeparator(std::string* s, const Slice& l) const {} + virtual void FindShortSuccessor(std::string* key) const {} + }; + NumberComparator cmp; + Options new_options; + new_options.create_if_missing = true; + new_options.comparator = &cmp; + DestroyAndReopen(&new_options); + ASSERT_OK(Put("10", "ten")); + ASSERT_OK(Put("0x14", "twenty")); + for (int i = 0; i < 2; i++) { + ASSERT_EQ("ten", Get("10")); + ASSERT_EQ("ten", Get("0xa")); + ASSERT_EQ("twenty", Get("20")); + ASSERT_EQ("twenty", Get("0x14")); + Compact("0", "9999"); + fprintf(stderr, "ss\n%s\n", DumpSSTableList().c_str()); + } +} + TEST(DBTest, ManualCompaction) { ASSERT_EQ(config::kMaxMemCompactLevel, 2) << "Need to update this test to match kMaxMemCompactLevel"; @@ -1207,7 +1305,7 @@ static void MTThreadBody(void* arg) { fprintf(stderr, "... stopping thread %d after %d ops\n", t->id, int(counter)); } -} +} // namespace TEST(DBTest, MultiThreaded) { // Initialize state @@ -1525,7 +1623,7 @@ void BM_LogAndApply(int iters, int num_base_files) { buf, iters, us, ((float)us) / iters); } -} +} // namespace leveldb int main(int argc, char** argv) { if (argc > 1 && std::string(argv[1]) == "--benchmark") { diff --git a/db/dbformat.cc b/db/dbformat.cc index 4fb3531ada..4594a5700b 100644 --- a/db/dbformat.cc +++ b/db/dbformat.cc @@ -115,4 +115,4 @@ LookupKey::LookupKey(const Slice& user_key, SequenceNumber s) { end_ = dst; } -} +} // namespace leveldb diff --git a/db/dbformat.h b/db/dbformat.h index d046990f35..044717dbf9 100644 --- a/db/dbformat.h +++ b/db/dbformat.h @@ -37,7 +37,7 @@ static const int kL0_StopWritesTrigger = 12; // space if the same key space is being repeatedly overwritten. static const int kMaxMemCompactLevel = 2; -} +} // namespace config class InternalKey; @@ -210,6 +210,6 @@ inline LookupKey::~LookupKey() { if (start_ != space_) delete[] start_; } -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_FORMAT_H_ diff --git a/db/dbformat_test.cc b/db/dbformat_test.cc index 57c5578039..5d82f5d313 100644 --- a/db/dbformat_test.cc +++ b/db/dbformat_test.cc @@ -105,7 +105,7 @@ TEST(FormatTest, InternalKeyShortestSuccessor) { ShortSuccessor(IKey("\xff\xff", 100, kTypeValue))); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/db/filename.cc b/db/filename.cc index b3a917c69c..24fd14091e 100644 --- a/db/filename.cc +++ b/db/filename.cc @@ -132,4 +132,4 @@ Status SetCurrentFile(Env* env, const std::string& dbname, return s; } -} +} // namespace leveldb diff --git a/db/filename.h b/db/filename.h index e9ec8a784d..d5d09b1146 100644 --- a/db/filename.h +++ b/db/filename.h @@ -75,6 +75,6 @@ extern Status SetCurrentFile(Env* env, const std::string& dbname, uint64_t descriptor_number); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_FILENAME_H_ diff --git a/db/filename_test.cc b/db/filename_test.cc index 2f61e8d424..47353d6c9a 100644 --- a/db/filename_test.cc +++ b/db/filename_test.cc @@ -115,7 +115,7 @@ TEST(FileNameTest, Construction) { ASSERT_EQ(kTempFile, type); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/db/log_format.h b/db/log_format.h index 353eff892b..2690cb9789 100644 --- a/db/log_format.h +++ b/db/log_format.h @@ -29,7 +29,7 @@ static const int kBlockSize = 32768; // Header is checksum (4 bytes), type (1 byte), length (2 bytes). static const int kHeaderSize = 4 + 1 + 2; -} -} +} // namespace log +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_LOG_FORMAT_H_ diff --git a/db/log_reader.cc b/db/log_reader.cc index fcb3aa7efd..b35f115aad 100644 --- a/db/log_reader.cc +++ b/db/log_reader.cc @@ -255,5 +255,5 @@ unsigned int Reader::ReadPhysicalRecord(Slice* result) { } } -} -} +} // namespace log +} // namespace leveldb diff --git a/db/log_reader.h b/db/log_reader.h index 61cc414967..82d4bee68d 100644 --- a/db/log_reader.h +++ b/db/log_reader.h @@ -102,7 +102,7 @@ class Reader { void operator=(const Reader&); }; -} -} +} // namespace log +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_LOG_READER_H_ diff --git a/db/log_test.cc b/db/log_test.cc index 06e08935fd..4c5cf87573 100644 --- a/db/log_test.cc +++ b/db/log_test.cc @@ -492,8 +492,8 @@ TEST(LogTest, ReadPastEnd) { CheckOffsetPastEndReturnsNoRecords(5); } -} -} +} // namespace log +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/db/log_writer.cc b/db/log_writer.cc index 0887f6c8b6..2da99ac088 100644 --- a/db/log_writer.cc +++ b/db/log_writer.cc @@ -99,5 +99,5 @@ Status Writer::EmitPhysicalRecord(RecordType t, const char* ptr, size_t n) { return s; } -} -} +} // namespace log +} // namespace leveldb diff --git a/db/log_writer.h b/db/log_writer.h index d3cf27d35b..a3a954d967 100644 --- a/db/log_writer.h +++ b/db/log_writer.h @@ -42,7 +42,7 @@ class Writer { void operator=(const Writer&); }; -} -} +} // namespace log +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_LOG_WRITER_H_ diff --git a/db/memtable.cc b/db/memtable.cc index 4555abb0f1..bfec0a7e7a 100644 --- a/db/memtable.cc +++ b/db/memtable.cc @@ -142,4 +142,4 @@ bool MemTable::Get(const LookupKey& key, std::string* value, Status* s) { return false; } -} +} // namespace leveldb diff --git a/db/memtable.h b/db/memtable.h index 1898b5e1b6..92e90bb099 100644 --- a/db/memtable.h +++ b/db/memtable.h @@ -86,6 +86,6 @@ class MemTable { void operator=(const MemTable&); }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_MEMTABLE_H_ diff --git a/db/repair.cc b/db/repair.cc index 5bcdb5651f..511c66b8d4 100644 --- a/db/repair.cc +++ b/db/repair.cc @@ -377,11 +377,11 @@ class Repairer { fname.c_str(), s.ToString().c_str()); } }; -} +} // namespace Status RepairDB(const std::string& dbname, const Options& options) { Repairer repairer(dbname, options); return repairer.Run(); } -} +} // namespace leveldb diff --git a/db/skiplist.h b/db/skiplist.h index be393543ad..0481575b28 100644 --- a/db/skiplist.h +++ b/db/skiplist.h @@ -375,4 +375,4 @@ bool SkipList::Contains(const Key& key) const { } } -} +} // namespace leveldb diff --git a/db/skiplist_test.cc b/db/skiplist_test.cc index 2bd8d22758..c78f4b4fb1 100644 --- a/db/skiplist_test.cc +++ b/db/skiplist_test.cc @@ -371,7 +371,7 @@ TEST(SkipTest, Concurrent3) { RunConcurrent(3); } TEST(SkipTest, Concurrent4) { RunConcurrent(4); } TEST(SkipTest, Concurrent5) { RunConcurrent(5); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/db/snapshot.h b/db/snapshot.h index a08dbd31b8..e7f8fd2c37 100644 --- a/db/snapshot.h +++ b/db/snapshot.h @@ -61,6 +61,6 @@ class SnapshotList { SnapshotImpl list_; }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_SNAPSHOT_H_ diff --git a/db/table_cache.cc b/db/table_cache.cc index 325d707ad6..cae79bdf85 100644 --- a/db/table_cache.cc +++ b/db/table_cache.cc @@ -92,4 +92,4 @@ void TableCache::Evict(uint64_t file_number) { cache_->Erase(Slice(buf, sizeof(buf))); } -} +} // namespace leveldb diff --git a/db/table_cache.h b/db/table_cache.h index 53761944d3..0f3c73b760 100644 --- a/db/table_cache.h +++ b/db/table_cache.h @@ -45,6 +45,6 @@ class TableCache { Cache* cache_; }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_TABLE_CACHE_H_ diff --git a/db/version_edit.cc b/db/version_edit.cc index 9891c32361..f10a2d58b2 100644 --- a/db/version_edit.cc +++ b/db/version_edit.cc @@ -263,4 +263,4 @@ std::string VersionEdit::DebugString() const { return r; } -} +} // namespace leveldb diff --git a/db/version_edit.h b/db/version_edit.h index a069893afa..eaef77b327 100644 --- a/db/version_edit.h +++ b/db/version_edit.h @@ -102,6 +102,6 @@ class VersionEdit { std::vector< std::pair > new_files_; }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_VERSION_EDIT_H_ diff --git a/db/version_edit_test.cc b/db/version_edit_test.cc index 67959f7f58..280310b49d 100644 --- a/db/version_edit_test.cc +++ b/db/version_edit_test.cc @@ -39,7 +39,7 @@ TEST(VersionEditTest, EncodeDecode) { TestEncodeDecode(edit); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/db/version_set.cc b/db/version_set.cc index 8b96af0037..7cf51976ae 100644 --- a/db/version_set.cc +++ b/db/version_set.cc @@ -61,7 +61,7 @@ std::string IntSetToString(const std::set& s) { result += "}"; return result; } -} +} // namespace Version::~Version() { assert(refs_ == 0); @@ -253,7 +253,8 @@ void Version::AddIterators(const ReadOptions& options, // If "*iter" points at a value or deletion for user_key, store // either the value, or a NotFound error and return true. // Else return false. -static bool GetValue(Iterator* iter, const Slice& user_key, +static bool GetValue(const Comparator* cmp, + Iterator* iter, const Slice& user_key, std::string* value, Status* s) { if (!iter->Valid()) { @@ -264,7 +265,7 @@ static bool GetValue(Iterator* iter, const Slice& user_key, *s = Status::Corruption("corrupted key for ", user_key); return true; } - if (parsed_key.user_key != user_key) { + if (cmp->Compare(parsed_key.user_key, user_key) != 0) { return false; } switch (parsed_key.type) { @@ -360,7 +361,7 @@ Status Version::Get(const ReadOptions& options, f->number, f->file_size); iter->Seek(ikey); - const bool done = GetValue(iter, user_key, value, &s); + const bool done = GetValue(ucmp, iter, user_key, value, &s); if (!iter->status().ok()) { s = iter->status(); delete iter; @@ -450,16 +451,29 @@ void Version::GetOverlappingInputs( user_end = end->user_key(); } const Comparator* user_cmp = vset_->icmp_.user_comparator(); - for (size_t i = 0; i < files_[level].size(); i++) { - FileMetaData* f = files_[level][i]; - if (begin != NULL && - user_cmp->Compare(f->largest.user_key(), user_begin) < 0) { + for (size_t i = 0; i < files_[level].size(); ) { + FileMetaData* f = files_[level][i++]; + const Slice file_start = f->smallest.user_key(); + const Slice file_limit = f->largest.user_key(); + if (begin != NULL && user_cmp->Compare(file_limit, user_begin) < 0) { // "f" is completely before specified range; skip it - } else if (end != NULL && - user_cmp->Compare(f->smallest.user_key(), user_end) > 0) { + } else if (end != NULL && user_cmp->Compare(file_start, user_end) > 0) { // "f" is completely after specified range; skip it } else { inputs->push_back(f); + if (level == 0) { + // Level-0 files may overlap each other. So check if the newly + // added file has expanded the range. If so, restart search. + if (begin != NULL && user_cmp->Compare(file_start, user_begin) < 0) { + user_begin = file_start; + inputs->clear(); + i = 0; + } else if (end != NULL && user_cmp->Compare(file_limit, user_end) > 0) { + user_end = file_limit; + inputs->clear(); + i = 0; + } + } } } } @@ -1369,4 +1383,4 @@ void Compaction::ReleaseInputs() { } } -} +} // namespace leveldb diff --git a/db/version_set.h b/db/version_set.h index b866b2a1c7..572602eb56 100644 --- a/db/version_set.h +++ b/db/version_set.h @@ -365,6 +365,6 @@ class Compaction { size_t level_ptrs_[config::kNumLevels]; }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_VERSION_SET_H_ diff --git a/db/version_set_test.cc b/db/version_set_test.cc index 06f8bbd40f..501e34d133 100644 --- a/db/version_set_test.cc +++ b/db/version_set_test.cc @@ -172,7 +172,7 @@ TEST(FindFileTest, OverlappingFiles) { ASSERT_TRUE(Overlaps("600", "700")); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/db/write_batch.cc b/db/write_batch.cc index 4e1e899d47..a0e812f334 100644 --- a/db/write_batch.cc +++ b/db/write_batch.cc @@ -120,7 +120,7 @@ class MemTableInserter : public WriteBatch::Handler { sequence_++; } }; -} +} // namespace Status WriteBatchInternal::InsertInto(const WriteBatch* b, MemTable* memtable) { @@ -135,4 +135,4 @@ void WriteBatchInternal::SetContents(WriteBatch* b, const Slice& contents) { b->rep_.assign(contents.data(), contents.size()); } -} +} // namespace leveldb diff --git a/db/write_batch_internal.h b/db/write_batch_internal.h index 6d65eed02a..49aeb84fb2 100644 --- a/db/write_batch_internal.h +++ b/db/write_batch_internal.h @@ -41,7 +41,7 @@ class WriteBatchInternal { static Status InsertInto(const WriteBatch* batch, MemTable* memtable); }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_DB_WRITE_BATCH_INTERNAL_H_ diff --git a/db/write_batch_test.cc b/db/write_batch_test.cc index 73d68fdda5..1ee6d7b60e 100644 --- a/db/write_batch_test.cc +++ b/db/write_batch_test.cc @@ -82,7 +82,7 @@ TEST(WriteBatchTest, Corruption) { PrintContents(&batch)); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/doc/bench/db_bench_sqlite3.cc b/doc/bench/db_bench_sqlite3.cc index e11db52c4d..6951a14302 100644 --- a/doc/bench/db_bench_sqlite3.cc +++ b/doc/bench/db_bench_sqlite3.cc @@ -155,7 +155,7 @@ static Slice TrimSpace(Slice s) { return Slice(s.data() + start, limit - start); } -} +} // namespace class Benchmark { private: @@ -652,7 +652,7 @@ class Benchmark { }; -} +} // namespace leveldb int main(int argc, char** argv) { for (int i = 1; i < argc; i++) { diff --git a/doc/bench/db_bench_tree_db.cc b/doc/bench/db_bench_tree_db.cc index d42e3060d9..214d9b7a34 100644 --- a/doc/bench/db_bench_tree_db.cc +++ b/doc/bench/db_bench_tree_db.cc @@ -124,7 +124,7 @@ static Slice TrimSpace(Slice s) { return Slice(s.data() + start, limit - start); } -} +} // namespace class Benchmark { private: @@ -467,7 +467,7 @@ class Benchmark { } }; -} +} // namespace leveldb int main(int argc, char** argv) { for (int i = 1; i < argc; i++) { diff --git a/helpers/memenv/memenv.cc b/helpers/memenv/memenv.cc index dab80fe8fd..2082083b3f 100644 --- a/helpers/memenv/memenv.cc +++ b/helpers/memenv/memenv.cc @@ -365,10 +365,10 @@ class InMemoryEnv : public EnvWrapper { FileSystem file_map_; // Protected by mutex_. }; -} +} // namespace Env* NewMemEnv(Env* base_env) { return new InMemoryEnv(base_env); } -} +} // namespace leveldb diff --git a/helpers/memenv/memenv.h b/helpers/memenv/memenv.h index 835b944f43..03b88de761 100644 --- a/helpers/memenv/memenv.h +++ b/helpers/memenv/memenv.h @@ -15,6 +15,6 @@ class Env; // *base_env must remain live while the result is in use. Env* NewMemEnv(Env* base_env); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_HELPERS_MEMENV_MEMENV_H_ diff --git a/helpers/memenv/memenv_test.cc b/helpers/memenv/memenv_test.cc index 3791dc38ca..a44310fed8 100644 --- a/helpers/memenv/memenv_test.cc +++ b/helpers/memenv/memenv_test.cc @@ -225,7 +225,7 @@ TEST(MemEnvTest, DBTest) { delete db; } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/include/leveldb/cache.h b/include/leveldb/cache.h index 79196d19d4..5e3b47637d 100644 --- a/include/leveldb/cache.h +++ b/include/leveldb/cache.h @@ -94,6 +94,6 @@ class Cache { void operator=(const Cache&); }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_CACHE_H_ diff --git a/include/leveldb/comparator.h b/include/leveldb/comparator.h index c215facfca..556b984c76 100644 --- a/include/leveldb/comparator.h +++ b/include/leveldb/comparator.h @@ -58,6 +58,6 @@ class Comparator { // must not be deleted. extern const Comparator* BytewiseComparator(); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_COMPARATOR_H_ diff --git a/include/leveldb/db.h b/include/leveldb/db.h index 7fb2965f7a..c1182b759c 100644 --- a/include/leveldb/db.h +++ b/include/leveldb/db.h @@ -155,6 +155,6 @@ Status DestroyDB(const std::string& name, const Options& options); // on a database that contains important information. Status RepairDB(const std::string& dbname, const Options& options); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_DB_H_ diff --git a/include/leveldb/env.h b/include/leveldb/env.h index a39d66f34f..2720667185 100644 --- a/include/leveldb/env.h +++ b/include/leveldb/env.h @@ -318,6 +318,6 @@ class EnvWrapper : public Env { Env* target_; }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_ENV_H_ diff --git a/include/leveldb/iterator.h b/include/leveldb/iterator.h index 6821d853f3..ad543eb46c 100644 --- a/include/leveldb/iterator.h +++ b/include/leveldb/iterator.h @@ -95,6 +95,6 @@ extern Iterator* NewEmptyIterator(); // Return an empty iterator with the specified status. extern Iterator* NewErrorIterator(const Status& status); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_ITERATOR_H_ diff --git a/include/leveldb/options.h b/include/leveldb/options.h index 84ac7fca22..79111a0196 100644 --- a/include/leveldb/options.h +++ b/include/leveldb/options.h @@ -182,6 +182,6 @@ struct WriteOptions { } }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_OPTIONS_H_ diff --git a/include/leveldb/slice.h b/include/leveldb/slice.h index 7c66d1b85c..74ea8fa49a 100644 --- a/include/leveldb/slice.h +++ b/include/leveldb/slice.h @@ -103,7 +103,7 @@ inline int Slice::compare(const Slice& b) const { return r; } -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_SLICE_H_ diff --git a/include/leveldb/status.h b/include/leveldb/status.h index 8fe4442de1..3355fac4cd 100644 --- a/include/leveldb/status.h +++ b/include/leveldb/status.h @@ -95,6 +95,6 @@ inline void Status::operator=(const Status& s) { } } -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_STATUS_H_ diff --git a/include/leveldb/table.h b/include/leveldb/table.h index 35e5d22f3f..0cbdd40c66 100644 --- a/include/leveldb/table.h +++ b/include/leveldb/table.h @@ -65,6 +65,6 @@ class Table { void operator=(const Table&); }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_TABLE_H_ diff --git a/include/leveldb/table_builder.h b/include/leveldb/table_builder.h index 23851de434..9ac0868ac6 100644 --- a/include/leveldb/table_builder.h +++ b/include/leveldb/table_builder.h @@ -86,6 +86,6 @@ class TableBuilder { void operator=(const TableBuilder&); }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_TABLE_BUILDER_H_ diff --git a/include/leveldb/write_batch.h b/include/leveldb/write_batch.h index b4446c2208..ee9aab68e0 100644 --- a/include/leveldb/write_batch.h +++ b/include/leveldb/write_batch.h @@ -59,6 +59,6 @@ class WriteBatch { // Intentionally copyable }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_INCLUDE_WRITE_BATCH_H_ diff --git a/port/atomic_pointer.h b/port/atomic_pointer.h index c20b1bdfbc..35ae5500dd 100644 --- a/port/atomic_pointer.h +++ b/port/atomic_pointer.h @@ -138,7 +138,7 @@ class AtomicPointer { #undef ARCH_CPU_X86_FAMILY #undef ARCH_CPU_ARM_FAMILY -} // namespace leveldb::port -} // namespace leveldb +} // namespace port +} // namespace leveldb #endif // PORT_ATOMIC_POINTER_H_ diff --git a/port/port_android.cc b/port/port_android.cc index 240e9cacdb..815abf299c 100644 --- a/port/port_android.cc +++ b/port/port_android.cc @@ -60,5 +60,5 @@ void CondVar::SignalAll() { PthreadCall("broadcast", pthread_cond_broadcast(&cv_)); } -} -} +} // namespace port +} // namespace leveldb diff --git a/port/port_android.h b/port/port_android.h index d68b6c035a..64cdcbf0ff 100644 --- a/port/port_android.h +++ b/port/port_android.h @@ -150,7 +150,7 @@ inline bool GetHeapProfile(void (*func)(void*, const char*, int), void* arg) { return false; } -} -} +} // namespace port +} // namespace leveldb #endif // STORAGE_LEVELDB_PORT_PORT_ANDROID_H_ diff --git a/port/port_example.h b/port/port_example.h index 6bd9b49ebe..036c7d1cfa 100644 --- a/port/port_example.h +++ b/port/port_example.h @@ -119,7 +119,7 @@ extern bool Snappy_Uncompress(const char* input_data, size_t input_length, // The concatenation of all "data[0,n-1]" fragments is the heap profile. extern bool GetHeapProfile(void (*func)(void*, const char*, int), void* arg); -} -} +} // namespace port +} // namespace leveldb #endif // STORAGE_LEVELDB_PORT_PORT_EXAMPLE_H_ diff --git a/port/port_posix.cc b/port/port_posix.cc index e75da8b9f7..c44cc99bd0 100644 --- a/port/port_posix.cc +++ b/port/port_posix.cc @@ -46,5 +46,5 @@ void CondVar::SignalAll() { PthreadCall("broadcast", pthread_cond_broadcast(&cv_)); } -} -} +} // namespace port +} // namespace leveldb diff --git a/table/block.cc b/table/block.cc index c20bb38ce9..40aa318ef7 100644 --- a/table/block.cc +++ b/table/block.cc @@ -260,4 +260,4 @@ Iterator* Block::NewIterator(const Comparator* cmp) { } } -} +} // namespace leveldb diff --git a/table/block.h b/table/block.h index cdf059842b..9eb6f02827 100644 --- a/table/block.h +++ b/table/block.h @@ -38,6 +38,6 @@ class Block { class Iter; }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_TABLE_BLOCK_H_ diff --git a/table/block_builder.cc b/table/block_builder.cc index d2ffa21be6..db660cd07c 100644 --- a/table/block_builder.cc +++ b/table/block_builder.cc @@ -106,4 +106,4 @@ void BlockBuilder::Add(const Slice& key, const Slice& value) { counter_++; } -} +} // namespace leveldb diff --git a/table/block_builder.h b/table/block_builder.h index bf92a0f19d..5b545bd1af 100644 --- a/table/block_builder.h +++ b/table/block_builder.h @@ -52,6 +52,6 @@ class BlockBuilder { void operator=(const BlockBuilder&); }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_TABLE_BLOCK_BUILDER_H_ diff --git a/table/format.cc b/table/format.cc index ba7838c23b..23728d8a25 100644 --- a/table/format.cc +++ b/table/format.cc @@ -132,4 +132,4 @@ Status ReadBlock(RandomAccessFile* file, return Status::OK(); } -} +} // namespace leveldb diff --git a/table/format.h b/table/format.h index a6ab964f59..2a3e1ac7cf 100644 --- a/table/format.h +++ b/table/format.h @@ -98,6 +98,6 @@ inline BlockHandle::BlockHandle() size_(~static_cast(0)) { } -} +} // namespace leveldb #endif // STORAGE_LEVELDB_TABLE_FORMAT_H_ diff --git a/table/iterator.cc b/table/iterator.cc index 33bc8a242b..3d1c87fdec 100644 --- a/table/iterator.cc +++ b/table/iterator.cc @@ -54,7 +54,7 @@ class EmptyIterator : public Iterator { private: Status status_; }; -} +} // namespace Iterator* NewEmptyIterator() { return new EmptyIterator(Status::OK()); @@ -64,4 +64,4 @@ Iterator* NewErrorIterator(const Status& status) { return new EmptyIterator(status); } -} +} // namespace leveldb diff --git a/table/merger.cc b/table/merger.cc index 6ce06bb584..2dde4dc21f 100644 --- a/table/merger.cc +++ b/table/merger.cc @@ -181,7 +181,7 @@ void MergingIterator::FindLargest() { } current_ = largest; } -} +} // namespace Iterator* NewMergingIterator(const Comparator* cmp, Iterator** list, int n) { assert(n >= 0); @@ -194,4 +194,4 @@ Iterator* NewMergingIterator(const Comparator* cmp, Iterator** list, int n) { } } -} +} // namespace leveldb diff --git a/table/merger.h b/table/merger.h index 71d9dc564a..91ddd80faa 100644 --- a/table/merger.h +++ b/table/merger.h @@ -21,6 +21,6 @@ class Iterator; extern Iterator* NewMergingIterator( const Comparator* comparator, Iterator** children, int n); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_TABLE_MERGER_H_ diff --git a/table/table.cc b/table/table.cc index 9820753b7f..5f9238e0c6 100644 --- a/table/table.cc +++ b/table/table.cc @@ -172,4 +172,4 @@ uint64_t Table::ApproximateOffsetOf(const Slice& key) const { return result; } -} +} // namespace leveldb diff --git a/table/table_builder.cc b/table/table_builder.cc index 7ec7ad2615..682ce5b597 100644 --- a/table/table_builder.cc +++ b/table/table_builder.cc @@ -224,4 +224,4 @@ uint64_t TableBuilder::FileSize() const { return rep_->offset; } -} +} // namespace leveldb diff --git a/table/table_test.cc b/table/table_test.cc index c69a386dc4..cd85b4b2c2 100644 --- a/table/table_test.cc +++ b/table/table_test.cc @@ -60,7 +60,7 @@ class ReverseKeyComparator : public Comparator { *key = Reverse(s); } }; -} +} // namespace static ReverseKeyComparator reverse_key_comparator; static void Increment(const Comparator* cmp, std::string* key) { @@ -85,7 +85,7 @@ struct STLLessThan { return cmp->Compare(Slice(a), Slice(b)) < 0; } }; -} +} // namespace class StringSink: public WritableFile { public: @@ -847,7 +847,7 @@ TEST(TableTest, ApproximateOffsetOfCompressed) { ASSERT_TRUE(Between(c.ApproximateOffsetOf("xyz"), 4000, 6000)); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/table/two_level_iterator.cc b/table/two_level_iterator.cc index 24a12412d4..7822ebab9c 100644 --- a/table/two_level_iterator.cc +++ b/table/two_level_iterator.cc @@ -169,7 +169,7 @@ void TwoLevelIterator::InitDataBlock() { } } -} +} // namespace Iterator* NewTwoLevelIterator( Iterator* index_iter, @@ -179,4 +179,4 @@ Iterator* NewTwoLevelIterator( return new TwoLevelIterator(index_iter, block_function, arg, options); } -} +} // namespace leveldb diff --git a/table/two_level_iterator.h b/table/two_level_iterator.h index 5909e2b936..629ca34525 100644 --- a/table/two_level_iterator.h +++ b/table/two_level_iterator.h @@ -29,6 +29,6 @@ extern Iterator* NewTwoLevelIterator( void* arg, const ReadOptions& options); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_TABLE_TWO_LEVEL_ITERATOR_H_ diff --git a/util/arena.cc b/util/arena.cc index 40ab99d922..9551d6a3a2 100644 --- a/util/arena.cc +++ b/util/arena.cc @@ -65,4 +65,4 @@ char* Arena::AllocateNewBlock(size_t block_bytes) { return result; } -} +} // namespace leveldb diff --git a/util/arena.h b/util/arena.h index fcb5d5b83f..8f7dde226c 100644 --- a/util/arena.h +++ b/util/arena.h @@ -63,6 +63,6 @@ inline char* Arena::Allocate(size_t bytes) { return AllocateFallback(bytes); } -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_ARENA_H_ diff --git a/util/arena_test.cc b/util/arena_test.cc index c33b55278d..63d1778034 100644 --- a/util/arena_test.cc +++ b/util/arena_test.cc @@ -61,7 +61,7 @@ TEST(ArenaTest, Simple) { } } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/util/cache.cc b/util/cache.cc index 7d1ebc12b4..24f1f63f4f 100644 --- a/util/cache.cc +++ b/util/cache.cc @@ -325,4 +325,4 @@ Cache* NewLRUCache(size_t capacity) { return new ShardedLRUCache(capacity); } -} +} // namespace leveldb diff --git a/util/cache_test.cc b/util/cache_test.cc index 8a7f1c4c66..43716715a8 100644 --- a/util/cache_test.cc +++ b/util/cache_test.cc @@ -179,7 +179,7 @@ TEST(CacheTest, NewId) { ASSERT_NE(a, b); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/util/coding.cc b/util/coding.cc index 14f21f79cc..dbd7a6545c 100644 --- a/util/coding.cc +++ b/util/coding.cc @@ -191,4 +191,4 @@ bool GetLengthPrefixedSlice(Slice* input, Slice* result) { } } -} +} // namespace leveldb diff --git a/util/coding.h b/util/coding.h index c47b9d8ddf..3993c4a755 100644 --- a/util/coding.h +++ b/util/coding.h @@ -99,6 +99,6 @@ inline const char* GetVarint32Ptr(const char* p, return GetVarint32PtrFallback(p, limit, value); } -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_CODING_H_ diff --git a/util/coding_test.cc b/util/coding_test.cc index a8dba04963..4cc856c066 100644 --- a/util/coding_test.cc +++ b/util/coding_test.cc @@ -166,7 +166,7 @@ TEST(Coding, Strings) { ASSERT_EQ("", input.ToString()); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/util/comparator.cc b/util/comparator.cc index 2d7544d794..cfb49ceed6 100644 --- a/util/comparator.cc +++ b/util/comparator.cc @@ -63,11 +63,11 @@ class BytewiseComparatorImpl : public Comparator { // *key is a run of 0xffs. Leave it alone. } }; -} +} // namespace static const BytewiseComparatorImpl bytewise; const Comparator* BytewiseComparator() { return &bytewise; } -} +} // namespace leveldb diff --git a/util/crc32c.cc b/util/crc32c.cc index 28c24017cb..6db9e77077 100644 --- a/util/crc32c.cc +++ b/util/crc32c.cc @@ -328,5 +328,5 @@ uint32_t Extend(uint32_t crc, const char* buf, size_t size) { return l ^ 0xffffffffu; } -} -} +} // namespace crc32c +} // namespace leveldb diff --git a/util/crc32c.h b/util/crc32c.h index 938d8ff34d..1d7e5c075d 100644 --- a/util/crc32c.h +++ b/util/crc32c.h @@ -39,7 +39,7 @@ inline uint32_t Unmask(uint32_t masked_crc) { return ((rot >> 17) | (rot << 15)); } -} -} +} // namespace crc32c +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_CRC32C_H_ diff --git a/util/crc32c_test.cc b/util/crc32c_test.cc index ba9e804116..4b957ee120 100644 --- a/util/crc32c_test.cc +++ b/util/crc32c_test.cc @@ -64,8 +64,8 @@ TEST(CRC, Mask) { ASSERT_EQ(crc, Unmask(Unmask(Mask(Mask(crc))))); } -} -} +} // namespace crc32c +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/util/env.cc b/util/env.cc index 79e493e992..594811bdd8 100644 --- a/util/env.cc +++ b/util/env.cc @@ -79,4 +79,4 @@ Status ReadFileToString(Env* env, const std::string& fname, std::string* data) { EnvWrapper::~EnvWrapper() { } -} +} // namespace leveldb diff --git a/util/env_posix.cc b/util/env_posix.cc index 5127c89320..cc733483b1 100644 --- a/util/env_posix.cc +++ b/util/env_posix.cc @@ -553,7 +553,7 @@ void PosixEnv::StartThread(void (*function)(void* arg), void* arg) { pthread_create(&t, NULL, &StartThreadWrapper, state)); } -} +} // namespace static pthread_once_t once = PTHREAD_ONCE_INIT; static Env* default_env; @@ -564,4 +564,4 @@ Env* Env::Default() { return default_env; } -} +} // namespace leveldb diff --git a/util/env_test.cc b/util/env_test.cc index 3c253be187..3f8a8a2dc9 100644 --- a/util/env_test.cc +++ b/util/env_test.cc @@ -95,7 +95,7 @@ TEST(EnvPosixTest, StartThread) { ASSERT_EQ(state.val, 3); } -} +} // namespace leveldb int main(int argc, char** argv) { return leveldb::test::RunAllTests(); diff --git a/util/hash.cc b/util/hash.cc index d19afd134a..ba1818082d 100644 --- a/util/hash.cc +++ b/util/hash.cc @@ -42,4 +42,4 @@ uint32_t Hash(const char* data, size_t n, uint32_t seed) { } -} +} // namespace leveldb diff --git a/util/histogram.cc b/util/histogram.cc index 12ec3cfcdb..bb95f583ea 100644 --- a/util/histogram.cc +++ b/util/histogram.cc @@ -136,4 +136,4 @@ std::string Histogram::ToString() const { return r; } -} +} // namespace leveldb diff --git a/util/histogram.h b/util/histogram.h index 32484c079d..1ef9f3c8ab 100644 --- a/util/histogram.h +++ b/util/histogram.h @@ -37,6 +37,6 @@ class Histogram { double StandardDeviation() const; }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_HISTOGRAM_H_ diff --git a/util/logging.cc b/util/logging.cc index 760d335727..22cf278512 100644 --- a/util/logging.cc +++ b/util/logging.cc @@ -78,4 +78,4 @@ bool ConsumeDecimalNumber(Slice* in, uint64_t* val) { return (digits > 0); } -} +} // namespace leveldb diff --git a/util/logging.h b/util/logging.h index 1cd0a4b2dd..b0c5da813e 100644 --- a/util/logging.h +++ b/util/logging.h @@ -42,6 +42,6 @@ extern bool ConsumeChar(Slice* in, char c); // unspecified state. extern bool ConsumeDecimalNumber(Slice* in, uint64_t* val); -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_LOGGING_H_ diff --git a/util/mutexlock.h b/util/mutexlock.h index 05fe2794e3..c3f3306d3e 100644 --- a/util/mutexlock.h +++ b/util/mutexlock.h @@ -33,7 +33,7 @@ class MutexLock { void operator=(const MutexLock&); }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_MUTEXLOCK_H_ diff --git a/util/options.cc b/util/options.cc index 0ea5c98c98..bb97838432 100644 --- a/util/options.cc +++ b/util/options.cc @@ -25,4 +25,4 @@ Options::Options() } -} +} // namespace leveldb diff --git a/util/posix_logger.h b/util/posix_logger.h index 55428e52c5..9741b1afad 100644 --- a/util/posix_logger.h +++ b/util/posix_logger.h @@ -93,6 +93,6 @@ class PosixLogger : public Logger { } }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_POSIX_LOGGER_H_ diff --git a/util/random.h b/util/random.h index d886b4ec1e..07538242ea 100644 --- a/util/random.h +++ b/util/random.h @@ -54,6 +54,6 @@ class Random { } }; -} +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_RANDOM_H_ diff --git a/util/status.cc b/util/status.cc index 02051a9da1..a44f35b314 100644 --- a/util/status.cc +++ b/util/status.cc @@ -72,4 +72,4 @@ std::string Status::ToString() const { } } -} +} // namespace leveldb diff --git a/util/testharness.cc b/util/testharness.cc index 6f4270024f..eb1bdd554a 100644 --- a/util/testharness.cc +++ b/util/testharness.cc @@ -73,5 +73,5 @@ int RandomSeed() { return result; } -} -} +} // namespace test +} // namespace leveldb diff --git a/util/testharness.h b/util/testharness.h index 6f1a9c3280..da4fe68bb4 100644 --- a/util/testharness.h +++ b/util/testharness.h @@ -132,7 +132,7 @@ void TCONCAT(_Test_,name)::_Run() extern bool RegisterTest(const char* base, const char* name, void (*func)()); -} -} +} // namespace test +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_TESTHARNESS_H_ diff --git a/util/testutil.cc b/util/testutil.cc index 8d6cf3c96e..538d09516d 100644 --- a/util/testutil.cc +++ b/util/testutil.cc @@ -47,5 +47,5 @@ extern Slice CompressibleString(Random* rnd, double compressed_fraction, return Slice(*dst); } -} -} +} // namespace test +} // namespace leveldb diff --git a/util/testutil.h b/util/testutil.h index a150c1a795..824e655bd2 100644 --- a/util/testutil.h +++ b/util/testutil.h @@ -47,7 +47,7 @@ class ErrorEnv : public EnvWrapper { } }; -} -} +} // namespace test +} // namespace leveldb #endif // STORAGE_LEVELDB_UTIL_TESTUTIL_H_