summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcmumford <cmumford@chromium.org>2015-07-06 17:05:36 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-07 00:06:22 +0000
commit3d018679925b16a6ca0cf6f36198ca1d740e9097 (patch)
tree7bcb5271ccb6fa98e91b6a864be4696abd8908f3
parenta4074d4a7ecf4b53bf4bc10144f144de7d52add5 (diff)
downloadchromium_src-3d018679925b16a6ca0cf6f36198ca1d740e9097.zip
chromium_src-3d018679925b16a6ca0cf6f36198ca1d740e9097.tar.gz
chromium_src-3d018679925b16a6ca0cf6f36198ca1d740e9097.tar.bz2
Logging to UMA status of commit to the sessionStorage db.
Logging to SessionStorageDatabase.Commit. BUG=497962 Review URL: https://codereview.chromium.org/1214903004 Cr-Commit-Position: refs/heads/master@{#337525}
-rw-r--r--content/browser/dom_storage/session_storage_database.cc5
-rw-r--r--third_party/leveldatabase/env_chromium.cc16
-rw-r--r--third_party/leveldatabase/env_chromium.h15
-rw-r--r--tools/metrics/histograms/histograms.xml14
4 files changed, 49 insertions, 1 deletions
diff --git a/content/browser/dom_storage/session_storage_database.cc b/content/browser/dom_storage/session_storage_database.cc
index 62d6430..be3a353 100644
--- a/content/browser/dom_storage/session_storage_database.cc
+++ b/content/browser/dom_storage/session_storage_database.cc
@@ -134,7 +134,7 @@ bool SessionStorageDatabase::CommitAreaChanges(
bool clear_all_first,
const DOMStorageValuesMap& changes) {
// Even if |changes| is empty, we need to write the appropriate placeholders
- // in the database, so that it can be later shallow-copied succssfully.
+ // in the database, so that it can be later shallow-copied successfully.
if (!LazyOpen(true))
return false;
DBOperation operation(this);
@@ -175,6 +175,9 @@ bool SessionStorageDatabase::CommitAreaChanges(
WriteValuesToMap(map_id, changes, &batch);
leveldb::Status s = db_->Write(leveldb::WriteOptions(), &batch);
+ UMA_HISTOGRAM_ENUMERATION("SessionStorageDatabase.Commit",
+ leveldb_env::GetLevelDBStatusUMAValue(s),
+ leveldb_env::LEVELDB_STATUS_MAX);
return DatabaseErrorCheck(s.ok());
}
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc
index a8925b5..6f2f844 100644
--- a/third_party/leveldatabase/env_chromium.cc
+++ b/third_party/leveldatabase/env_chromium.cc
@@ -1059,6 +1059,22 @@ void ChromiumEnv::StartThread(void (*function)(void* arg), void* arg) {
new Thread(function, arg); // Will self-delete.
}
+LevelDBStatusValue GetLevelDBStatusUMAValue(const leveldb::Status& s) {
+ if (s.ok())
+ return LEVELDB_STATUS_OK;
+ if (s.IsNotFound())
+ return LEVELDB_STATUS_NOT_FOUND;
+ if (s.IsCorruption())
+ return LEVELDB_STATUS_CORRUPTION;
+ if (s.IsNotSupportedError())
+ return LEVELDB_STATUS_NOT_SUPPORTED;
+ if (s.IsIOError())
+ return LEVELDB_STATUS_IO_ERROR;
+ // TODO(cmumford): IsInvalidArgument() was just added to leveldb. Use this
+ // function once that change goes to the public repository.
+ return LEVELDB_STATUS_INVALID_ARGUMENT;
+}
+
} // namespace leveldb_env
namespace leveldb {
diff --git a/third_party/leveldatabase/env_chromium.h b/third_party/leveldatabase/env_chromium.h
index 55a064a..6b288b8 100644
--- a/third_party/leveldatabase/env_chromium.h
+++ b/third_party/leveldatabase/env_chromium.h
@@ -47,6 +47,21 @@ enum MethodID {
kNumEntries
};
+// leveldb::Status::Code values are mapped to these values for UMA logging.
+// Do not change/delete these values as you will break reporting for older
+// copies of Chrome. Only add new values to the end.
+enum LevelDBStatusValue {
+ LEVELDB_STATUS_OK = 0,
+ LEVELDB_STATUS_NOT_FOUND,
+ LEVELDB_STATUS_CORRUPTION,
+ LEVELDB_STATUS_NOT_SUPPORTED,
+ LEVELDB_STATUS_INVALID_ARGUMENT,
+ LEVELDB_STATUS_IO_ERROR,
+ LEVELDB_STATUS_MAX
+};
+
+LevelDBStatusValue GetLevelDBStatusUMAValue(const leveldb::Status& s);
+
// The default value for leveldb::Options::reuse_logs. Currently log reuse is an
// experimental feature in leveldb. More info at:
// https://github.com/google/leveldb/commit/251ebf5dc70129ad3
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 746f5abb..7b74ba6 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -38081,6 +38081,11 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</summary>
</histogram>
+<histogram name="SessionStorageDatabase.Commit" enum="LevelDBStatus">
+ <owner>cmumford@chromium.org</owner>
+ <summary>The result of a commit to the sessionStorage database.</summary>
+</histogram>
+
<histogram name="SessionStorageDatabase.Open" enum="SessionStorageDatabaseOpen">
<owner>michaeln@chromium.org</owner>
<summary>
@@ -59640,6 +59645,15 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<int value="256" label="FILE_NOT_SPECIFIED"/>
</enum>
+<enum name="LevelDBStatus" type="int">
+ <int value="0" label="OK"/>
+ <int value="1" label="Not Found"/>
+ <int value="2" label="Corruption"/>
+ <int value="3" label="Not Supported"/>
+ <int value="4" label="Invalid Argument"/>
+ <int value="5" label="IO Error"/>
+</enum>
+
<enum name="LibraryLoadFromApkStatus" type="int">
<int value="0" label="Unknown"/>
<int value="1" label="Not supported">obsolete</int>