diff --git a/db/db_impl.cc b/db/db_impl.cc index 3663fbe..de7b8cb 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -1357,10 +1357,8 @@ Status DBImpl::Write(const WriteOptions& options, WriteBatch* updates) { Writer* last_writer = &w; if (status.ok() && updates != nullptr) { // nullptr batch is for compactions WriteBatch* write_batch = BuildBatchGroup(&last_writer); - WriteBatchInternal::ConverToValueLog(write_batch, this); + - WriteBatchInternal::SetSequence(write_batch, last_sequence + 1); - last_sequence += WriteBatchInternal::Count(write_batch); // Add to log and apply to memtable. We can release the lock // during this phase since &w is currently responsible for logging @@ -1368,6 +1366,12 @@ Status DBImpl::Write(const WriteOptions& options, WriteBatch* updates) { // into mem_. { mutex_.Unlock(); + + WriteBatchInternal::ConverToValueLog(write_batch, this); + WriteBatchInternal::SetSequence(write_batch, last_sequence + 1); + last_sequence += WriteBatchInternal::Count(write_batch); + + status = log_->AddRecord(WriteBatchInternal::Contents(write_batch)); bool sync_error = false; if (status.ok() && options.sync) { @@ -1697,7 +1701,7 @@ std::vector> DBImpl::WriteValueLog( assert(valueFile.good()); // 解锁资源或进行其他清理操作 - valueFile.flush(); // 确保所有缓冲区的数据都被写入文件 + //valueFile.flush(); // 确保所有缓冲区的数据都被写入文件 valueFile.close(); return res; }