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 7a0f4ad03f18b378b52d94398510e54e6ccb05a4..c3f730dd45928f0cdc1be2d56352439398f4c342 100644 |
| --- a/third_party/leveldatabase/env_chromium.cc |
| +++ b/third_party/leveldatabase/env_chromium.cc |
| @@ -1193,11 +1193,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; |
| @@ -1245,11 +1250,17 @@ DBTracker* DBTracker::GetInstance() { |
| return instance; |
| } |
| +std::string DBTracker::GetMemoryDumpName(leveldb::DB* tracked_db) { |
| + return base::StringPrintf("leveldatabase/0x%" PRIXPTR, |
|
pwnall
2017/07/07 22:30:29
nit: I'd prefer that GetMemoryDumpName() DCHECKs t
DmitrySkiba
2017/07/17 22:09:25
I can see value in that DCHECK, but I'm not sure w
|
| + 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)); |
| if (status.ok()) { |
| // TrackedDBImpl ctor adds the instance to the tracker. |
| *dbptr = new TrackedDBImpl(GetInstance(), name, db); |