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

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

Issue 14163006: Rename SpecificError to OSError to reflect its source (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ToT Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <errno.h> 5 #include <errno.h>
6 #include <stdio.h> 6 #include <stdio.h>
7 7
8 #include <deque> 8 #include <deque>
9 9
10 #include "base/at_exit.h" 10 #include "base/at_exit.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 NOTREACHED(); 173 NOTREACHED();
174 return "kNumEntries"; 174 return "kNumEntries";
175 } 175 }
176 NOTREACHED(); 176 NOTREACHED();
177 return "Unknown"; 177 return "Unknown";
178 } 178 }
179 179
180 class UMALogger { 180 class UMALogger {
181 public: 181 public:
182 virtual void RecordErrorAt(MethodID method) const = 0; 182 virtual void RecordErrorAt(MethodID method) const = 0;
183 virtual void RecordSpecificError(MethodID method, int saved_errno) const = 0; 183 virtual void RecordOSError(MethodID method, int saved_errno) const = 0;
184 virtual void RecordSpecificError(MethodID method, 184 virtual void RecordOSError(MethodID method, base::PlatformFileError error)
185 base::PlatformFileError error) const = 0; 185 const = 0;
186 }; 186 };
187 187
188 } // namespace 188 } // namespace
189 189
190 namespace leveldb { 190 namespace leveldb {
191 191
192 namespace { 192 namespace {
193 193
194 class Thread; 194 class Thread;
195 195
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 if (file_ != NULL) { 315 if (file_ != NULL) {
316 // Ignoring any potential errors 316 // Ignoring any potential errors
317 fclose(file_); 317 fclose(file_);
318 } 318 }
319 } 319 }
320 320
321 virtual Status Append(const Slice& data) { 321 virtual Status Append(const Slice& data) {
322 size_t r = fwrite_unlocked(data.data(), 1, data.size(), file_); 322 size_t r = fwrite_unlocked(data.data(), 1, data.size(), file_);
323 Status result; 323 Status result;
324 if (r != data.size()) { 324 if (r != data.size()) {
325 uma_logger_->RecordSpecificError(kWritableFileAppend, errno); 325 uma_logger_->RecordOSError(kWritableFileAppend, errno);
326 result = Status::IOError(filename_, strerror(errno)); 326 result = Status::IOError(filename_, strerror(errno));
327 } 327 }
328 return result; 328 return result;
329 } 329 }
330 330
331 virtual Status Close() { 331 virtual Status Close() {
332 Status result; 332 Status result;
333 if (fclose(file_) != 0) { 333 if (fclose(file_) != 0) {
334 result = Status::IOError(filename_, strerror(errno)); 334 result = Status::IOError(filename_, strerror(errno));
335 uma_logger_->RecordErrorAt(kWritableFileClose); 335 uma_logger_->RecordErrorAt(kWritableFileClose);
336 } 336 }
337 file_ = NULL; 337 file_ = NULL;
338 return result; 338 return result;
339 } 339 }
340 340
341 virtual Status Flush() { 341 virtual Status Flush() {
342 Status result; 342 Status result;
343 if (HANDLE_EINTR(fflush_unlocked(file_))) { 343 if (HANDLE_EINTR(fflush_unlocked(file_))) {
344 int saved_errno = errno; 344 int saved_errno = errno;
345 result = Status::IOError(filename_, strerror(saved_errno)); 345 result = Status::IOError(filename_, strerror(saved_errno));
346 uma_logger_->RecordSpecificError(kWritableFileFlush, saved_errno); 346 uma_logger_->RecordOSError(kWritableFileFlush, saved_errno);
347 } 347 }
348 return result; 348 return result;
349 } 349 }
350 350
351 virtual Status Sync() { 351 virtual Status Sync() {
352 Status result; 352 Status result;
353 int error = 0; 353 int error = 0;
354 354
355 if (HANDLE_EINTR(fflush_unlocked(file_))) 355 if (HANDLE_EINTR(fflush_unlocked(file_)))
356 error = errno; 356 error = errno;
(...skipping 21 matching lines...) Expand all
378 virtual ~ChromiumEnv() { 378 virtual ~ChromiumEnv() {
379 NOTREACHED(); 379 NOTREACHED();
380 } 380 }
381 381
382 virtual Status NewSequentialFile(const std::string& fname, 382 virtual Status NewSequentialFile(const std::string& fname,
383 SequentialFile** result) { 383 SequentialFile** result) {
384 FILE* f = fopen_internal(fname.c_str(), "rb"); 384 FILE* f = fopen_internal(fname.c_str(), "rb");
385 if (f == NULL) { 385 if (f == NULL) {
386 *result = NULL; 386 *result = NULL;
387 int saved_errno = errno; 387 int saved_errno = errno;
388 RecordSpecificError(kNewSequentialFile, saved_errno); 388 RecordOSError(kNewSequentialFile, saved_errno);
389 return Status::IOError(fname, strerror(saved_errno)); 389 return Status::IOError(fname, strerror(saved_errno));
390 } else { 390 } else {
391 *result = new ChromiumSequentialFile(fname, f, this); 391 *result = new ChromiumSequentialFile(fname, f, this);
392 return Status::OK(); 392 return Status::OK();
393 } 393 }
394 } 394 }
395 395
396 virtual Status NewRandomAccessFile(const std::string& fname, 396 virtual Status NewRandomAccessFile(const std::string& fname,
397 RandomAccessFile** result) { 397 RandomAccessFile** result) {
398 int flags = ::base::PLATFORM_FILE_READ | ::base::PLATFORM_FILE_OPEN; 398 int flags = ::base::PLATFORM_FILE_READ | ::base::PLATFORM_FILE_OPEN;
399 bool created; 399 bool created;
400 ::base::PlatformFileError error_code; 400 ::base::PlatformFileError error_code;
401 ::base::PlatformFile file = ::base::CreatePlatformFile( 401 ::base::PlatformFile file = ::base::CreatePlatformFile(
402 CreateFilePath(fname), flags, &created, &error_code); 402 CreateFilePath(fname), flags, &created, &error_code);
403 if (error_code != ::base::PLATFORM_FILE_OK) { 403 if (error_code != ::base::PLATFORM_FILE_OK) {
404 *result = NULL; 404 *result = NULL;
405 RecordSpecificError(kNewRandomAccessFile, error_code); 405 RecordOSError(kNewRandomAccessFile, error_code);
406 return Status::IOError(fname, PlatformFileErrorString(error_code)); 406 return Status::IOError(fname, PlatformFileErrorString(error_code));
407 } 407 }
408 *result = new ChromiumRandomAccessFile(fname, file, this); 408 *result = new ChromiumRandomAccessFile(fname, file, this);
409 return Status::OK(); 409 return Status::OK();
410 } 410 }
411 411
412 virtual Status NewWritableFile(const std::string& fname, 412 virtual Status NewWritableFile(const std::string& fname,
413 WritableFile** result) { 413 WritableFile** result) {
414 *result = NULL; 414 *result = NULL;
415 FILE* f = fopen_internal(fname.c_str(), "wb"); 415 FILE* f = fopen_internal(fname.c_str(), "wb");
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 ::base::PlatformFileError error_code; 554 ::base::PlatformFileError error_code;
555 ::base::PlatformFile file; 555 ::base::PlatformFile file;
556 Retrier r(lockfile_time_histogram_, kMaxRenameTimeMillis); 556 Retrier r(lockfile_time_histogram_, kMaxRenameTimeMillis);
557 do { 557 do {
558 file = ::base::CreatePlatformFile( 558 file = ::base::CreatePlatformFile(
559 CreateFilePath(fname), flags, &created, &error_code); 559 CreateFilePath(fname), flags, &created, &error_code);
560 } while (error_code != ::base::PLATFORM_FILE_OK && r.ShouldKeepTrying()); 560 } while (error_code != ::base::PLATFORM_FILE_OK && r.ShouldKeepTrying());
561 561
562 if (error_code != ::base::PLATFORM_FILE_OK) { 562 if (error_code != ::base::PLATFORM_FILE_OK) {
563 result = Status::IOError(fname, PlatformFileErrorString(error_code)); 563 result = Status::IOError(fname, PlatformFileErrorString(error_code));
564 RecordSpecificError(kLockFile, error_code); 564 RecordOSError(kLockFile, error_code);
565 } else { 565 } else {
566 ChromiumFileLock* my_lock = new ChromiumFileLock; 566 ChromiumFileLock* my_lock = new ChromiumFileLock;
567 my_lock->file_ = file; 567 my_lock->file_ = file;
568 *lock = my_lock; 568 *lock = my_lock;
569 } 569 }
570 return result; 570 return result;
571 } 571 }
572 572
573 virtual Status UnlockFile(FileLock* lock) { 573 virtual Status UnlockFile(FileLock* lock) {
574 ChromiumFileLock* my_lock = reinterpret_cast<ChromiumFileLock*>(lock); 574 ChromiumFileLock* my_lock = reinterpret_cast<ChromiumFileLock*>(lock);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 *path = FilePathToString(test_directory_); 611 *path = FilePathToString(test_directory_);
612 mu_.Release(); 612 mu_.Release();
613 return Status::OK(); 613 return Status::OK();
614 } 614 }
615 615
616 virtual Status NewLogger(const std::string& fname, Logger** result) { 616 virtual Status NewLogger(const std::string& fname, Logger** result) {
617 FILE* f = fopen_internal(fname.c_str(), "w"); 617 FILE* f = fopen_internal(fname.c_str(), "w");
618 if (f == NULL) { 618 if (f == NULL) {
619 *result = NULL; 619 *result = NULL;
620 int saved_errno = errno; 620 int saved_errno = errno;
621 RecordSpecificError(kNewLogger, saved_errno); 621 RecordOSError(kNewLogger, saved_errno);
622 return Status::IOError(fname, strerror(saved_errno)); 622 return Status::IOError(fname, strerror(saved_errno));
623 } else { 623 } else {
624 if (!sync_parent(fname)) { 624 if (!sync_parent(fname)) {
625 fclose(f); 625 fclose(f);
626 return Status::IOError(fname, strerror(errno)); 626 return Status::IOError(fname, strerror(errno));
627 } 627 }
628 *result = new ChromiumLogger(f); 628 *result = new ChromiumLogger(f);
629 return Status::OK(); 629 return Status::OK();
630 } 630 }
631 } 631 }
632 632
633 virtual uint64_t NowMicros() { 633 virtual uint64_t NowMicros() {
634 return ::base::TimeTicks::Now().ToInternalValue(); 634 return ::base::TimeTicks::Now().ToInternalValue();
635 } 635 }
636 636
637 virtual void SleepForMicroseconds(int micros) { 637 virtual void SleepForMicroseconds(int micros) {
638 // Round up to the next millisecond. 638 // Round up to the next millisecond.
639 ::base::PlatformThread::Sleep(::base::TimeDelta::FromMicroseconds(micros)); 639 ::base::PlatformThread::Sleep(::base::TimeDelta::FromMicroseconds(micros));
640 } 640 }
641 641
642 void RecordErrorAt(MethodID method) const { 642 void RecordErrorAt(MethodID method) const {
643 io_error_histogram_->Add(method); 643 io_error_histogram_->Add(method);
644 } 644 }
645 645
646 void RecordSpecificError(MethodID method, base::PlatformFileError error) 646 void RecordOSError(MethodID method, base::PlatformFileError error) const {
647 const {
648 DCHECK(error < 0); 647 DCHECK(error < 0);
649 RecordSpecificError(method, -error); 648 RecordOSError(method, -error);
650 } 649 }
651 650
652 void RecordSpecificError(MethodID method, int error) const { 651 void RecordOSError(MethodID method, int error) const {
653 RecordErrorAt(method); 652 RecordErrorAt(method);
654 if (error_histograms_.find(method) == error_histograms_.end()) { 653 if (error_histograms_.find(method) == error_histograms_.end()) {
655 NOTREACHED(); 654 NOTREACHED();
656 return; 655 return;
657 } 656 }
658 error_histograms_.find(method)->second->Add(error); 657 error_histograms_.find(method)->second->Add(error);
659 } 658 }
660 659
661 void RecordTimeToRename(base::TimeDelta t) const { 660 void RecordTimeToRename(base::TimeDelta t) const {
662 rename_time_histogram_->AddTime(t); 661 rename_time_histogram_->AddTime(t);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 847
849 Env* IDBEnv() { 848 Env* IDBEnv() {
850 return idb_env.Pointer(); 849 return idb_env.Pointer();
851 } 850 }
852 851
853 Env* Env::Default() { 852 Env* Env::Default() {
854 return default_env.Pointer(); 853 return default_env.Pointer();
855 } 854 }
856 855
857 } 856 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698