diff options
author | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-26 18:36:58 +0000 |
---|---|---|
committer | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-26 18:36:58 +0000 |
commit | 2f496b403b286431c3ab7bfda2e6fd309b56185e (patch) | |
tree | 5c24e5b84cd997a93740cb5dd9256b86445f21e9 /sql/connection.cc | |
parent | 2232483ba47f28646932949acd9fa5db2660b505 (diff) | |
download | chromium_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.cc | 17 |
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 |