summaryrefslogtreecommitdiffstats
path: root/google_apis
diff options
context:
space:
mode:
authorcmumford <cmumford@chromium.org>2015-07-14 13:39:00 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-14 20:39:40 +0000
commit9e01ac80441c304361ce1e71df7b5d30108ee38a (patch)
tree6cfd3351f7befb181b9cfa97e4821a3e766d92aa /google_apis
parent0cb1dabcd1c0c2cd802880a72f7ffa48c5cca2b3 (diff)
downloadchromium_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.cc4
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();