1. 05 3月, 2020 2 次提交
    • C
      Skip high levels with no key falling in the range in CompactRange (#6482) · afb97094
      Cheng Chang 提交于
      Summary:
      In CompactRange, if there is no key in memtable falling in the specified range, then flush is skipped.
      This PR extends this skipping logic to SST file levels: it starts compaction from the highest level (starting from L0) that has files with key falling in the specified range, instead of always starts from L0.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6482
      
      Test Plan:
      A new test ManualCompactionTest::SkipLevel is added.
      
      Also updated a test related to statistics of index block cache hit in db_test2, the index cache hit is increased by 1 in this PR because when checking overlap for the key range in L0, OverlapWithLevelIterator will do a seek in the table cache iterator, which will read from the cached index.
      
      Also updated db_compaction_test and db_test to use correct range for full compaction.
      
      Differential Revision: D20251149
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: f822157cf4796972bd5035d9d7178d8dfb7af08b
      afb97094
    • Z
      Introduce FaultInjectionTestFS to test fault File system instead of Env (#6414) · e62fe506
      Zhichao Cao 提交于
      Summary:
      In the current code base, we can use FaultInjectionTestEnv to simulate the env issue such as file write/read errors, which are used in most of the test. The PR https://github.com/facebook/rocksdb/issues/5761 introduce the File System as a new Env API. This PR implement the FaultInjectionTestFS, which can be used to simulate when File System has issues such as IO error. user can specify any IOStatus error as input, such that FS corresponding actions will return certain error to the caller.
      
      A set of ErrorHandlerFSTests are introduced for testing
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6414
      
      Test Plan: pass make asan_check, pass error_handler_fs_test.
      
      Differential Revision: D20252421
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: e922038f8ce7e6d1da329fd0bba7283c4b779a21
      e62fe506
  2. 04 3月, 2020 2 次提交
    • F
      Check for sys/auxv.h (#6359) · 8bbd76ed
      Fabrice Fontaine 提交于
      Summary:
      Check for sys/auxv.h and getauxval before using them as they are not
      always available (for example on uclibc)
      Signed-off-by: NFabrice Fontaine <fontaine.fabrice@gmail.com>
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6359
      
      Differential Revision: D20239797
      
      fbshipit-source-id: 175a098094d81545628c2372e7c388e70a32fd48
      8bbd76ed
    • K
      s/const auto/const auto&/ when doing loop (#6477) · 03dbd11e
      Kefu Chai 提交于
      Summary:
      this silences following warning from clang-11
      ```
      rocksdb/db/db_impl/db_impl_compaction_flush.cc:1040:21: warning: loop variable 'newf' of type 'const std::pair<int, rocksdb::FileMetaData>' creates a copy from type 'const
      std::pair<int\
      , rocksdb::FileMetaData>' [-Wrange-loop-analysis]
          for (const auto newf : c->edit()->GetNewFiles()) {
                          ^
      rocksdb/db/db_impl/db_impl_compaction_flush.cc:1040:10: note: use reference type 'const std::pair<int, rocksdb::FileMetaData> &' to prevent copying
          for (const auto newf : c->edit()->GetNewFiles()) {
               ^~~~~~~~~~~~~~~~~
                          &
      ```
      Signed-off-by: NKefu Chai <tchaikov@gmail.com>
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6477
      
      Differential Revision: D20211850
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 3e89e13a12bba79f1b934d46b7c4c0576cdafb01
      03dbd11e
  3. 03 3月, 2020 7 次提交
    • S
      Add missing MutexLock to MockEnv::CreateDir (#6474) · 48d8d076
      sumeerbhola 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6474
      
      Differential Revision: D20205109
      
      Pulled By: ltamasi
      
      fbshipit-source-id: ec136005c63740f5b713ff537b5671ea9b8e217a
      48d8d076
    • S
      Fix data race of GetCreationTimeOfOldestFile() (#6473) · 17bef7d3
      sdong 提交于
      Summary:
      When DBImpl::GetCreationTimeOfOldestFile() calls Version::GetCreationTimeOfOldestFile(), the version is not directly or indirectly referenced, so an event like compaction can race with the operation and cause DBImpl::GetCreationTimeOfOldestFile() to access delocated data. This was caught by an ASAN run:
      
      ==268==ERROR: AddressSanitizer: heap-use-after-free on address 0x612000b7d198 at pc 0x000018332913 bp 0x7f391510d310 sp 0x7f391510d308
      READ of size 8 at 0x612000b7d198 thread T845 (store_load-33)
      SCARINESS: 51 (8-byte-read-heap-use-after-free)
          #0 0x18332912 in rocksdb::Version::GetCreationTimeOfOldestFile(unsigned long*) rocksdb/src/db/version_set.cc:1488
          https://github.com/facebook/rocksdb/issues/1 0x1803ddaa in rocksdb::DBImpl::GetCreationTimeOfOldestFile(unsigned long*) rocksdb/src/db/db_impl/db_impl.cc:4499
          https://github.com/facebook/rocksdb/issues/2 0xe24ca09 in rocksdb::StackableDB::GetCreationTimeOfOldestFile(unsigned long*) rocksdb/utilities/stackable_db.h:392
          ......
      0x612000b7d198 is located 216 bytes inside of 296-byte region [0x612000b7d0c0,0x612000b7d1e8)
      freed by thread T28 here:
          ......
          https://github.com/facebook/rocksdb/issues/5 0x1832c73f in std::vector<rocksdb::FileMetaData*, std::allocator<rocksdb::FileMetaData*> >::~vector() third-party-buck/platform007/build/libgcc/include/c++/trunk/bits/stl_vector.h:435
          https://github.com/facebook/rocksdb/issues/6 0x1832c73f in rocksdb::VersionStorageInfo::~VersionStorageInfo() rocksdb/src/db/version_set.cc:734
          https://github.com/facebook/rocksdb/issues/7 0x1832cf42 in rocksdb::Version::~Version() rocksdb/src/db/version_set.cc:758
          https://github.com/facebook/rocksdb/issues/8 0x9d1bb5 in rocksdb::Version::Unref() rocksdb/src/db/version_set.cc:2869
          https://github.com/facebook/rocksdb/issues/9 0x183e7631 in rocksdb::Compaction::~Compaction() rocksdb/src/db/compaction/compaction.cc:275
          https://github.com/facebook/rocksdb/issues/10 0x9e6de6 in std::default_delete<rocksdb::Compaction>::operator()(rocksdb::Compaction*) const third-party-buck/platform007/build/libgcc/include/c++/trunk/bits/unique_ptr.h:78
          https://github.com/facebook/rocksdb/issues/11 0x9e6de6 in std::unique_ptr<rocksdb::Compaction, std::default_delete<rocksdb::Compaction> >::reset(rocksdb::Compaction*) third-party-buck/platform007/build/libgcc/include/c++/trunk/bits/unique_ptr.h:376
          https://github.com/facebook/rocksdb/issues/12 0x9e6de6 in rocksdb::DBImpl::BackgroundCompaction(bool*, rocksdb::JobContext*, rocksdb::LogBuffer*, rocksdb::DBImpl::PrepickedCompaction*, rocksdb::Env::Priority) rocksdb/src/db/db_impl/db_impl_compaction_flush.cc:2826
          https://github.com/facebook/rocksdb/issues/13 0x9ac3b8 in rocksdb::DBImpl::BackgroundCallCompaction(rocksdb::DBImpl::PrepickedCompaction*, rocksdb::Env::Priority) rocksdb/src/db/db_impl/db_impl_compaction_flush.cc:2320
          https://github.com/facebook/rocksdb/issues/14 0x9abff7 in rocksdb::DBImpl::BGWorkCompaction(void*) rocksdb/src/db/db_impl/db_impl_compaction_flush.cc:2096
          ......
      
      Fix the issue by reference the super version and use the referenced version from it.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6473
      
      Test Plan: Run ASAN for all existing tests.
      
      Differential Revision: D20196416
      
      fbshipit-source-id: 5f4a7918110fc7b8dd7841932d376bc9d1e59d6f
      17bef7d3
    • Z
      Replace Directory with FSDirectory in DB (#6468) · 8d73137a
      Zhichao Cao 提交于
      Summary:
      In the current code base, we can use Directory from Env to manage directory (e.g, Fsync()). The PR https://github.com/facebook/rocksdb/issues/5761  introduce the File System as a new Env API. So we further replace the Directory class in DB with FSDirectory such that we can have more IO information from IOStatus returned by FSDirectory.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6468
      
      Test Plan: pass make asan_check
      
      Differential Revision: D20195261
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 93962cb9436852bfcfb76e086d9e7babd461cbe1
      8d73137a
    • H
      return timestamp from get (#6409) · 904a60ff
      Huisheng Liu 提交于
      Summary:
      Added new Get() methods that return timestamp. Dummy implementation is given so that classes derived from DB don't need to be touched to provide their implementation. MultiGet is not included.
      
      ReadRandom perf test (10 minutes) on the same development machine ram drive with the same DB data shows no regression (within marge of error). The test is adapted from https://github.com/facebook/rocksdb/wiki/RocksDB-In-Memory-Workload-Performance-Benchmarks.
          base line (commit 72ee067b):
              101.712 micros/op 314602 ops/sec;   36.0 MB/s (5658999 of 5658999 found)
          This PR:
              100.288 micros/op 319071 ops/sec;   36.5 MB/s (5674999 of 5674999 found)
      
      ./db_bench --db=r:\rocksdb.github --num_levels=6 --key_size=20 --prefix_size=20 --keys_per_prefix=0 --value_size=100 --cache_size=2147483648 --cache_numshardbits=6 --compression_type=none --compression_ratio=1 --min_level_to_compress=-1 --disable_seek_compaction=1 --hard_rate_limit=2 --write_buffer_size=134217728 --max_write_buffer_number=2 --level0_file_num_compaction_trigger=8 --target_file_size_base=134217728 --max_bytes_for_level_base=1073741824 --disable_wal=0 --wal_dir=r:\rocksdb.github\WAL_LOG --sync=0 --verify_checksum=1 --delete_obsolete_files_period_micros=314572800 --max_background_compactions=4 --max_background_flushes=0 --level0_slowdown_writes_trigger=16 --level0_stop_writes_trigger=24 --statistics=0 --stats_per_interval=0 --stats_interval=1048576 --histogram=0 --use_plain_table=1 --open_files=-1 --mmap_read=1 --mmap_write=0 --memtablerep=prefix_hash --bloom_bits=10 --bloom_locality=1 --duration=600 --benchmarks=readrandom --use_existing_db=1 --num=25000000 --threads=32
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6409
      
      Differential Revision: D20200086
      
      Pulled By: riversand963
      
      fbshipit-source-id: 490edd74d924f62bd8ae9c29c2a6bbbb8410ca50
      904a60ff
    • L
      Fix the description of unordered_write in db_bench (#6476) · 8637bc1e
      Levi Tamasi 提交于
      Summary:
      As reported in https://github.com/facebook/rocksdb/issues/6467, the
      description of the `unordered_write` switch of `db_bench` was incorrect.
      (Note: the new description is based on
      https://rocksdb.org/blog/2019/08/15/unordered-write.html).
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6476
      
      Test Plan: `db_bench --help`
      
      Differential Revision: D20200653
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 4c3683fcfa6a069164167af5aaff9974a810c16a
      8637bc1e
    • Y
      Ignore compile_commands.json file (#6472) · 5f2f8cd9
      Yanqin Jin 提交于
      Summary:
      Both clangd and cquery-language-server requires a compile_commands.json file to
      index the project. This file can be ignored by git.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6472
      
      Differential Revision: D20194899
      
      Pulled By: riversand963
      
      fbshipit-source-id: ea1587f2e5d10b7591147073b61efe262a1cf747
      5f2f8cd9
    • S
      Add --index_with_first_key and --index_shortening_mode to DB bench (#5859) · 9b3c9ef0
      sdong 提交于
      Summary:
      Some combinatino of --index_with_first_key and --index_shortening_mode can signifcantly improve performance for large values. Expose them in db_bench.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5859
      
      Test Plan: Run them with the new options and observe the behavior.
      
      Differential Revision: D20104434
      
      fbshipit-source-id: 21d48a732a9caf20b82312c7d7557d747ea3c304
      9b3c9ef0
  4. 29 2月, 2020 3 次提交
    • S
      Add more unit test coverage to MultiRead (#6452) · 86f1ad70
      sdong 提交于
      Summary:
      MultiRead tests in env_test cannot simulate the io_uring case when queries need to be submitted in multiple rounds. Add a new unit test to cover up more requests per MultiRead
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6452
      
      Test Plan: Run it and see it pass when liburing is enabled or not enabled.
      
      Differential Revision: D20078924
      
      fbshipit-source-id: 6cff7fe345a4c5aa47135186e6181bf00df02b68
      86f1ad70
    • M
      fix some spelling typos (#6464) · 051696bf
      Michael R. Crusoe 提交于
      Summary:
      Found from Debian's "Lintian" program
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6464
      
      Differential Revision: D20162862
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 06941ee2437b038b2b8045becbe9d2c6fbff3e12
      051696bf
    • M
      WriteUnPrepared: Pass in correct subbatch count during rollback (#6463) · 41535d02
      Manuel Ung 提交于
      Summary:
      Today `WriteUnpreparedTxn::RollbackInternal` will write the rollback batch assuming that there is only a single subbatch. However, because untracked_keys_ are currently not deduplicated, it's possible for duplicate keys to exist, and thus split the batch. Also, tracked_keys_ also does not support compators outside of the bytewise comparators, so it's possible for duplicates to occur there as well.
      
      To solve this, just pass in the correct subbatch count.
      
      Also, removed `WriteUnpreparedRollbackPreReleaseCallback` to unify the Commit/Rollback codepaths some more.
      
      Also, fixed a bug in `CommitInternal` where if 1. two_write_queue is true and 2. include_data is true, then `WriteUnpreparedCommitEntryPreReleaseCallback` ends up calling `AddCommitted` on the commit time write batch a second time on the second write. To fix, `WriteUnpreparedCommitEntryPreReleaseCallback` is re-initialized.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6463
      
      Differential Revision: D20150153
      
      Pulled By: lth
      
      fbshipit-source-id: df0b42d39406c75af73df995aa1138f0db539cd1
      41535d02
  5. 28 2月, 2020 1 次提交
  6. 26 2月, 2020 3 次提交
    • C
      Return early on failure when constructing CuckooTableReader (#6453) · 741decfe
      Cheng Chang 提交于
      Summary:
      If file is not mmaped, CuckooTableReader should not try to read table properties from the file.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6453
      
      Test Plan: Added a new unit test
      
      Differential Revision: D20103334
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 48539f14d93f6c1ebe12c3df5a14719e9d7b8726
      741decfe
    • A
      support SstFileManager in db_stress (#6454) · f52db846
      Andrew Kryczka 提交于
      Summary:
      Add some flags for configuring an SstFileManager. An
      SstFileManager is only created when one or more of these flags are
      set.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6454
      
      Test Plan:
      - ran it a while:
      
      ```
      $ python ./tools/db_crashtest.py blackbox --simple -max_key=100000 -write_buffer_size=131072 -target_file_size_base=131072 -max_bytes_for_level_base=524288 -value_size_mult=33 --interval=10 -max_background_compactions=4 -max_background_flushes=2 -sst_file_manager_bytes_per_sec=1048576
      ```
      
      - verified with strace the SstFileManager is behaving as configured:
      
      ```
      $ strace -fp `pidof db_stress` -e ftruncate,unlink
      ...
      [pid 3074805]
      ftruncate(9</tmp/rocksdb_crashtest_blackbox6OJywh/000070.sst.trash>,
      67423) = 0
      [pid 3074805]
      ftruncate(9</tmp/rocksdb_crashtest_blackbox6OJywh/000070.sst.trash>,
      51039) = 0
      [pid 3074805]
      ftruncate(9</tmp/rocksdb_crashtest_blackbox6OJywh/000070.sst.trash>,
      34655) = 0
      [pid 3074805]
      ftruncate(9</tmp/rocksdb_crashtest_blackbox6OJywh/000070.sst.trash>,
      18271) = 0
      [pid 3074805]
      ftruncate(9</tmp/rocksdb_crashtest_blackbox6OJywh/000070.sst.trash>,
      1887) = 0
      [pid 3074805]
      unlink("/tmp/rocksdb_crashtest_blackbox6OJywh/000070.sst.trash") = 0
      ...
      ```
      
      Differential Revision: D20103315
      
      Pulled By: ajkr
      
      fbshipit-source-id: b3e1092747157459d244b047947a979b85c98f48
      f52db846
    • A
      Fix range deletion tombstone ingestion with global seqno (#6429) · 69679e73
      Andrew Kryczka 提交于
      Summary:
      Original author: jeffrey-xiao
      
      If we are writing a global seqno for an ingested file, the range
      tombstone metablock gets accessed and put into the cache during
      ingestion preparation. At the time, the global seqno of the ingested
      file has not yet been determined, so the cached block will not have a
      global seqno. When the file is ingested and we read its range tombstone
      metablock, it will be returned from the cache with no global seqno. In
      that case, we use the actual seqnos stored in the range tombstones,
      which are all zero, so the tombstones cover nothing.
      
      This commit removes global_seqno_ variable from Block. When iterating
      over a block, the global seqno for the block is determined by the
      iterator instead of storing this mutable attribute in Block.
      Additionally, this commit adds a regression test to check that keys are
      deleted when ingesting a file with a global seqno and range deletion
      tombstones.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6429
      
      Differential Revision: D19961563
      
      Pulled By: ajkr
      
      fbshipit-source-id: 5cf777397fa3e452401f0bf0364b0750492487b7
      69679e73
  7. 25 2月, 2020 3 次提交
    • L
      Add blob file state to VersionEdit (#6416) · d87c10c6
      Levi Tamasi 提交于
      Summary:
      BlobDB currently does not keep track of blob files: no records are written to
      the manifest when a blob file is added or removed, and upon opening a database,
      the list of blob files is populated simply based on the contents of the blob directory.
      This means that lost blob files cannot be detected at the moment. We plan to solve
      this issue by making blob files a part of `Version`; as a first step, this patch makes
      it possible to store information about blob files in `VersionEdit`. Currently, this information
      includes blob file number, total number and size of all blobs, and total number and size
      of garbage blobs. However, the format is extensible: new fields can be added in
      both a forward compatible and a forward incompatible manner if needed (similarly
      to `kNewFile4`).
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6416
      
      Test Plan: `make check`
      
      Differential Revision: D19894234
      
      Pulled By: ltamasi
      
      fbshipit-source-id: f9753e1f2aedf6dadb70c09b345207cb9c58c329
      d87c10c6
    • S
      Buck config: Re-enable liburing under Linux (#6451) · eb367d45
      sdong 提交于
      Summary:
      The known bug of liburing has been fixed. Now we can re-enable liburing under Linux
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6451
      
      Test Plan: Watch internal CI
      
      Differential Revision: D20079009
      
      fbshipit-source-id: 04a6f53a900ff721f9a62a188cf906771b5d68d2
      eb367d45
    • C
      Update release version to 6.8 (#6450) · b47a7140
      Cheng Chang 提交于
      Summary:
      Update release version to 6.8
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6450
      
      Test Plan: no code change
      
      Differential Revision: D20071889
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 91450aae09b201926469ff32f59ed436366f3b74
      b47a7140
  8. 23 2月, 2020 1 次提交
  9. 22 2月, 2020 4 次提交
  10. 21 2月, 2020 4 次提交
    • S
      Mention rocksdb_namespace.h in HISTORY.md (#6439) · d75ce0a8
      sdong 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6439
      
      Differential Revision: D20012442
      
      fbshipit-source-id: a7c9569826eac39cd7ea69c90f08a21dd4caa335
      d75ce0a8
    • Y
      Fix MANIFEST name assignment (#6426) · 362b8d43
      Yanqin Jin 提交于
      Summary:
      Currently, a new MANIFEST file is assigned a new file number when 1) no
      MANIFEST is open, or 2) current MANIFEST file size exceeds a threshold. This is
      not sufficient. There are cases when the caller explicitly specifies that a new
      MANIFEST be created. For example, if user sets options.write_dbid_to_manifest = true,
      and there are WAL files, then RocksDB will run into an issue during recovery.
      `DBImpl::Recover()` will call `LogAndApply()` to write dbid. At this point, the db being
      recovered creates a new MANIFEST, say, MANIFEST-000003. Since there are WALs,
      `DBImpl::RecoverLogFiles` will be called. Towards the end of this function, we call
      `LogAndApply(new_descriptor_log=true)`, which explicitly creates a new MANIFEST.
      However, the manifest_file_number is wrong before this fix. Consequently, RocksDB
      opens an existing, non-empty file for append, effectively truncating the file to zero.
      If a crash occurs, then there will be data loss.
      
      Test Plan (devserver):
      make check
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6426
      
      Test Plan: make check
      
      Differential Revision: D19951866
      
      Pulled By: riversand963
      
      fbshipit-source-id: 4b1b9fc28d4fe2ac12764b388ef9e61f05e766da
      362b8d43
    • S
      Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) · fdf882de
      sdong 提交于
      Summary:
      When dynamically linking two binaries together, different builds of RocksDB from two sources might cause errors. To provide a tool for user to solve the problem, the RocksDB namespace is changed to a flag which can be overridden in build time.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6433
      
      Test Plan: Build release, all and jtest. Try to build with ROCKSDB_NAMESPACE with another flag.
      
      Differential Revision: D19977691
      
      fbshipit-source-id: aa7f2d0972e1c31d75339ac48478f34f6cfcfb3e
      fdf882de
    • G
      simplify user_access_only expression (#6360) · 4e33f1e1
      Gaurav Singh 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6360
      
      Differential Revision: D19698918
      
      Pulled By: riversand963
      
      fbshipit-source-id: d20ecca541376cccd32fc7afb504ea90021860ee
      4e33f1e1
  11. 20 2月, 2020 1 次提交
  12. 19 2月, 2020 3 次提交
  13. 15 2月, 2020 4 次提交
  14. 14 2月, 2020 2 次提交
    • W
      refine code (#6420) · 29e24434
      wolfkdy 提交于
      Summary:
      I create a new branch from the branch new upsteram/master and "git merge --squash".
      Maybe it will fix everything.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6420
      
      Differential Revision: D19897152
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 6575d9e3b23e360f42ee1480b43028b5fcc20136
      29e24434
    • M
      WriteUnPrepared: Fix assertion during recovery (#6419) · 908b1ee6
      Manuel Ung 提交于
      Summary:
      During recovery, multiple (un)prepared batches could exist in the same WAL record due to group commit. This breaks an assertion in `MemTableInserter::MarkBeginPrepare`.
      
      To fix, reset unprepared_batch_ to false after `MarkEndPrepare`.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6419
      
      Differential Revision: D19896148
      
      Pulled By: lth
      
      fbshipit-source-id: b1a32ef88f775a0881264a18bd1a4a5b8c85eee3
      908b1ee6