diff options
| author | cmumford <cmumford@chromium.org> | 2015-07-06 17:05:36 -0700 | 
|---|---|---|
| committer | Commit bot <commit-bot@chromium.org> | 2015-07-07 00:06:22 +0000 | 
| commit | 3d018679925b16a6ca0cf6f36198ca1d740e9097 (patch) | |
| tree | 7bcb5271ccb6fa98e91b6a864be4696abd8908f3 | |
| parent | a4074d4a7ecf4b53bf4bc10144f144de7d52add5 (diff) | |
| download | chromium_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.cc | 5 | ||||
| -rw-r--r-- | third_party/leveldatabase/env_chromium.cc | 16 | ||||
| -rw-r--r-- | third_party/leveldatabase/env_chromium.h | 15 | ||||
| -rw-r--r-- | tools/metrics/histograms/histograms.xml | 14 | 
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> | 
