summaryrefslogtreecommitdiffstats
path: root/sql/connection.cc
diff options
context:
space:
mode:
authorshess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 18:36:58 +0000
committershess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 18:36:58 +0000
commit2f496b403b286431c3ab7bfda2e6fd309b56185e (patch)
tree5c24e5b84cd997a93740cb5dd9256b86445f21e9 /sql/connection.cc
parent2232483ba47f28646932949acd9fa5db2660b505 (diff)
downloadchromium_src-2f496b403b286431c3ab7bfda2e6fd309b56185e.zip
chromium_src-2f496b403b286431c3ab7bfda2e6fd309b56185e.tar.gz
chromium_src-2f496b403b286431c3ab7bfda2e6fd309b56185e.tar.bz2
[sql] Log tag with sqlite errors.
Log lines like: ERROR:connection.cc(1007)] sqlite error 266, errno 5: disk I/O error would be ever so much more useful if they indicated which database they were associated with. This logs the histogram tag, which indicates the logical database (the code which owns this connection). [As opposed to the filesystem name.] BUG=none Review URL: https://codereview.chromium.org/24638002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225518 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sql/connection.cc')
-rw-r--r--sql/connection.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/sql/connection.cc b/sql/connection.cc
index 0b49786..0f40779 100644
--- a/sql/connection.cc
+++ b/sql/connection.cc
@@ -641,7 +641,7 @@ bool Connection::Execute(const char* sql) {
int error = ExecuteAndReturnErrorCode(sql);
if (error != SQLITE_OK)
- error = OnSqliteError(error, NULL);
+ error = OnSqliteError(error, NULL, sql);
// This needs to be a FATAL log because the error case of arriving here is
// that there's a malformed SQL statement. This can arise in development if
@@ -702,7 +702,7 @@ scoped_refptr<Connection::StatementRef> Connection::GetUniqueStatement(
DLOG(FATAL) << "SQL compile error " << GetErrorMessage();
// It could also be database corruption.
- OnSqliteError(rc, NULL);
+ OnSqliteError(rc, NULL, sql);
return new StatementRef(NULL, NULL, false);
}
return new StatementRef(this, stmt, true);
@@ -864,7 +864,7 @@ bool Connection::OpenInternal(const std::string& file_name,
// purposes.
UMA_HISTOGRAM_SPARSE_SLOWLY("Sqlite.OpenFailure", err);
- OnSqliteError(err, NULL);
+ OnSqliteError(err, NULL, "-- sqlite3_open()");
bool was_poisoned = poisoned_;
Close();
@@ -1022,14 +1022,19 @@ void Connection::AddTaggedHistogram(const std::string& name,
histogram->Add(sample);
}
-int Connection::OnSqliteError(int err, sql::Statement *stmt) {
+int Connection::OnSqliteError(int err, sql::Statement *stmt, const char* sql) {
UMA_HISTOGRAM_SPARSE_SLOWLY("Sqlite.Error", err);
AddTaggedHistogram("Sqlite.Error", err);
// Always log the error.
- LOG(ERROR) << "sqlite error " << err
+ if (!sql && stmt)
+ sql = stmt->GetSQLStatement();
+ if (!sql)
+ sql = "-- unknown";
+ LOG(ERROR) << histogram_tag_ << " sqlite error " << err
<< ", errno " << GetLastErrno()
- << ": " << GetErrorMessage();
+ << ": " << GetErrorMessage()
+ << ", sql: " << sql;
if (!error_callback_.is_null()) {
// Fire from a copy of the callback in case of reentry into