]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/logging/auto_roll_logger.cc
import quincy beta 17.1.0
[ceph.git] / ceph / src / rocksdb / logging / auto_roll_logger.cc
index fc498521b920b2f095f5977bbf8c993d46375769..3533724ba342dd9b1e8459f5076692bf9e254fdc 100644 (file)
@@ -45,8 +45,8 @@ AutoRollLogger::AutoRollLogger(Env* env, const std::string& dbname,
     RollLogFile();
   }
   GetExistingFiles();
-  ResetLogger();
-  if (status_.ok()) {
+  s = ResetLogger();
+  if (s.ok() && status_.ok()) {
     status_ = TrimOldLogFiles();
   }
 }
@@ -86,7 +86,10 @@ void AutoRollLogger::RollLogFile() {
       dbname_, now, db_absolute_path_, db_log_dir_);
     now++;
   } while (env_->FileExists(old_fname).ok());
-  env_->RenameFile(log_fname_, old_fname);
+  Status s = env_->RenameFile(log_fname_, old_fname);
+  if (!s.ok()) {
+    // What should we do on error?
+  }
   old_log_files_.push(old_fname);
 }
 
@@ -257,11 +260,15 @@ Status CreateLoggerFromOptions(const std::string& dbname,
 
   Env* env = options.env;
   std::string db_absolute_path;
-  env->GetAbsolutePath(dbname, &db_absolute_path);
+  Status s = env->GetAbsolutePath(dbname, &db_absolute_path);
+  if (!s.ok()) {
+    return s;
+  }
   std::string fname =
       InfoLogFileName(dbname, db_absolute_path, options.db_log_dir);
 
-  env->CreateDirIfMissing(dbname);  // In case it does not exist
+  env->CreateDirIfMissing(dbname)
+      .PermitUncheckedError();  // In case it does not exist
   // Currently we only support roll by time-to-roll and log size
 #ifndef ROCKSDB_LITE
   if (options.log_file_time_to_roll > 0 || options.max_log_file_size > 0) {
@@ -269,7 +276,7 @@ Status CreateLoggerFromOptions(const std::string& dbname,
         env, dbname, options.db_log_dir, options.max_log_file_size,
         options.log_file_time_to_roll, options.keep_log_file_num,
         options.info_log_level);
-    Status s = result->GetStatus();
+    s = result->GetStatus();
     if (!s.ok()) {
       delete result;
     } else {
@@ -281,8 +288,9 @@ Status CreateLoggerFromOptions(const std::string& dbname,
   // Open a log file in the same directory as the db
   env->RenameFile(fname,
                   OldInfoLogFileName(dbname, env->NowMicros(), db_absolute_path,
-                                     options.db_log_dir));
-  auto s = env->NewLogger(fname, logger);
+                                     options.db_log_dir))
+      .PermitUncheckedError();
+  s = env->NewLogger(fname, logger);
   if (logger->get() != nullptr) {
     (*logger)->SetInfoLogLevel(options.info_log_level);
   }