Chromium Code Reviews| Index: third_party/leveldatabase/env_chromium.cc |
| diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc |
| index 4a6f9a34ab6836e408c4167357c8d668d465af6d..2217f626b3a87d15a19356dc3f4f311c24af13be 100644 |
| --- a/third_party/leveldatabase/env_chromium.cc |
| +++ b/third_party/leveldatabase/env_chromium.cc |
| @@ -1197,11 +1197,16 @@ class DBTracker::MemoryDumpProvider |
| public: |
| bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
| base::trace_event::ProcessMemoryDump* pmd) override { |
| + // Don't dump in background mode ("from the field") until whitelisted. |
| + if (args.level_of_detail == |
| + base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND) { |
| + return true; |
| + } |
| + |
| auto db_visitor = [](const base::trace_event::MemoryDumpArgs& args, |
| base::trace_event::ProcessMemoryDump* pmd, |
| TrackedDB* db) { |
| - std::string db_dump_name = base::StringPrintf( |
| - "leveldatabase/0x%" PRIXPTR, reinterpret_cast<uintptr_t>(db)); |
| + std::string db_dump_name = DBTracker::GetMemoryDumpName(db); |
| auto* db_dump = pmd->CreateAllocatorDump(db_dump_name.c_str()); |
| uint64_t db_memory_usage = 0; |
| @@ -1249,11 +1254,17 @@ DBTracker* DBTracker::GetInstance() { |
| return instance; |
| } |
| +std::string DBTracker::GetMemoryDumpName(leveldb::DB* tracked_db) { |
| + return base::StringPrintf("leveldatabase/0x%" PRIXPTR, |
| + reinterpret_cast<uintptr_t>(tracked_db)); |
| +} |
| + |
| leveldb::Status DBTracker::OpenDatabase(const leveldb::Options& options, |
| const std::string& name, |
| TrackedDB** dbptr) { |
| leveldb::DB* db = nullptr; |
| auto status = leveldb::DB::Open(options, name, &db); |
| + CHECK((status.ok() && db) || (!status.ok() && !db)); |
|
Marijn Kruisselbrink
2017/07/18 17:12:25
nit: might be slightly nicer as something like CHE
DmitrySkiba
2017/07/18 19:01:05
I like the way it's now because it explicitly list
|
| if (status.ok()) { |
| // TrackedDBImpl ctor adds the instance to the tracker. |
| *dbptr = new TrackedDBImpl(GetInstance(), name, db); |