Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1312)

Unified Diff: content/common/web_database_observer_impl.cc

Issue 9371008: Nuke from orbit corrupt websql databases. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/web_database_observer_impl.cc
===================================================================
--- content/common/web_database_observer_impl.cc (revision 121034)
+++ content/common/web_database_observer_impl.cc (working copy)
@@ -7,6 +7,7 @@
#include "base/metrics/histogram.h"
#include "base/string16.h"
#include "content/common/database_messages.h"
+#include "third_party/sqlite/sqlite3.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
@@ -98,6 +99,7 @@
int sqlite_error) {
HISTOGRAM_WEBSQL_RESULT("OpenResult", database, callsite,
websql_error, sqlite_error);
+ HandleSqliteError(database, sqlite_error);
}
void WebDatabaseObserverImpl::reportChangeVersionResult(
@@ -105,6 +107,7 @@
int sqlite_error) {
HISTOGRAM_WEBSQL_RESULT("ChangeVersionResult", database, callsite,
websql_error, sqlite_error);
+ HandleSqliteError(database, sqlite_error);
}
void WebDatabaseObserverImpl::reportStartTransactionResult(
@@ -112,6 +115,7 @@
int sqlite_error) {
HISTOGRAM_WEBSQL_RESULT("BeginResult", database, callsite,
websql_error, sqlite_error);
+ HandleSqliteError(database, sqlite_error);
}
void WebDatabaseObserverImpl::reportCommitTransactionResult(
@@ -119,6 +123,7 @@
int sqlite_error) {
HISTOGRAM_WEBSQL_RESULT("CommitResult", database, callsite,
websql_error, sqlite_error);
+ HandleSqliteError(database, sqlite_error);
}
void WebDatabaseObserverImpl::reportExecuteStatementResult(
@@ -126,6 +131,7 @@
int sqlite_error) {
HISTOGRAM_WEBSQL_RESULT("StatementResult", database, callsite,
websql_error, sqlite_error);
+ HandleSqliteError(database, sqlite_error);
}
void WebDatabaseObserverImpl::reportVacuumDatabaseResult(
@@ -138,8 +144,19 @@
UMA_HISTOGRAM_ENUMERATION("websql.Async.VacuumResult",
result, kResultHistogramSize);
}
+ HandleSqliteError(database, sqlite_error);
}
void WebDatabaseObserverImpl::WaitForAllDatabasesToClose() {
open_connections_->WaitForAllDatabasesToClose();
}
+
+void WebDatabaseObserverImpl::HandleSqliteError(
+ const WebDatabase& database, int error) {
Scott Hess - ex-Googler 2012/02/10 23:34:07 Do you have a histogram out there to tell the rela
michaeln 2012/02/11 00:34:20 Yes, see histograms scattered in this file.
Scott Hess - ex-Googler 2012/02/11 19:48:24 <decoding> surprisingly few SQLITE_CORRUPT cases!
+ if (error == SQLITE_CORRUPT || error == SQLITE_NOTADB) {
+ sender_->Send(new DatabaseHostMsg_HandleSqliteError(
+ database.securityOrigin().databaseIdentifier(),
+ database.name(),
+ error));
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698