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

Side by Side Diff: third_party/leveldatabase/env_chromium.cc

Issue 862723002: leveldb: Moved to LevelDBEnv.IOError.BFE histogram entries. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The LevelDB Authors. All rights reserved. 1 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. See the AUTHORS file for names of contributors. 3 // found in the LICENSE file. See the AUTHORS file for names of contributors.
4 4
5 #include "third_party/leveldatabase/env_chromium.h" 5 #include "third_party/leveldatabase/env_chromium.h"
6 6
7 #if defined(OS_POSIX) 7 #if defined(OS_POSIX)
8 #include <dirent.h> 8 #include <dirent.h>
9 #include <sys/types.h> 9 #include <sys/types.h>
10 #endif 10 #endif
11 11
12 #include "base/debug/trace_event.h" 12 #include "base/debug/trace_event.h"
13 #include "base/files/file_util.h" 13 #include "base/files/file_util.h"
14 #include "base/lazy_instance.h" 14 #include "base/lazy_instance.h"
15 #include "base/memory/shared_memory.h" 15 #include "base/memory/shared_memory.h"
16 #include "base/metrics/histogram.h" 16 #include "base/metrics/histogram.h"
17 #include "base/process/process_metrics.h" 17 #include "base/process/process_metrics.h"
18 #include "base/stl_util.h" 18 #include "base/stl_util.h"
19 #include "base/strings/stringprintf.h"
19 #include "base/strings/utf_string_conversions.h" 20 #include "base/strings/utf_string_conversions.h"
20 #include "third_party/leveldatabase/chromium_logger.h" 21 #include "third_party/leveldatabase/chromium_logger.h"
21 #include "third_party/re2/re2/re2.h" 22 #include "third_party/re2/re2/re2.h"
22 23
23 using base::FilePath; 24 using base::FilePath;
24 using leveldb::FileLock; 25 using leveldb::FileLock;
25 using leveldb::Slice; 26 using leveldb::Slice;
26 using leveldb::Status; 27 using leveldb::Status;
27 28
28 namespace leveldb_env { 29 namespace leveldb_env {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 if (make_backup_ && file_type_ == kTable) 320 if (make_backup_ && file_type_ == kTable)
320 uma_logger_->RecordBackupResult(ChromiumEnv::MakeBackup(filename_)); 321 uma_logger_->RecordBackupResult(ChromiumEnv::MakeBackup(filename_));
321 322
322 return Status::OK(); 323 return Status::OK();
323 } 324 }
324 325
325 class IDBEnv : public ChromiumEnv { 326 class IDBEnv : public ChromiumEnv {
326 public: 327 public:
327 IDBEnv() : ChromiumEnv() { 328 IDBEnv() : ChromiumEnv() {
328 name_ = "LevelDBEnv.IDB"; 329 name_ = "LevelDBEnv.IDB";
330 uma_ioerror_base_name_ = name_ + ".IOError.PFE";
329 make_backup_ = true; 331 make_backup_ = true;
330 } 332 }
331 }; 333 };
332 334
333 base::LazyInstance<IDBEnv>::Leaky idb_env = LAZY_INSTANCE_INITIALIZER; 335 base::LazyInstance<IDBEnv>::Leaky idb_env = LAZY_INSTANCE_INITIALIZER;
334 336
335 base::LazyInstance<ChromiumEnv>::Leaky default_env = LAZY_INSTANCE_INITIALIZER; 337 base::LazyInstance<ChromiumEnv>::Leaky default_env = LAZY_INSTANCE_INITIALIZER;
336 338
337 } // unnamed namespace 339 } // unnamed namespace
338 340
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 original_table_name.ReplaceExtension(backup_table_extension); 524 original_table_name.ReplaceExtension(backup_table_extension);
523 return base::CopyFile(original_table_name, backup_table_name); 525 return base::CopyFile(original_table_name, backup_table_name);
524 } 526 }
525 527
526 ChromiumEnv::ChromiumEnv() 528 ChromiumEnv::ChromiumEnv()
527 : name_("LevelDBEnv"), 529 : name_("LevelDBEnv"),
528 make_backup_(false), 530 make_backup_(false),
529 bgsignal_(&mu_), 531 bgsignal_(&mu_),
530 started_bgthread_(false), 532 started_bgthread_(false),
531 kMaxRetryTimeMillis(1000) { 533 kMaxRetryTimeMillis(1000) {
534 uma_ioerror_base_name_ = name_ + ".IOError.PFE";
dgrogan 2015/01/21 01:47:56 maybe use bFE to indicate base::File::Error instea
cmumford 2015/02/13 22:15:52 I started with that originally, but eventually got
532 } 535 }
533 536
534 ChromiumEnv::~ChromiumEnv() { 537 ChromiumEnv::~ChromiumEnv() {
535 // In chromium, ChromiumEnv is leaked. It'd be nice to add NOTREACHED here to 538 // In chromium, ChromiumEnv is leaked. It'd be nice to add NOTREACHED here to
536 // ensure that behavior isn't accidentally changed, but there's an instance in 539 // ensure that behavior isn't accidentally changed, but there's an instance in
537 // a unit test that is deleted. 540 // a unit test that is deleted.
538 } 541 }
539 542
540 bool ChromiumEnv::FileExists(const std::string& fname) { 543 bool ChromiumEnv::FileExists(const std::string& fname) {
541 return base::PathExists(FilePath::FromUTF8Unsafe(fname)); 544 return base::PathExists(FilePath::FromUTF8Unsafe(fname));
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 927
925 void ChromiumEnv::RecordBackupResult(bool result) const { 928 void ChromiumEnv::RecordBackupResult(bool result) const {
926 std::string uma_name(name_); 929 std::string uma_name(name_);
927 uma_name.append(".TableBackup"); 930 uma_name.append(".TableBackup");
928 base::BooleanHistogram::FactoryGet( 931 base::BooleanHistogram::FactoryGet(
929 uma_name, base::Histogram::kUmaTargetedHistogramFlag)->AddBoolean(result); 932 uma_name, base::Histogram::kUmaTargetedHistogramFlag)->AddBoolean(result);
930 } 933 }
931 934
932 base::HistogramBase* ChromiumEnv::GetOSErrorHistogram(MethodID method, 935 base::HistogramBase* ChromiumEnv::GetOSErrorHistogram(MethodID method,
933 int limit) const { 936 int limit) const {
934 std::string uma_name(name_); 937 std::string uma_name;
935 // TODO(dgrogan): This is probably not the best way to concatenate strings. 938 base::StringAppendF(&uma_name, "%s.%s", uma_ioerror_base_name_.c_str(),
936 uma_name.append(".IOError.").append(MethodIDToString(method)); 939 MethodIDToString(method));
937 return base::LinearHistogram::FactoryGet(uma_name, 1, limit, limit + 1, 940 return base::LinearHistogram::FactoryGet(uma_name, 1, limit, limit + 1,
938 base::Histogram::kUmaTargetedHistogramFlag); 941 base::Histogram::kUmaTargetedHistogramFlag);
939 } 942 }
940 943
941 base::HistogramBase* ChromiumEnv::GetMethodIOErrorHistogram() const { 944 base::HistogramBase* ChromiumEnv::GetMethodIOErrorHistogram() const {
942 std::string uma_name(name_); 945 return base::LinearHistogram::FactoryGet(
943 uma_name.append(".IOError"); 946 uma_ioerror_base_name_, 1, kNumEntries, kNumEntries + 1,
944 return base::LinearHistogram::FactoryGet(uma_name, 1, kNumEntries, 947 base::Histogram::kUmaTargetedHistogramFlag);
945 kNumEntries + 1, base::Histogram::kUmaTargetedHistogramFlag);
946 } 948 }
947 949
948 base::HistogramBase* ChromiumEnv::GetMaxFDHistogram( 950 base::HistogramBase* ChromiumEnv::GetMaxFDHistogram(
949 const std::string& type) const { 951 const std::string& type) const {
950 std::string uma_name(name_); 952 std::string uma_name(name_);
951 uma_name.append(".MaxFDs.").append(type); 953 uma_name.append(".MaxFDs.").append(type);
952 // These numbers make each bucket twice as large as the previous bucket. 954 // These numbers make each bucket twice as large as the previous bucket.
953 const int kFirstEntry = 1; 955 const int kFirstEntry = 1;
954 const int kLastEntry = 65536; 956 const int kLastEntry = 65536;
955 const int kNumBuckets = 18; 957 const int kNumBuckets = 18;
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 1086
1085 Env* IDBEnv() { 1087 Env* IDBEnv() {
1086 return leveldb_env::idb_env.Pointer(); 1088 return leveldb_env::idb_env.Pointer();
1087 } 1089 }
1088 1090
1089 Env* Env::Default() { 1091 Env* Env::Default() {
1090 return leveldb_env::default_env.Pointer(); 1092 return leveldb_env::default_env.Pointer();
1091 } 1093 }
1092 1094
1093 } // namespace leveldb 1095 } // namespace leveldb
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698