1. 14 3月, 2020 4 次提交
    • C
      Destroy DB at the end of each test in db_logical_block_size_cache_test (#6532) · 23eae14d
      Cheng Chang 提交于
      Summary:
      If DB is not deleted, in concurrent test, the tests might fail because of the previously existing DB.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6532
      
      Test Plan:
      make clean && make -j24 LITE=1  db_logical_block_size_cache_test && ./db_logical_block_size_cache_test
      make clean && make -j24 db_logical_block_size_cache_test && ./db_logical_block_size_cache_test
      
      Differential Revision: D20454734
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 8abede2ec1d79c1a4fe1bc95fbda489f8f7ee052
      23eae14d
    • Z
      Fix build bug caused by PR 6516 (#6535) · a824727d
      Zhichao Cao 提交于
      Summary:
      Fix the build corruption caused by PR https://github.com/facebook/rocksdb/issues/6516
      
      Testing plan: make make asan_check
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6535
      
      Differential Revision: D20448614
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 4d2a3dae6cdd781fcfe8e28a84ac3f536db1b067
      a824727d
    • P
      Use an Amazon S3 bucket for downloading deps (#6526) · 85dbdf25
      Peter Dillinger 提交于
      Summary:
      After we had a lot of failures with maven.org downloads, we
      wanted an alternative location for downloading binary dependencies.
      Hosting them through github would have been good in terms of
      organizational and network dependencies, but that approach seems to be
      awkward (fake releases, so would need a 'rocksdb-deps' repo) and
      strangely complicated for Facebook policy on open source repositories.
      
      This commit moves the downloads (that are not officially hosted by
      others on github) from my personal rocksdb fork to an S3 bucket owned
      by the Facebook RocksDB AWS account. Facebook employees can access
      this through an internal tool, and we should be able to grant permission
      to outside collaborators.
      
      Assuming this works out, I will back-port to older branches to stabilize
      their CI testing as well.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6526
      
      Test Plan: CI
      
      Differential Revision: D20430130
      
      Pulled By: pdillinger
      
      fbshipit-source-id: df52394a65e0a57942db3039bdaade8a4d520cb2
      85dbdf25
    • Z
      Separate timestamp related test from db_basic_test (#6516) · 5c30e6c0
      Zhichao Cao 提交于
      Summary:
      In some of the test, db_basic_test may cause time out due to its long running time. Separate the timestamp related test from db_basic_test to avoid the potential issue.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6516
      
      Test Plan: pass make asan_check
      
      Differential Revision: D20423922
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: d6306f89a8de55b07bf57233e4554c09ef1fe23a
      5c30e6c0
  2. 13 3月, 2020 7 次提交
    • S
      Divide block_based_table_reader.cc (#6527) · 674cf417
      sdong 提交于
      Summary:
      block_based_table_reader.cc is a giant file, which makes it hard for users to navigate the code. Divide the files to multiple files.
      Some class templates cannot be moved to .cc file. They are moved to .h files. It is still better than including them all in block_based_table_reader.cc.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6527
      
      Test Plan: "make all check" and "make release". Also build using cmake.
      
      Differential Revision: D20428455
      
      fbshipit-source-id: ca713c698469f07f35bc0c271358c0874ed4eb28
      674cf417
    • Y
      CI: add Arm support to travis CI matrix (#6436) · dd7a4a8f
      Yuqi Gu 提交于
      Summary:
      This patch based on https://github.com/facebook/rocksdb/issues/5932 offers a better solution to add arm64 to TravisCI matrix.
      Really thank adamretter for initiating Arm CI setup.
      
      Difference comparing to amd64:
      1. For CMake, as no official arm64 release ready on Kitware page,
      a third party (conda-forge) released one is used instead of
      building from source. The main reason is to save CI time.
      2. Explicit export JAVA_HOME on arm64
      3. Disable mingw test
      Signed-off-by: NYuqi Gu <yuqi.gu@arm.com>
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6436
      
      Differential Revision: D20428505
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 81ef02435e41480bb71710b783d85ebf452ce926
      dd7a4a8f
    • B
      Fix coverage for internal_repo_rocksdb · a8851f2d
      Ben Mehne 提交于
      Summary:
      tcc gtest runner need to know the location of the binary in order to collect coverage.  We can give them the location in an environment variable.
      
      Note that all these tests will break in tpx currently, though this is a bug in rocksdb's wrapper script, not tpx.
      
      Reviewed By: siying
      
      Differential Revision: D20430043
      
      fbshipit-source-id: c77d5f70bbc28f6011c6f91906bce2ceecc2f167
      a8851f2d
    • C
      Use DestroyColumnFamilyHandle instead of directly deleting column family handle (#6505) · 2ccb794e
      Cheng Chang 提交于
      Summary:
      Update example usage of closing column family.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6505
      
      Test Plan: cd examples && make column_families_example && ./column_families_example
      
      Differential Revision: D20362100
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 493c5e0068a40b4f237f8f8511cddd22dc15ea5c
      2ccb794e
    • C
      OpenForReadOnly is not supported in LITE mode (#6523) · 0d2c8e47
      Cheng Chang 提交于
      Summary:
      In DBLogicalBlockSizeCacheTest, do not test OpenForReadOnly in LITE mode.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6523
      
      Test Plan: watch test for LITE mode
      
      Differential Revision: D20420321
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: e45bf6f2800206d6f8ce9af7308e76a08de80643
      0d2c8e47
    • A
      Force Java version on Travis CI (#6512) · 0772768d
      Adam Retter 提交于
      Summary:
      In the `.travis.yml` file the `jdk: openjdk7` element is ignored when `language: cpp`. So whatever version of the JDK that was installed in the Travis container was used - typically JDK 11.
      
      To ensure our RocksJava builds are working, we now instead install and use OpenJDK 8. Ideally we would use OpenJDK 7, as RocksJava supports Java 7, but many of the newer Travis containers don't support Java 7, so Java 8 is the next best thing.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6512
      
      Differential Revision: D20388296
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 8bbe6b59b70cfab7fe81ff63867d907fefdd2df1
      0772768d
    • L
      Move BlobDB related files under db/ to db/blob/ (#6519) · c15e85bd
      Levi Tamasi 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6519
      
      Test Plan:
      ```
      make all
      make check
      ```
      
      Differential Revision: D20400691
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 20ef911cf1c2c92c7f71ef0b493f9be64f2eef94
      c15e85bd
  3. 12 3月, 2020 7 次提交
    • H
      fix MSVC build failures (#6517) · 07a3f7f0
      Huisheng Liu 提交于
      Summary:
      fix a few build warnings that are treated as failures with more strict MSVC warning settings
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6517
      
      Differential Revision: D20401325
      
      Pulled By: pdillinger
      
      fbshipit-source-id: b44979dfaafdc7b3b8cb44a565400a99b331dd30
      07a3f7f0
    • C
      Remove copy of pairs from the for range loop (#6514) · 6dea7530
      Cheng Chang 提交于
      Summary:
      Remove copy of pairs from the for range loop
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6514
      
      Test Plan: make check
      
      Differential Revision: D20389688
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 1c772091f955be33267514010f3596c61a6f46b5
      6dea7530
    • C
      Cache result of GetLogicalBufferSize in Linux (#6457) · 2d9efc9a
      Cheng Chang 提交于
      Summary:
      In Linux, when reopening DB with many SST files, profiling shows that 100% system cpu time spent for a couple of seconds for `GetLogicalBufferSize`. This slows down MyRocks' recovery time when site is down.
      
      This PR introduces two new APIs:
      1. `Env::RegisterDbPaths` and `Env::UnregisterDbPaths` lets `DB` tell the env when it starts or stops using its database directories . The `PosixFileSystem` takes this opportunity to set up a cache from database directories to the corresponding logical block sizes.
      2. `LogicalBlockSizeCache` is defined only for OS_LINUX to cache the logical block sizes.
      
      Other modifications:
      1. rename `logical buffer size` to `logical block size` to be consistent with Linux terms.
      2. declare `GetLogicalBlockSize` in `PosixHelper` to expose it to `PosixFileSystem`.
      3. change the functions `IOError` and `IOStatus` in `env/io_posix.h` to have external linkage since they are used in other translation units too.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6457
      
      Test Plan:
      1. A new unit test is added for `LogicalBlockSizeCache` in `env/io_posix_test.cc`.
      2. A new integration test is added for `DB` operations related to the cache in `db/db_logical_block_size_cache_test.cc`.
      
      `make check`
      
      Differential Revision: D20131243
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 3077c50f8065c0bffb544d8f49fb10bba9408d04
      2d9efc9a
    • S
      Include more information in file lock failure (#6507) · 331e6199
      sdong 提交于
      Summary:
      When users fail to open a DB with file lock failure, it is sometimes hard for users to debug. We now include the time the lock is acquired and the thread ID that acquired the lock, to help users debug problems like this. Default Env's thread ID is used.
      
      Since type of lockedFiles is changed, rename it to follow naming convention too.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6507
      
      Test Plan: Add a unit test and improve an existing test to validate the case.
      
      Differential Revision: D20378333
      
      fbshipit-source-id: 312fe0e9733fd1d1e9969c321b90ce523cf4708a
      331e6199
    • L
      Disambiguate CustomFieldTags for the unity build (#6513) · 37a635cf
      Levi Tamasi 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6513
      
      Test Plan: `make unity_test`
      
      Differential Revision: D20388919
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 88dbceab0723a54ee3939e1644e13dc9a4c70420
      37a635cf
    • A
      Add ppc64le builds to Travis (#6144) · 8fc20ac4
      Adam Retter 提交于
      Summary:
      Let's see how this goes...
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6144
      
      Differential Revision: D20387515
      
      Pulled By: pdillinger
      
      fbshipit-source-id: ba2669348c267141dfddff910b4c2224a22cbb38
      8fc20ac4
    • A
      Update to latest Snappy to fix compilation issue on latest MacOS XCode (#6496) · 65b60db9
      Adam Retter 提交于
      Summary:
      * **macOS version:** 10.15.2 (Catalina)
      * **XCode/Clang version:** Apple clang version 11.0.0 (clang-1100.0.33.16)
      
      Before this bugfix the error generated is:
      
      ```
      In file included from ./util/compression.h:23:
      ./snappy-1.1.7/snappy.h:76:59: error: unknown type name 'string'; did you mean 'std::string'?
        size_t Compress(const char* input, size_t input_length, string* output);
                                                                ^~~~~~
                                                                std::string
      /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/iosfwd:211:65: note: 'std::string' declared here
      typedef basic_string<char, char_traits<char>, allocator<char> > string;
                                                                      ^
      In file included from db/builder.cc:10:
      In file included from ./db/builder.h:12:
      In file included from ./db/range_tombstone_fragmenter.h:15:
      In file included from ./db/pinned_iterators_manager.h:12:
      In file included from ./table/internal_iterator.h:13:
      In file included from ./table/format.h:25:
      In file included from ./options/cf_options.h:14:
      In file included from ./util/compression.h:23:
      ./snappy-1.1.7/snappy.h:85:19: error: unknown type name 'string'; did you mean 'std::string'?
                        string* uncompressed);
                        ^~~~~~
                        std::string
      /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/iosfwd:211:65: note: 'std::string' declared here
      typedef basic_string<char, char_traits<char>, allocator<char> > string;
                                                                      ^
      2 errors generated.
      make: *** [jls/db/builder.o] Error 1
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6496
      
      Differential Revision: D20389254
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 2864245c8d0dba7b2ab81294241a62f2adf02e20
      65b60db9
  4. 11 3月, 2020 3 次提交
    • A
      When CMake fails to download a file, display the error message (#6511) · 00c4ab01
      Adam Retter 提交于
      Summary:
      This helps to diagnose errors in the CMake build where it tries to retrieve dependencies.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6511
      
      Differential Revision: D20387392
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 7028dfd62704bcc747f39ff864ea9c9bf51cd1be
      00c4ab01
    • L
      Split BlobFileState into an immutable and a mutable part (#6502) · f5bc3b99
      Levi Tamasi 提交于
      Summary:
      It's never too soon to refactor something. The patch splits the recently
      introduced (`VersionEdit` related) `BlobFileState` into two classes
      `BlobFileAddition` and `BlobFileGarbage`. The idea is that once blob files
      are closed, they are immutable, and the only thing that changes is the
      amount of garbage in them. In the new design, `BlobFileAddition` contains
      the immutable attributes (currently, the count and total size of all blobs, checksum
      method, and checksum value), while `BlobFileGarbage` contains the mutable
      GC-related information elements (count and total size of garbage blobs). This is a
      better fit for the GC logic and is more consistent with how SST files are handled.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6502
      
      Test Plan: `make check`
      
      Differential Revision: D20348352
      
      Pulled By: ltamasi
      
      fbshipit-source-id: ff93f0121e80ab15e0e0a6525ba0d6af16a0e008
      f5bc3b99
    • C
      Optional sequence number exporting during checkpoint creation (#5528) · 4028eba6
      Chao Zhao 提交于
      Summary:
      Add sequence_number_ptr to the checkpoint interface to expose the sequence number during taking the checkpoint. The number will be consistent with the seq # in rocksdb log.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5528
      
      Test Plan: make check -j64
      
      Reviewed By: Winger1994
      
      Differential Revision: D16080209
      
      fbshipit-source-id: 6dc3c7680287ee97d673c5e61f89aae1f43e33df
      4028eba6
  5. 10 3月, 2020 1 次提交
    • Y
      Support options.max_open_files != -1 with FIFO compaction (#6503) · fd1da221
      Yanqin Jin 提交于
      Summary:
      Allow user to specify options.max_open_files != -1 with FIFO compaction.
      If max_open_files != -1, not all table files are kept open.
      In the past, FIFO style compaction requires all table files to be open in order
      to read file creation time from table properties. Later, we added file creation
      time to MANIFEST, making it possible to read file creation time without opening
      file.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6503
      
      Test Plan: make check
      
      Differential Revision: D20353758
      
      Pulled By: riversand963
      
      fbshipit-source-id: ba5c61a648419e47e9ef6d74e0e280e3ee24f296
      fd1da221
  6. 07 3月, 2020 3 次提交
    • Y
      Iterator with timestamp (#6255) · d93812c9
      Yanqin Jin 提交于
      Summary:
      Preliminary support for iterator with user timestamp. Current implementation does not consider merge operator and reverse iterator. Auto compaction is also disabled in unit tests.
      
      Create an iterator with timestamp.
      ```
      ...
      read_opts.timestamp = &ts;
      auto* iter = db->NewIterator(read_opts);
      // target is key without timestamp.
      for (iter->Seek(target); iter->Valid(); iter->Next()) {}
      for (iter->SeekToFirst(); iter->Valid(); iter->Next()) {}
      delete iter;
      read_opts.timestamp = &ts1;
      // lower_bound and upper_bound are without timestamp.
      read_opts.iterate_lower_bound = &lower_bound;
      read_opts.iterate_upper_bound = &upper_bound;
      auto* iter1 = db->NewIterator(read_opts);
      // Do Seek or SeekToFirst()
      delete iter1;
      ```
      
      Test plan (dev server)
      ```
      $make check
      ```
      
      Simple benchmarking (dev server)
      1. The overhead introduced by this PR even when timestamp is disabled.
      key size: 16 bytes
      value size: 100 bytes
      Entries: 1000000
      Data reside in main memory, and try to stress iterator.
      Repeated three times on master and this PR.
      - Seek without next
      ```
      ./db_bench -db=/dev/shm/rocksdbtest-1000 -benchmarks=fillseq,seekrandom -enable_pipelined_write=false -disable_wal=true -format_version=3
      ```
      master: 159047.0 ops/sec
      this PR: 158922.3 ops/sec (2% drop in throughput)
      - Seek and next 10 times
      ```
      ./db_bench -db=/dev/shm/rocksdbtest-1000 -benchmarks=fillseq,seekrandom -enable_pipelined_write=false -disable_wal=true -format_version=3 -seek_nexts=10
      ```
      master: 109539.3 ops/sec
      this PR: 107519.7 ops/sec (2% drop in throughput)
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6255
      
      Differential Revision: D19438227
      
      Pulled By: riversand963
      
      fbshipit-source-id: b66b4979486f8474619f4aa6bdd88598870b0746
      d93812c9
    • C
      Remove memcpy from RandomAccessFileReader::Read in direct IO mode (#6455) · 0a0151fb
      Cheng Chang 提交于
      Summary:
      In direct IO mode, RandomAccessFileReader::Read allocates an internal aligned buffer, and then copies the result into the scratch buffer. If the result is only temporarily used inside a function, there is no need to do the memcpy and just let the result Slice refer to the internally allocated buffer.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6455
      
      Test Plan: make check
      
      Differential Revision: D20106753
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 44f505843837bba47a56e3fa2c4dd3bd76486b58
      0a0151fb
    • O
      Fix spelling: commited -> committed (#6481) · f6c2777d
      Otto Kekäläinen 提交于
      Summary:
      In most places in the code the variable names are spelled correctly as
      COMMITTED but in a couple places not. This fixes them and ensures the
      variable is always called COMMITTED everywhere.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6481
      
      Differential Revision: D20306776
      
      Pulled By: pdillinger
      
      fbshipit-source-id: b6c1bfe41db559b4bc6955c530934460c07f7022
      f6c2777d
  7. 06 3月, 2020 1 次提交
  8. 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
  9. 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
  10. 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
  11. 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