diff options
author | cmumford <cmumford@chromium.org> | 2015-07-14 13:39:00 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-14 20:39:40 +0000 |
commit | 9e01ac80441c304361ce1e71df7b5d30108ee38a (patch) | |
tree | 6cfd3351f7befb181b9cfa97e4821a3e766d92aa /google_apis | |
parent | 0cb1dabcd1c0c2cd802880a72f7ffa48c5cca2b3 (diff) | |
download | chromium_src-9e01ac80441c304361ce1e71df7b5d30108ee38a.zip chromium_src-9e01ac80441c304361ce1e71df7b5d30108ee38a.tar.gz chromium_src-9e01ac80441c304361ce1e71df7b5d30108ee38a.tar.bz2 |
Improved UMA logging for GCM's database open results.
Previously, if an attempt to open a leveldb (by GCM) failed (for any reason)
then GCM.LoadStatus would be logged with OPENING_STORE_FAILED - essentially
a success/fail result. This change logs the actual leveldb error code.
Additionally, added the leveldb paranoid_checks setting. This greatly improves
the ability to detect a corrupt database with only a ~1% performance hit.
Without it a corrupt database could be opened, and a leveldb function would
fail at a later time.
BUG=508330
Review URL: https://codereview.chromium.org/1241453002
Cr-Commit-Position: refs/heads/master@{#338731}
Diffstat (limited to 'google_apis')
-rw-r--r-- | google_apis/gcm/engine/gcm_store_impl.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/google_apis/gcm/engine/gcm_store_impl.cc b/google_apis/gcm/engine/gcm_store_impl.cc index 3b9dd0a..a4cbfe2 100644 --- a/google_apis/gcm/engine/gcm_store_impl.cc +++ b/google_apis/gcm/engine/gcm_store_impl.cc @@ -294,9 +294,13 @@ LoadStatus GCMStoreImpl::Backend::OpenStoreAndLoadData(StoreOpenMode open_mode, leveldb::Options options; options.create_if_missing = open_mode == CREATE_IF_MISSING; options.reuse_logs = leveldb_env::kDefaultLogReuseOptionValue; + options.paranoid_checks = true; leveldb::DB* db; leveldb::Status status = leveldb::DB::Open(options, path_.AsUTF8Unsafe(), &db); + UMA_HISTOGRAM_ENUMERATION("GCM.Database.Open", + leveldb_env::GetLevelDBStatusUMAValue(status), + leveldb_env::LEVELDB_STATUS_MAX); if (!status.ok()) { LOG(ERROR) << "Failed to open database " << path_.value() << ": " << status.ToString(); |