1. 02 4月, 2020 3 次提交
    • S
      Add dependency of gtest on pthread (#6572) · 719c0f91
      Sylvain Oliver 提交于
      Summary:
      Compilation of rocksdb fails because -lpthread flag is needed by gtest
      
      **Before modification** :
      /usr/bin/c++   -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -std=c++11 -march=native -Werror -fno-builtin-memcmp -g -DROCKSDB_USE_RTTI   CMakeFiles/table_reader_bench.dir/table/table_reader_bench.cc.o  -o table_reader_bench -Wl,-rpath,/develop/src/rocksdb/build librocksdb.so.6.8.0 libtestharness.a /usr/lib/x86_64-linux-gnu/libgflags.so -lpthread third-party/gtest-1.8.1/fused-src/gtest/libgtest.a
      
      **After modification** :
      /usr/bin/c++   -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -std=c++11 -march=native -Werror -fno-builtin-memcmp -g -DROCKSDB_USE_RTTI   CMakeFiles/table_reader_bench.dir/table/table_reader_bench.cc.o  -o table_reader_bench -Wl,-rpath,/develop/src/rocksdb/build librocksdb.so.6.8.0 libtestharness.a /usr/lib/x86_64-linux-gnu/libgflags.so third-party/gtest-1.8.1/fused-src/gtest/libgtest.a -lpthread
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6572
      
      Reviewed By: anand1976
      
      Differential Revision: D20789059
      
      Pulled By: ajkr
      
      fbshipit-source-id: 97329f14b9044b12c8a415da3d5f27b256ff8ff7
      719c0f91
    • S
      Fix a bug that crashes the service when write buffer manager fails to insert to block cache (#6619) · 57096ab1
      sdong 提交于
      Summary:
      https://github.com/facebook/rocksdb/issues/6247 reports that when write buffer manager fails to insert the dummy entry to block cache, null pointer is still stored and used to release the handle and cause corruption. Fix the bug by not releasing it with null handle.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6619
      
      Test Plan: Add a unit test that fails without the fix.
      
      Reviewed By: ajkr
      
      Differential Revision: D20776769
      
      fbshipit-source-id: 4127fbd9f295a0a3e45774746ffcd91f939f6287
      57096ab1
    • Y
      Fix clang analyze error (#6622) · b5818f87
      Yanqin Jin 提交于
      Summary:
      As title. https://github.com/facebook/rocksdb/issues/6612 caused clang analyze to fail with the error:
      ```
      db/compaction/compaction_picker_fifo.cc:105:39: warning: Called C++ object pointer is null
                           cf_name.c_str(), f->fd.GetNumber(), creation_time);
                                            ^~~~~~~~~~~~~~~~~
      ./logging/logging.h:59:36: note: expanded from macro 'ROCKS_LOG_BUFFER'
                                       ##__VA_ARGS__)
                                         ^~~~~~~~~~~
      1 warning generated.
      ```
      
      Test Plan (devserver):
      USE_CLANG=1 make analyze
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6622
      
      Reviewed By: ltamasi
      
      Differential Revision: D20787407
      
      Pulled By: riversand963
      
      fbshipit-source-id: a5de4910cc1aa0d3481a73ec114578925bfd63f7
      b5818f87
  2. 01 4月, 2020 3 次提交
  3. 31 3月, 2020 3 次提交
  4. 30 3月, 2020 2 次提交
  5. 29 3月, 2020 1 次提交
    • C
      Be able to decrease background thread's CPU priority when creating database backup (#6602) · ee50b8d4
      Cheng Chang 提交于
      Summary:
      When creating a database backup, the background threads will not only consume IO resources by copying files, but also consuming CPU such as by computing checksums. During peak times, the CPU consumption by the background threads might affect online queries.
      
      This PR makes it possible to decrease CPU priority of these threads when creating a new backup.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6602
      
      Test Plan: make check
      
      Reviewed By: siying, zhichao-cao
      
      Differential Revision: D20683216
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 9978b9ed9488e8ce135e90ca083e5b4b7221fd84
      ee50b8d4
  6. 28 3月, 2020 5 次提交
  7. 27 3月, 2020 5 次提交
    • P
      Streamline persistent_cache_test for testing efficiency (#6601) · e91d1a21
      Peter Dillinger 提交于
      Summary:
      This test was written like a stress test, using up to 3x26GB
      RSS memory during parallel 'make check'. Now, while this code is mostly
      dormant, I've made the "for Travis" versions of the expensive tests the
      canonical versions and disabled the expensive versions. This has the
      side benefit of removing some arbitrary conditional compilation.
      
      For unknown reason, the super expensive tests were gated on
      Snappy_Supported, which appears to be irrelevant, so I removed it.
      
      The tests can be fixed / improved / migrated to stress test if/when they
      are deemed important again.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6601
      
      Test Plan:
      make check + CI
      
      ./persistent_cache_test Before:
      ...
      [==========] 10 tests from 2 test cases ran. (114541 ms total)
      [  PASSED  ] 10 tests.
      YOU HAVE 1 DISABLED TEST
      
      After:
      ...
      [==========] 3 tests from 2 test cases ran. (1714 ms total)
      [  PASSED  ] 3 tests.
      YOU HAVE 10 DISABLED TESTS
      
      Reviewed By: siying
      
      Differential Revision: D20680983
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 2be0fde13eeb0a71110ac7f5477cfe63996a509e
      e91d1a21
    • L
      Add blob files to VersionStorageInfo/VersionBuilder (#6597) · 6f62322f
      Levi Tamasi 提交于
      Summary:
      The patch adds a couple of classes to represent metadata about
      blob files: `SharedBlobFileMetaData` contains the information elements
      that are immutable (once the blob file is closed), e.g. blob file number,
      total number and size of blob files, checksum method/value, while
      `BlobFileMetaData` contains attributes that can vary across versions like
      the amount of garbage in the file. There is a single `SharedBlobFileMetaData`
      for each blob file, which is jointly owned by the `BlobFileMetaData` objects
      that point to it; `BlobFileMetaData` objects, in turn, are owned by `Version`s
      and can also be shared if the (immutable _and_ mutable) state of the blob file
      is the same in two versions.
      
      In addition, the patch adds the blob file metadata to `VersionStorageInfo`, and extends
      `VersionBuilder` so that it can apply blob file related `VersionEdit`s (i.e. those
      containing `BlobFileAddition`s and/or `BlobFileGarbage`), and save blob file metadata
      to a new `VersionStorageInfo`. Consistency checks are also extended to ensure
      that table files point to blob files that are part of the `Version`, and that all blob files
      that are part of any given `Version` have at least some _non_-garbage data in them.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6597
      
      Test Plan: `make check`
      
      Reviewed By: riversand963
      
      Differential Revision: D20656803
      
      Pulled By: ltamasi
      
      fbshipit-source-id: f1f74d135045b3b42d0146f03ee576ef0a4bfd80
      6f62322f
    • L
      Use function objects as deleters in the block cache (#6545) · 6301dbe7
      Levi Tamasi 提交于
      Summary:
      As the first step of reintroducing eviction statistics for the block
      cache, the patch switches from using simple function pointers as deleters
      to function objects implementing an interface. This will enable using
      deleters that have state, like a smart pointer to the statistics object
      that is to be updated when an entry is removed from the cache. For now,
      the patch adds a deleter template class `SimpleDeleter`, which simply
      casts the `value` pointer to its original type and calls `delete` or
      `delete[]` on it as appropriate. Note: to prevent object lifecycle
      issues, deleters must outlive the cache entries referring to them;
      `SimpleDeleter` ensures this by using the ("leaky") Meyers singleton
      pattern.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6545
      
      Test Plan: `make asan_check`
      
      Reviewed By: siying
      
      Differential Revision: D20475823
      
      Pulled By: ltamasi
      
      fbshipit-source-id: fe354c33dd96d9bafc094605462352305449a22a
      6301dbe7
    • M
      Fix iterator reading filter block despite read_tier == kBlockCacheTier (#6562) · 963af52f
      Mike Kolupaev 提交于
      Summary:
      We're seeing iterators with `ReadOptions::read_tier == kBlockCacheTier` sometimes doing file reads. Stack trace:
      
      ```
      rocksdb::RandomAccessFileReader::Read(unsigned long, unsigned long, rocksdb::Slice*, char*, bool) const
      rocksdb::BlockFetcher::ReadBlockContents()
      rocksdb::Status rocksdb::BlockBasedTable::MaybeReadBlockAndLoadToCache<rocksdb::ParsedFullFilterBlock>(rocksdb::FilePrefetchBuffer*, rocksdb::ReadOptions const&, rocksdb::BlockHandle const&, rocksdb::UncompressionDict const&, rocksdb::CachableEntry<rocksdb::ParsedFullFilterBlock>*, rocksdb::BlockType, rocksdb::GetContext*, rocksdb::BlockCacheLookupContext*, rocksdb::BlockContents*) const
      rocksdb::Status rocksdb::BlockBasedTable::RetrieveBlock<rocksdb::ParsedFullFilterBlock>(rocksdb::FilePrefetchBuffer*, rocksdb::ReadOptions const&, rocksdb::BlockHandle const&, rocksdb::UncompressionDict const&, rocksdb::CachableEntry<rocksdb::ParsedFullFilterBlock>*, rocksdb::BlockType, rocksdb::GetContext*, rocksdb::BlockCacheLookupContext*, bool, bool) const
      rocksdb::FilterBlockReaderCommon<rocksdb::ParsedFullFilterBlock>::ReadFilterBlock(rocksdb::BlockBasedTable const*, rocksdb::FilePrefetchBuffer*, rocksdb::ReadOptions const&, bool, rocksdb::GetContext*, rocksdb::BlockCacheLookupContext*, rocksdb::CachableEntry<rocksdb::ParsedFullFilterBlock>*)
      rocksdb::FilterBlockReaderCommon<rocksdb::ParsedFullFilterBlock>::GetOrReadFilterBlock(bool, rocksdb::GetContext*, rocksdb::BlockCacheLookupContext*, rocksdb::CachableEntry<rocksdb::ParsedFullFilterBlock>*) const
      rocksdb::FullFilterBlockReader::MayMatch(rocksdb::Slice const&, bool, rocksdb::GetContext*, rocksdb::BlockCacheLookupContext*) const
      rocksdb::FullFilterBlockReader::RangeMayExist(rocksdb::Slice const*, rocksdb::Slice const&, rocksdb::SliceTransform const*, rocksdb::Comparator const*, rocksdb::Slice const*, bool*, bool, rocksdb::BlockCacheLookupContext*)
      rocksdb::BlockBasedTable::PrefixMayMatch(rocksdb::Slice const&, rocksdb::ReadOptions const&, rocksdb::SliceTransform const*, bool, rocksdb::BlockCacheLookupContext*) const
      rocksdb::BlockBasedTableIterator<rocksdb::DataBlockIter, rocksdb::Slice>::SeekImpl(rocksdb::Slice const*)
      rocksdb::ForwardIterator::SeekInternal(rocksdb::Slice const&, bool)
      rocksdb::DBIter::Seek(rocksdb::Slice const&)
      ```
      
      `BlockBasedTableIterator::CheckPrefixMayMatch` was missing a check for `kBlockCacheTier`. This PR adds it.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6562
      
      Test Plan: deployed it to a logdevice test cluster and looked at logdevice's IO tracing.
      
      Reviewed By: siying
      
      Differential Revision: D20529368
      
      Pulled By: al13n321
      
      fbshipit-source-id: 65bf33964b1951464415c900336635fb20919611
      963af52f
    • P
      Re-update check_format_compatible.sh for default format_version=4 (#6598) · e70629e5
      Peter Dillinger 提交于
      Summary:
      Forward compatibility with new defaults only starts from 5.16
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6598
      
      Test Plan: facebook automated test (so much easier than running myself)
      
      Reviewed By: riversand963
      
      Differential Revision: D20665553
      
      Pulled By: pdillinger
      
      fbshipit-source-id: b846bfaccf4d0946f92d323a3b4ee6e3e548df93
      e70629e5
  8. 26 3月, 2020 1 次提交
  9. 25 3月, 2020 6 次提交
    • P
      Update default BBTO::format_version from 2 to 4 (#6582) · 93b80ca7
      Peter Dillinger 提交于
      Summary:
      Version 4 has been around long enough, for compatibility and
      extensive validation, that it should be default.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6582
      
      Test Plan:
      CI (w.r.t. changing the default; format_version=4 is well
      tested and massively in production at Facebook)
      
      Reviewed By: siying
      
      Differential Revision: D20625233
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 2f83ed874cffa4a39bc7a66cdf3833b978fbb948
      93b80ca7
    • Y
      Update a few scripts to be python3 compatible (#6525) · ccf76764
      Yanqin Jin 提交于
      Summary:
      There are a few scripts with python3 compatibility issues that were not
      detected by automated tool before. Update them now.
      
      Test Plan (devserver):
      python2 tools/ldb_test.py
      python3 tools/ldb_test.py
      
      python2 tools/write_stress_runner.py --runtime_sec=30
      python3 tools/write_stress_runner.py --runtime_sec=30
      
      python2 tools/db_crashtest.py --simple --interval=2 --duration=10 blackbox
      python3 tools/db_crashtest.py --simple --interval=2 --duration=10 blackbox
      
      python2 tools/db_crashtest.py --simple --duration=10 --random_kill_odd=1000 --ops_per_thread=1000 whitebox
      python3 tools/db_crashtest.py --simple --duration=10 --random_kill_odd=1000 --ops_per_thread=1000 whitebox
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6525
      
      Reviewed By: cheng-chang
      
      Differential Revision: D20627820
      
      Pulled By: riversand963
      
      fbshipit-source-id: 4b25a7bd4d001c7f868be8b640ef876523be6ca3
      ccf76764
    • S
      CompactRange() to use bottom pool when goes to bottommost level (#6593) · 6fd0ed49
      sdong 提交于
      Summary:
      In automatic compaction, if a compaction is bottommost, it goes to bottom thread pool. We should do the same for manual compaction too.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6593
      
      Test Plan: Add a unit test. See all existing tests pass.
      
      Reviewed By: ajkr
      
      Differential Revision: D20637408
      
      fbshipit-source-id: cb03031e8f895085f7acf6d2d65e69e84c9ddef3
      6fd0ed49
    • A
      Create a thread in DeleteScheduler only when rate limit enabled (#6564) · ceeca754
      akankshamahajan 提交于
      Summary:
      Create a thread in DeleteScheduler only when delete rate limit is set
      	 because when there is no rate limit on deletion, a thread per DeleteScheduler
      	 consumes unnecessary resources.
      
      Test Plan: make -j64 check
      
      Reviewed By: riversand963
      
      Differential Revision: D20538138
      
      Pulled By: akankshamahajan15
      
      fbshipit-source-id: 137499e810e817156345c30d627f8678b9adadf7
      ceeca754
    • H
      multiget support for timestamps (#6483) · a6ce5c82
      Huisheng Liu 提交于
      Summary:
      Add timestamp support for MultiGet().
      timestamp from readoptions is honored, and timestamps can be returned along with values.
      
      MultiReadRandom 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 17bef7d3):
        multireadrandom :     104.173 micros/op 307167 ops/sec; (5462999 of 5462999 found)
      This PR:
        multireadrandom :     104.199 micros/op 307095 ops/sec; (5307999 of 5307999 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 --statistics=0 --stats_per_interval=0 --stats_interval=1048576 --histogram=0 --use_plain_table=1 --open_files=-1 --memtablerep=prefix_hash --bloom_bits=10 --bloom_locality=1 --duration=600 --benchmarks=multireadrandom --use_existing_db=1 --num=25000000 --threads=32 --allow_concurrent_memtable_write=0
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6483
      
      Reviewed By: anand1976
      
      Differential Revision: D20498373
      
      Pulled By: riversand963
      
      fbshipit-source-id: 8505f22bc40fd791bc7dd05e48d7e67c91edb627
      a6ce5c82
    • S
      Fix bug that number of table loading threads is set as a boolean (#6576) · 921cdd37
      sdong 提交于
      Summary:
      When applying a new version in non DB open case, optimize_filters_for_hits is used for max_threads, which is clearly a bug. It is not clear what the indented value in the first place, but it value 1 makes sense here, which would create no extra threads. This bug is not expected to cause user visible problems, assuming C++ implicitly cast bool to 0 or 1.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6576
      
      Test Plan: Run all exsiting test.
      
      Reviewed By: ajkr
      
      Differential Revision: D20602467
      
      fbshipit-source-id: 40b2cd8619aba09ae9242b36c415464db3c9b737
      921cdd37
  10. 24 3月, 2020 5 次提交
    • A
      Simplify migration to FileSystem API (#6552) · a9d168cf
      anand76 提交于
      Summary:
      The current Env/FileSystem API separation has a couple of issues -
      1. It requires the user to specify 2 options - ```Options::env``` and ```Options::file_system``` - which means they have to make code changes to benefit from the new APIs. Furthermore, there is a risk of accessing the same APIs in two different ways, through Env in the old way and through FileSystem in the new way. The two may not always match, for example, if env is ```PosixEnv``` and FileSystem is a custom implementation. Any stray RocksDB calls to env will use the ```PosixEnv``` implementation rather than the file_system implementation.
      2. There needs to be a simple way for the FileSystem developer to instantiate an Env for backward compatibility purposes.
      
      This PR solves the above issues and simplifies the migration in the following ways -
      1. Embed a shared_ptr to the ```FileSystem``` in the ```Env```, and remove ```Options::file_system``` as a configurable option. This way, no code changes will be required in application code to benefit from the new API. The default Env constructor uses a ```LegacyFileSystemWrapper``` as the embedded ```FileSystem```.
      1a. - This also makes it more robust by ensuring that even if RocksDB
        has some stray calls to Env APIs rather than FileSystem, they will go
        through the same object and thus there is no risk of getting out of
        sync.
      2. Provide a ```NewCompositeEnv()``` API that can be used to construct a
      PosixEnv with a custom FileSystem implementation. This eliminates an
      indirection to call Env APIs, and relieves the FileSystem developer of
      the burden of having to implement wrappers for the Env APIs.
      3. Add a couple of missing FileSystem APIs - ```SanitizeEnvOptions()``` and
      ```NewLogger()```
      
      Tests:
      1. New unit tests
      2. make check and make asan_check
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6552
      
      Reviewed By: riversand963
      
      Differential Revision: D20592038
      
      Pulled By: anand1976
      
      fbshipit-source-id: c3801ad4153f96d21d5a3ae26c92ba454d1bf1f7
      a9d168cf
    • C
      Initialize scratch to nullptr explicitly to make clang analyzer happy (#6577) · 43aee93d
      Cheng Chang 提交于
      Summary:
      `scratch` is not initialized in `Align` because it will be set outside of it. But clang analyzer is strict on initializing it before return.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6577
      
      Test Plan: make analyze
      
      Reviewed By: siying
      
      Differential Revision: D20607303
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 2843d759345a057a8e122178d30b90deff0f9b2a
      43aee93d
    • Z
      Fix the MultiGet testing failure in Circleci (#6578) · d300d109
      Zhichao Cao 提交于
      Summary:
      The MultiGet test in db_basic_test fails in CircleCI vs2019. The reason is that even Snappy compression is enabled, the first compression type is still kNoCompression. This PR checks the list and ensure that only when compression is enable and the compression type is valid, compression will be enabled. Such that, it will not fail the combined read test in MultiGet.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6578
      
      Test Plan: make check, db_basic_test.
      
      Reviewed By: anand1976
      
      Differential Revision: D20607529
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: dcead264d5c2da105912c18caad34b8510bb04b0
      d300d109
    • Y
      Fix LITE build (#6575) · 617f4792
      Yanqin Jin 提交于
      Summary:
      Fix LITE build by excluding some unit tests that use features not supported in LITE.
      ```
      db/db_basic_test.cc:1778:8: error: ‘void rocksdb::{anonymous}::TableFileListener::OnTableFileCreated(const rocksdb::TableFileCreationInfo&)’ marked ‘override’, but does not override
         void OnTableFileCreated(const TableFileCreationInfo& info) override {
              ^~~~~~~~~~~~~~~~~~
      make: *** [db/db_basic_test.o] Error 1
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6575
      
      Reviewed By: ltamasi
      
      Differential Revision: D20598598
      
      Pulled By: riversand963
      
      fbshipit-source-id: 367f7cb2500360ad57030b138a94c0f731a04339
      617f4792
    • Z
      Revert "Added the safe-to-ignore tag to version_edit (#6530)" (#6569) · 5c6346c4
      Zhichao Cao 提交于
      Summary:
      This reverts commit e10553f2.
      
      Pass make asan_check
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6569
      
      Reviewed By: riversand963
      
      Differential Revision: D20574319
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: ce36981a21596f5f2e14da6a59a2bb3619509a8b
      5c6346c4
  11. 21 3月, 2020 6 次提交
    • Y
      Attempt to recover from db with missing table files (#6334) · fb09ef05
      Yanqin Jin 提交于
      Summary:
      There are situations when RocksDB tries to recover, but the db is in an inconsistent state due to SST files referenced in the MANIFEST being missing. In this case, previous RocksDB will just fail the recovery and return a non-ok status.
      This PR enables another possibility. During recovery, RocksDB checks possible MANIFEST files, and try to recover to the most recent state without missing table file. `VersionSet::Recover()` applies version edits incrementally and "materializes" a version only when this version does not reference any missing table file. After processing the entire MANIFEST, the version created last will be the latest version.
      `DBImpl::Recover()` calls `VersionSet::Recover()`. Afterwards, WAL replay will *not* be performed.
      To use this capability, set `options.best_efforts_recovery = true` when opening the db. Best-efforts recovery is currently incompatible with atomic flush.
      
      Test plan (on devserver):
      ```
      $make check
      $COMPILE_WITH_ASAN=1 make all && make check
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6334
      
      Reviewed By: anand1976
      
      Differential Revision: D19778960
      
      Pulled By: riversand963
      
      fbshipit-source-id: c27ea80f29bc952e7d3311ecf5ee9c54393b40a8
      fb09ef05
    • C
      Support direct IO in RandomAccessFileReader::MultiRead (#6446) · 4fc21664
      Cheng Chang 提交于
      Summary:
      By supporting direct IO in RandomAccessFileReader::MultiRead, the benefits of parallel IO (IO uring) and direct IO can be combined.
      
      In direct IO mode, read requests are aligned and merged together before being issued to RandomAccessFile::MultiRead, so blocks in the original requests might share the same underlying buffer, the shared buffers are returned in `aligned_bufs`, which is a new parameter of the `MultiRead` API.
      
      For example, suppose alignment requirement for direct IO is 4KB, one request is (offset: 1KB, len: 1KB), another request is (offset: 3KB, len: 1KB), then since they all belong to page (offset: 0, len: 4KB), `MultiRead` only reads the page with direct IO into a buffer on heap, and returns 2 Slices referencing regions in that same buffer. See `random_access_file_reader_test.cc` for more examples.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6446
      
      Test Plan: Added a new test `random_access_file_reader_test.cc`.
      
      Reviewed By: anand1976
      
      Differential Revision: D20097518
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: ca48a8faf9c3af146465c102ef6b266a363e78d1
      4fc21664
    • C
      Get block size only in direct IO mode (#6522) · 5fd152b7
      Cheng Chang 提交于
      Summary:
      When `use_direct_reads` and `use_direct_writes` are `false`, `logical_sector_size_` inside various `*File` implementations are not actually used, so `GetLogicalBlockSize` does not necessarily need to be called for `logical_sector_size_`, just set a default page size.
      
      This is a follow up PR for https://github.com/facebook/rocksdb/pull/6457.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6522
      
      Test Plan: make check
      
      Reviewed By: siying
      
      Differential Revision: D20408885
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: f2d3808f41265237e7fa2c0be9f084f8fa97fe3d
      5fd152b7
    • S
      Change HashMap::Insert()'s value to a const reference (#6567) · 6c50fe1e
      sdong 提交于
      Summary:
      When building RocksDB on VS2015, an error shows up with
      
      hash_map.h(39): error C2719: 'value': formal parameter with requested alignment of 8 won't be aligned
      
      Making the reference a reference can solve the problem, and there isn't a reason we can't do that, at least for the current use of the hash map.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6567
      
      Test Plan: See CI tests pass.
      
      Reviewed By: pdillinger
      
      Differential Revision: D20548543
      
      fbshipit-source-id: 255b55d74cf68a0b324e6f504c56608a97ea6276
      6c50fe1e
    • P
      Exclude more Travis builds for each pull request (#6557) · 66cd07c6
      Peter Dillinger 提交于
      Summary:
      This commit fixes an incorrect version of this change that was previously landed.
      
      On recently adding ARM64 and PPC64LE builds to Travis, we
      seem to have hit some parallel build limits that dramatically increased
      queue times.
      
      This change majorly limits the configurations for ARM64 and PPC64LE to
      build on each pull request, but keeps the large matrix for branch
      builds.
      
      In the process, I changed some previously excluded osx build configurations
      to happen in branch builds.
      
      NB: we might want to move master branch Travis build to daily trigger
      rather than push trigger to further reduce contention.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6557
      
      Test Plan: Travis only
      
      Reviewed By: siying
      
      Differential Revision: D20563425
      
      Pulled By: pdillinger
      
      fbshipit-source-id: d619eb9f196486ed000364aa40de4661f0b1029d
      66cd07c6
    • B
      Make testpilot recognize that these tests have coverage instrumentation · d2e3822d
      Ben Mehne 提交于
      Summary: TestPilot uses two flags to determine whether coverage is already instrumented: `fbcode_macros` and `coverage`.  Normally, these two tags are added automatically to cpp tests, but this is a fake cpp test, so we must manually add them.  The first is easy - `fbcode_macros` is added by the `custom_unittest` library, which is in `fbcode_macros`, so it is appropriate.  The second is harder - we need to verify that we should add the macro.  We do this using the `coverage.bzl` functions.
      
      Reviewed By: siying
      
      Differential Revision: D20549040
      
      fbshipit-source-id: d2732b3ec26f3dff065efdf398abe3241075bb2f
      d2e3822d