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 34a7b873f..f41988219 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 b2aeabf9f..62431fcf4 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 1edcd84b7..31b2d5f41 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 cf9bb6583..bbfd618e9 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 56182a07d..b4df80d53 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 ab0318110..fc40d1e45 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 8849f928c..87dca2ded 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 195f3d3d6..d9e1b174a 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 ab71c5170..f1cb94921 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 4fb3531ad..4594a5700 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 d046990f3..044717dbf 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 57c557803..5d82f5d31 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 b3a917c69..24fd14091 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 e9ec8a784..d5d09b114 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 2f61e8d42..47353d6c9 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 353eff892..2690cb978 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 fcb3aa7ef..b35f115aa 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 61cc41496..82d4bee68 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 06e08935f..4c5cf8757 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 0887f6c8b..2da99ac08 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 d3cf27d35..a3a954d96 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 4555abb0f..bfec0a7e7 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 1898b5e1b..92e90bb09 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 5bcdb5651..511c66b8d 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 be393543a..0481575b2 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 2bd8d2275..c78f4b4fb 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 a08dbd31b..e7f8fd2c3 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 325d707ad..cae79bdf8 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 53761944d..0f3c73b76 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 9891c3236..f10a2d58b 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 a069893af..eaef77b32 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 67959f7f5..280310b49 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 8b96af003..7cf51976a 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 b866b2a1c..572602eb5 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 06f8bbd40..501e34d13 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 4e1e899d4..a0e812f33 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 6d65eed02..49aeb84fb 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 73d68fdda..1ee6d7b60 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 e11db52c4..6951a1430 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 d42e3060d..214d9b7a3 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 dab80fe8f..2082083b3 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 835b944f4..03b88de76 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 3791dc38c..a44310fed 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 79196d19d..5e3b47637 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 c215facfc..556b984c7 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 7fb2965f7..c1182b759 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 a39d66f34..272066718 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 6821d853f..ad543eb46 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 84ac7fca2..79111a019 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 7c66d1b85..74ea8fa49 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 8fe4442de..3355fac4c 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 35e5d22f3..0cbdd40c6 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 23851de43..9ac0868ac 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 b4446c220..ee9aab68e 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 c20b1bdfb..35ae5500d 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 240e9cacd..815abf299 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 d68b6c035..64cdcbf0f 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 6bd9b49eb..036c7d1cf 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 e75da8b9f..c44cc99bd 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 c20bb38ce..40aa318ef 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 cdf059842..9eb6f0282 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 d2ffa21be..db660cd07 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 bf92a0f19..5b545bd1a 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 ba7838c23..23728d8a2 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 a6ab964f5..2a3e1ac7c 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 33bc8a242..3d1c87fde 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 6ce06bb58..2dde4dc21 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 71d9dc564..91ddd80fa 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 9820753b7..5f9238e0c 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 7ec7ad261..682ce5b59 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 c69a386dc..cd85b4b2c 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 24a12412d..7822ebab9 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 5909e2b93..629ca3452 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 40ab99d92..9551d6a3a 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 fcb5d5b83..8f7dde226 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 c33b55278..63d177803 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 7d1ebc12b..24f1f63f4 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 8a7f1c4c6..43716715a 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 14f21f79c..dbd7a6545 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 c47b9d8dd..3993c4a75 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 a8dba0496..4cc856c06 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 2d7544d79..cfb49ceed 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 28c24017c..6db9e7707 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 938d8ff34..1d7e5c075 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 ba9e80411..4b957ee12 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 79e493e99..594811bdd 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 5127c8932..cc733483b 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 3c253be18..3f8a8a2dc 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 d19afd134..ba1818082 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 12ec3cfcd..bb95f583e 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 32484c079..1ef9f3c8a 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 760d33572..22cf27851 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 1cd0a4b2d..b0c5da813 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 05fe2794e..c3f3306d3 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 0ea5c98c9..bb9783843 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 55428e52c..9741b1afa 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 d886b4ec1..07538242e 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 02051a9da..a44f35b31 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 6f4270024..eb1bdd554 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 6f1a9c328..da4fe68bb 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 8d6cf3c96..538d09516 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 a150c1a79..824e655bd 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_