]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
pass optoins, log_nubmer to writer. usually.
authorSage Weil <sage@redhat.com>
Tue, 29 Sep 2015 02:16:02 +0000 (22:16 -0400)
committerSage Weil <sage@redhat.com>
Tue, 29 Sep 2015 02:16:02 +0000 (22:16 -0400)
db/db_impl.cc
db/log_writer.cc
db/log_writer.h
db/repair.cc
db/version_set.cc
db/wal_manager_test.cc

index 808a262036ea8d285cb32532c5b52d9d22f15b0f..b524158294b8bb1d46779b596ceecadd2ca432ba 100644 (file)
@@ -391,7 +391,7 @@ Status DBImpl::NewDB() {
   }
   file->SetPreallocationBlockSize(db_options_.manifest_preallocation_size);
   {
-    log::Writer log(std::move(file));
+    log::Writer log(&db_options_, std::move(file), 0);
     std::string record;
     new_db.EncodeTo(&record);
     s = log.AddRecord(record);
@@ -3493,8 +3493,9 @@ Status DBImpl::SetNewMemtableAndNewLogFile(ColumnFamilyData* cfd,
        // (compression, etc) but err on the side of caution.
        lfile->SetPreallocationBlockSize(
             1.1 * mutable_cf_options.write_buffer_size);
-        new_log = new log::Writer(std::move(lfile));
-        log_dir_synced_ = false;
+       new_log = new log::Writer(&db_options_, std::move(lfile),
+                                 new_log_number);
+       log_dir_synced_ = false;
       }
     }
 
@@ -4002,7 +4003,8 @@ Status DB::Open(const DBOptions& db_options, const std::string& dbname,
     if (s.ok()) {
       lfile->SetPreallocationBlockSize(1.1 * max_write_buffer_size);
       impl->logfile_number_ = new_log_number;
-      impl->log_.reset(new log::Writer(std::move(lfile)));
+      impl->log_.reset(new log::Writer(&impl->db_options_, std::move(lfile),
+                                      new_log_number));
 
       // set column family handles
       for (auto cf : column_families) {
index d78de5e7ba728812739be1f176e954903669e038..eeb0844fd7d56020ed3fe683e2e9676c54e92dcc 100644 (file)
 
 #include <stdint.h>
 #include "rocksdb/env.h"
+#include "rocksdb/options.h"
 #include "util/coding.h"
 #include "util/crc32c.h"
 
 namespace rocksdb {
 namespace log {
 
-Writer::Writer(unique_ptr<WritableFile>&& dest)
-    : dest_(std::move(dest)),
-      block_offset_(0) {
+Writer::Writer(const DBOptions *opt, unique_ptr<WritableFile>&& dest,
+              int log_number)
+    : db_options_(opt),
+      dest_(std::move(dest)),
+      block_offset_(0),
+      log_number_(log_number) {
   for (int i = 0; i <= kMaxRecordType; i++) {
     char t = static_cast<char>(i);
     type_crc_[i] = crc32c::Value(&t, 1);
index 46226ec27a0f58d70206308f6e0dcaa3f1d0aa55..18319796de565c66d9f8b1958e77fee3daf42f93 100644 (file)
@@ -17,6 +17,7 @@
 namespace rocksdb {
 
 class WritableFile;
+class DBOptions;
 
 using std::unique_ptr;
 
@@ -61,7 +62,9 @@ class Writer {
   // Create a writer that will append data to "*dest".
   // "*dest" must be initially empty.
   // "*dest" must remain live while this Writer is in use.
-  explicit Writer(unique_ptr<WritableFile>&& dest);
+  explicit Writer(const DBOptions *opt,
+                 unique_ptr<WritableFile>&& dest,
+                 int log_number);
   ~Writer();
 
   Status AddRecord(const Slice& slice);
@@ -70,8 +73,10 @@ class Writer {
   const WritableFile* file() const { return dest_.get(); }
 
  private:
+  const DBOptions *db_options_;
   unique_ptr<WritableFile> dest_;
   int block_offset_;       // Current offset in block
+  int log_number_;
 
   // crc32c values for all supported record types.  These are
   // pre-computed to reduce the overhead of computing the crc of the
index 8b15eaab89f1a91275b5f53cd8fa2d48c0ea1a1a..355150d959d6162b37d8f3203e98208e9cbe4f8d 100644 (file)
@@ -405,7 +405,7 @@ class Repairer {
 
     //fprintf(stderr, "NewDescriptor:\n%s\n", edit_.DebugString().c_str());
     {
-      log::Writer log(std::move(file));
+      log::Writer log(&options_, std::move(file), 0);
       std::string record;
       edit_->EncodeTo(&record);
       status = log.AddRecord(record);
index 7cf010a786e32e8edc484947154a51a7742318b0..03ccb7957bb5e6bbbe2de421791c52c9a3cc8816 100644 (file)
@@ -1902,7 +1902,8 @@ Status VersionSet::LogAndApply(ColumnFamilyData* column_family_data,
       if (s.ok()) {
         descriptor_file->SetPreallocationBlockSize(
             db_options_->manifest_preallocation_size);
-        descriptor_log_.reset(new log::Writer(std::move(descriptor_file)));
+        descriptor_log_.reset(new log::Writer(db_options_,
+                                             std::move(descriptor_file), 0));
         s = WriteSnapshot(descriptor_log_.get());
       }
     }
index 325f0d94c1650a70cf34f5fea800d812d0342b6d..f6af6cb94897498c10d7347b42eedf08407badd2 100644 (file)
@@ -72,7 +72,7 @@ class WalManagerTest : public testing::Test {
     std::string fname = ArchivedLogFileName(dbname_, current_log_number_);
     unique_ptr<WritableFile> file;
     ASSERT_OK(env_->NewWritableFile(fname, &file, env_options_));
-    current_log_writer_.reset(new log::Writer(std::move(file)));
+    current_log_writer_.reset(new log::Writer(&db_options_, std::move(file)));
   }
 
   void CreateArchiveLogs(int num_logs, int entries_per_log) {