diff --git a/db/db_impl.cc b/db/db_impl.cc index a9706ab6da2838606da941f2ab64e6848e2aeb66..290b67f160d5df46543d49d7b389d6c230596aaa 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -3862,19 +3862,19 @@ Status DBImpl::Write(const WriteOptions& options, WriteBatch* my_batch) { } if (status.ok()) { PERF_TIMER_START(write_memtable_time); + status = WriteBatchInternal::InsertInto( updates, column_family_memtables_.get(), false, 0, this, false); + // A non-OK status here indicates iteration failure (either in-memory + // writebatch corruption (very bad), or the client specified invalid + // column family). This will later on trigger bg_error_. + // + // Note that existing logic was not sound. Any partial failure writing + // into the memtable would result in a state that some write ops might + // have succeeded in memtable but Status reports error for all writes. + PERF_TIMER_STOP(write_memtable_time); - if (!status.ok()) { - // Iteration failed (either in-memory writebatch corruption (very - // bad), or the client specified invalid column family). Return - // failure. - // Note that existing logic was not sound. Any partial failure writing - // into the memtable would result in a state that some write ops might - // have succeeded in memtable but Status reports error for all writes. - return status; - } SetTickerCount(options_.statistics.get(), SEQUENCE_NUMBER, last_sequence); }