Commit 71c34d40 authored by dgrogan@chromium.org's avatar dgrogan@chromium.org

Histogram failure reasons for 3 more LevelDB env methods.

This will give us reasons for 6 of the top 7 most common failing methods. RenameFile doesn't have a histogram because base::ReplaceFile only returns a bool. Plumbing an error value is planned.

BUG=225051


Review URL: https://chromiumcodereview.appspot.com/13838003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193012 0039d316-1c4b-4281-b951-d872f2087c98
parent 59adb115
...@@ -340,8 +340,9 @@ class ChromiumWritableFile : public WritableFile { ...@@ -340,8 +340,9 @@ class ChromiumWritableFile : public WritableFile {
virtual Status Flush() { virtual Status Flush() {
Status result; Status result;
if (HANDLE_EINTR(fflush_unlocked(file_))) { if (HANDLE_EINTR(fflush_unlocked(file_))) {
result = Status::IOError(filename_, strerror(errno)); int saved_errno = errno;
uma_logger_->RecordErrorAt(kWritableFileFlush); result = Status::IOError(filename_, strerror(saved_errno));
uma_logger_->RecordSpecificError(kWritableFileFlush, saved_errno);
} }
return result; return result;
} }
...@@ -382,8 +383,9 @@ class ChromiumEnv : public Env, public UMALogger { ...@@ -382,8 +383,9 @@ class ChromiumEnv : public Env, public UMALogger {
FILE* f = fopen_internal(fname.c_str(), "rb"); FILE* f = fopen_internal(fname.c_str(), "rb");
if (f == NULL) { if (f == NULL) {
*result = NULL; *result = NULL;
RecordErrorAt(kNewSequentialFile); int saved_errno = errno;
return Status::IOError(fname, strerror(errno)); RecordSpecificError(kNewSequentialFile, saved_errno);
return Status::IOError(fname, strerror(saved_errno));
} else { } else {
*result = new ChromiumSequentialFile(fname, f, this); *result = new ChromiumSequentialFile(fname, f, this);
return Status::OK(); return Status::OK();
...@@ -614,8 +616,9 @@ class ChromiumEnv : public Env, public UMALogger { ...@@ -614,8 +616,9 @@ class ChromiumEnv : public Env, public UMALogger {
FILE* f = fopen_internal(fname.c_str(), "w"); FILE* f = fopen_internal(fname.c_str(), "w");
if (f == NULL) { if (f == NULL) {
*result = NULL; *result = NULL;
RecordErrorAt(kNewLogger); int saved_errno = errno;
return Status::IOError(fname, strerror(errno)); RecordSpecificError(kNewLogger, saved_errno);
return Status::IOError(fname, strerror(saved_errno));
} else { } else {
if (!sync_parent(fname)) { if (!sync_parent(fname)) {
fclose(f); fclose(f);
...@@ -730,6 +733,9 @@ void ChromiumEnv::InitHistograms(const std::string& uma_title) { ...@@ -730,6 +733,9 @@ void ChromiumEnv::InitHistograms(const std::string& uma_title) {
uma_name.append("."); uma_name.append(".");
MakeErrnoHistogram(uma_name, kWritableFileAppend); MakeErrnoHistogram(uma_name, kWritableFileAppend);
MakeErrnoHistogram(uma_name, kNewSequentialFile);
MakeErrnoHistogram(uma_name, kWritableFileFlush);
MakeErrnoHistogram(uma_name, kNewLogger);
MakePlatformFileErrorHistogram(uma_name, kNewRandomAccessFile); MakePlatformFileErrorHistogram(uma_name, kNewRandomAccessFile);
MakePlatformFileErrorHistogram(uma_name, kLockFile); MakePlatformFileErrorHistogram(uma_name, kLockFile);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment