Title: [147258] branches/chromium/1453/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp
Revision
147258
Author
[email protected]
Date
2013-03-29 16:24:25 -0700 (Fri, 29 Mar 2013)

Log Message

Merge 146950 "IndexedDB: Histogram cause of LevelDB write errors"

> IndexedDB: Histogram cause of LevelDB write errors
> https://bugs.webkit.org/show_bug.cgi?id=113350
> 
> Reviewed by Tony Chang.
> 
> Add histogram for source of LevelDB errors on Write in addition to
> Open.
> 
> No new tests - no good way to test histogram code.
> 
> * platform/leveldb/LevelDBDatabase.cpp:
> (WebCore::histogramLevelDBError):
> (WebCore):
> (WebCore::LevelDBDatabase::open):
> (WebCore::LevelDBDatabase::write):
> 

[email protected]
Review URL: https://codereview.chromium.org/13171005

Modified Paths

Diff

Modified: branches/chromium/1453/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp (147257 => 147258)


--- branches/chromium/1453/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp	2013-03-29 23:02:28 UTC (rev 147257)
+++ branches/chromium/1453/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp	2013-03-29 23:24:25 UTC (rev 147258)
@@ -159,6 +159,26 @@
 #endif
 }
 
+static void histogramLevelDBError(const char* histogramName, const leveldb::Status& s)
+{
+    ASSERT(!s.ok());
+    enum {
+        LevelDBNotFound,
+        LevelDBCorruption,
+        LevelDBIOError,
+        LevelDBOther,
+        LevelDBMaxError
+    };
+    int levelDBError = LevelDBOther;
+    if (s.IsNotFound())
+        levelDBError = LevelDBNotFound;
+    else if (s.IsCorruption())
+        levelDBError = LevelDBCorruption;
+    else if (s.IsIOError())
+        levelDBError = LevelDBIOError;
+    HistogramSupport::histogramEnumeration(histogramName, levelDBError, LevelDBMaxError);
+}
+
 PassOwnPtr<LevelDBDatabase> LevelDBDatabase::open(const String& fileName, const LevelDBComparator* comparator)
 {
     OwnPtr<ComparatorAdapter> comparatorAdapter = adoptPtr(new ComparatorAdapter(comparator));
@@ -167,22 +187,7 @@
     const leveldb::Status s = openDB(comparatorAdapter.get(), leveldb::IDBEnv(), fileName, &db);
 
     if (!s.ok()) {
-        enum {
-            LevelDBNotFound,
-            LevelDBCorruption,
-            LevelDBIOError,
-            LevelDBOther,
-            LevelDBMaxError
-        };
-        int levelDBError = LevelDBOther;
-        if (s.IsNotFound())
-            levelDBError = LevelDBNotFound;
-        else if (s.IsCorruption())
-            levelDBError = LevelDBCorruption;
-        else if (s.IsIOError())
-            levelDBError = LevelDBIOError;
-        HistogramSupport::histogramEnumeration("WebCore.IndexedDB.LevelDBOpenErrors", levelDBError, LevelDBMaxError);
-
+        histogramLevelDBError("WebCore.IndexedDB.LevelDBOpenErrors", s);
         histogramFreeSpace("Failure", fileName);
 
         LOG_ERROR("Failed to open LevelDB database from %s: %s", fileName.ascii().data(), s.ToString().c_str());
@@ -276,6 +281,7 @@
     const leveldb::Status s = m_db->Write(writeOptions, writeBatch.m_writeBatch.get());
     if (s.ok())
         return true;
+    histogramLevelDBError("WebCore.IndexedDB.LevelDBWriteErrors", s);
     LOG_ERROR("LevelDB write failed: %s", s.ToString().c_str());
     return false;
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to