1. 16 7月, 2020 6 次提交
    • A
      Add "build-examples" in CircleCI (#7136) · a7feebd6
      Akanksha Mahajan 提交于
      Summary:
      Add "examples" build (which build examples folder in rocksdb) in TravisCI to CircleCI. This is helpful before pull request.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7136
      
      Test Plan: Watch for CircleCI results to succeed
      
      Reviewed By: jay-zhuang
      
      Differential Revision: D22555528
      
      Pulled By: akankshamahajan15
      
      fbshipit-source-id: 6bca16647760d5f0131f064765fe9e88e034c578
      a7feebd6
    • S
      Suppress a TSAN warning (#7126) · ca5a069a
      sdong 提交于
      Summary:
      TSAN shows warning with clang with warning similar to this:
      
      WARNING: ThreadSanitizer: data race (pid=10159)
        Atomic write of size 8 at 0x7b5000002890 by thread T33:
          #0 __tsan_atomic64_store <null> (db_test+0x4ca2b5)
          https://github.com/facebook/rocksdb/issues/1 std::__atomic_base<unsigned long>::store(unsigned long, std::memory_order) /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/atomic_base.h:374:2 (db_test+0x774fde)
          https://github.com/facebook/rocksdb/issues/2 rocksdb::VersionSet::SetLastSequence(unsigned long) /home/circleci/project/./db/version_set.h:1057:20 (db_test+0x774fde)
          https://github.com/facebook/rocksdb/issues/3 rocksdb::DBImpl::WriteImpl(rocksdb::WriteOptions const&, rocksdb::WriteBatch*, rocksdb::WriteCallback*, unsigned long*, unsigned long, bool, unsigned long*, unsigned long, rocksdb::PreReleaseCallback*) /home/circleci/project/db/db_impl/db_impl_write.cc:449:18 (db_test+0x774fde)
      ......
        Previous read of size 8 at 0x7b5000002890 by thread T5 (mutexes: write M1044689462619020832):
          #0 rocksdb::DBImpl::ReleaseSnapshot(rocksdb::Snapshot const*) /home/circleci/project/db/db_impl/db_impl.cc (db_test+0x6f4ae7)
          https://github.com/facebook/rocksdb/issues/1 rocksdb::(anonymous namespace)::MTThreadBody(void*) /home/circleci/project/db/db_test.cc:2514:13 (db_test+0x56ac59)
          https://github.com/facebook/rocksdb/issues/2 rocksdb::(anonymous namespace)::StartThreadWrapper(void*) /home/circleci/project/env/env_posix.cc:443:3 (db_test+0x88c4cd)
      
      It is not limited to ReleaseSnapshot() and rocksdb::DBImpl::MultiCFSnapshot().
      
      While we are not 100% sure it doesn't indicate any correctness violation, we suppress them for now to keep TSAN clean with more tests so that we can cover more bugs with CI.
      
      In the gcc runs we have been running, this warning rarely shows up.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7126
      
      Test Plan: See the mini-TSAN test to pass with reasonable run time.
      
      Reviewed By: ajkr
      
      Differential Revision: D22552375
      
      fbshipit-source-id: ebdd3854cb3becec3403970326a1ca961db2ab00
      ca5a069a
    • L
      Turn the compression_type check in BlobDBImpl::DecompressSlice into an assertion (#7127) · ee8c79d4
      Levi Tamasi 提交于
      Summary:
      In both cases where `BlobDBImpl::DecompressSlice` is called,
      `compression_type` is already checked at the call site; thus, the check
      inside the method is redundant and can be turned into an assertion.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7127
      
      Test Plan: `make check`
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D22533454
      
      Pulled By: ltamasi
      
      fbshipit-source-id: ae524443fc6abe0a5fb12327a3fe761a9cd2c831
      ee8c79d4
    • J
      CircleCI: Pipe java-build to ignore EAGAIN errors (#7135) · afb6bb1d
      Jay Zhuang 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/7135
      
      Reviewed By: siying
      
      Differential Revision: D22553594
      
      Pulled By: jay-zhuang
      
      fbshipit-source-id: 5b40621ffad05c4fffe3ac536a11d6c87e7ef512
      afb6bb1d
    • Z
      Auto resume the DB from Retryable IO Error (#6765) · a10f12ed
      Zhichao Cao 提交于
      Summary:
      In current codebase, in write path, if Retryable IO Error happens, SetBGError is called. The retryable IO Error is converted to hard error and DB is in read only mode. User or application needs to resume it. In this PR, if Retryable IO Error happens in one DB, SetBGError will create a new thread to call Resume (auto resume). otpions.max_bgerror_resume_count controls if auto resume is enabled or not (if max_bgerror_resume_count<=0, auto resume will not be enabled). options.bgerror_resume_retry_interval controls the time interval to call Resume again if the previous resume fails due to the Retryable IO Error. If non-retryable error happens during resume, auto resume will terminate.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6765
      
      Test Plan: Added the unit test cases in error_handler_fs_test and pass make asan_check
      
      Reviewed By: anand1976
      
      Differential Revision: D21916789
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: acb8b5e5dc3167adfa9425a5b7fc104f6b95cb0b
      a10f12ed
    • Y
      Fix typo in ThreadData comment (#7131) · e8d5a248
      yxj25245 提交于
      Summary:
      Fix typo in ThreadData comment
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7131
      
      Reviewed By: riversand963
      
      Differential Revision: D22543135
      
      Pulled By: jay-zhuang
      
      fbshipit-source-id: 39c9d0e8cd5a364af9a2f05fd3783e8482dea976
      e8d5a248
  2. 15 7月, 2020 6 次提交
    • Y
      Report corrupted keys during compaction (#7124) · 27735dea
      Yanqin Jin 提交于
      Summary:
      Currently, RocksDB lets compaction to go through even in case of
      corrupted keys, the number of which is reported in CompactionJobStats.
      However, RocksDB does not check this value. We should let compaction run
      in a stricter mode.
      
      Temporarily disable two tests that allow corrupted keys in compaction.
      With this PR, the two tests will assert(false) and terminate. Still need
      to investigate what is the recommended google-test way of doing it.
      Death test (EXPECT_DEATH) in gtest has warnings now.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7124
      
      Test Plan: make check
      
      Reviewed By: ajkr
      
      Differential Revision: D22530722
      
      Pulled By: riversand963
      
      fbshipit-source-id: 6a5a6a992028c6d4f92cb74693c92db462ae4ad6
      27735dea
    • L
      Update some log messages in BlobDB to account for compaction filters (#7128) · 687fbd02
      Levi Tamasi 提交于
      Summary:
      https://github.com/facebook/rocksdb/pull/6850, which added compaction
      filter support to BlobDB, reused elements of the BlobDB GC mechanism.
      This patch updates some log messages in this logic to account for this
      fact; namely, it replaces mentions of "GC" with "compaction/GC" to avoid
      confusion in cases when GC is not enabled.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7128
      
      Test Plan: `make check`
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D22535371
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 1f14f3b02ab9983728bbca1cf680420208d9a195
      687fbd02
    • A
      Only check for python location once (#7123) · de8c92a5
      Adam Retter 提交于
      Summary:
      This fixes an issue introduced in 0c56fc4d whereby the location of Python is evaluated many times and leads to excessive logging of unknown python locations of CentOS 6.
      
      The location is now only checked once.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7123
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D22532274
      
      Pulled By: ajkr
      
      fbshipit-source-id: cade71b4b46e9a23d63ecb4dd36a4ac8ae217970
      de8c92a5
    • S
      Run a subset of TSAN tests in CIrcleCI (#7122) · e930ba1d
      sdong 提交于
      Summary:
      It is helpful to add some TSAN coverage before a pull request is committed. This diff adds some of them.
      Some slow tests are excluded for the running speed. Some are blacklisted because they show warnings. Will investigate these warnings and see whether we can fix or suppress them.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7122
      
      Test Plan: Watch CIrcleCI runs
      
      Reviewed By: riversand963
      
      Differential Revision: D22532133
      
      fbshipit-source-id: 81ddd02d9df19c513a12811979e8ddabae911354
      e930ba1d
    • L
      Remove some dead code from BlobLogWriter (#7125) · bdf4de6c
      Levi Tamasi 提交于
      Summary:
      Periodic syncing of blob files is performed by `WritableFileWriter`;
      `bytes_per_sync_` and `next_sync_offset_` in `BlobLogWriter` are
      actually unused (or more precisely, only used by methods that are
      themselves unused). The patch removes all this dead code.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7125
      
      Test Plan: `make check`
      
      Reviewed By: riversand963
      
      Differential Revision: D22531021
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 6b293ad5a79d3e6bf15c5c68f7aedd7ce7a15f10
      bdf4de6c
    • J
      Add stress test for GetProperty (#7111) · fc4d5f50
      Jay Zhuang 提交于
      Summary:
      Add stress test coverage for `DB::GetProperty()`.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7111
      
      Test Plan:
      ```
      ./db_stress -get_property_one_in=1
      make crash_test
      ```
      
      Reviewed By: ajkr
      
      Differential Revision: D22487906
      
      Pulled By: jay-zhuang
      
      fbshipit-source-id: c118d95cc9b4e2fa669a06e6aa531541fa885dc5
      fc4d5f50
  3. 14 7月, 2020 5 次提交
    • Y
      Report corruption on unrecognized value type (#7121) · c628fae6
      Yanqin Jin 提交于
      Summary:
      During memtable lookup, an unrecognized value type should be reported as
      Status::Corruption.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7121
      
      Test Plan: make check
      
      Reviewed By: cheng-chang
      
      Differential Revision: D22512124
      
      Pulled By: riversand963
      
      fbshipit-source-id: 9b97be7d9b230c5aae9205f96054420e5ea09066
      c628fae6
    • S
      Add VS2017 to CircleCI Runs (#7120) · 2f32d504
      sdong 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/7120
      
      Test Plan: Watch CI results.
      
      Reviewed By: cheng-chang
      
      Differential Revision: D22516995
      
      fbshipit-source-id: ddf7c0482dfac30d9044b833852348eda987cb67
      2f32d504
    • A
      Add FileSystem wrapper classes for IO tracing. (#7002) · d93bd3ce
      Akanksha Mahajan 提交于
      Summary:
      1. Add the wrapper classes FileSystemTracingWrapper, FSSequentialFileTracingWrapper, FSRandomAccessFileTracingWrapper, FSWritableFileTracingWrapper, FSRandomRWFileTracingWrapper that forward the calls to underlying storage system and then pass the file operation information to IOTracer. IOTracer dumps the record in binary format for tracing.
      2. Add the wrapper classes FileSystemPtr, FSSequentialFilePtr, FSRandomAccessFilePtr, FSWritableFilePtr and FSRandomRWFilePtr that overload operator-> and return ptr to underlying storage system or Tracing wrapper class based on enabling/disabling of IO tracing. These classes are added to bypass Tracing Wrapper classes when we disable tracing.
      3. Add enums in trace.h that distinguish which options need to be added for different file operations(Read, close, write etc) as part of tracing record.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7002
      
      Test Plan: make check -j64
      
      Reviewed By: anand1976
      
      Differential Revision: D22127897
      
      Pulled By: akankshamahajan15
      
      fbshipit-source-id: 74cff58ce5661c9a3832dfaa52483f3b2d8565e0
      d93bd3ce
    • J
      Add circleci java build (#7119) · 0ff752cf
      Jay Zhuang 提交于
      Summary:
      Add circleci java build workflow.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7119
      
      Reviewed By: siying
      
      Differential Revision: D22512426
      
      Pulled By: jay-zhuang
      
      fbshipit-source-id: 45a7445c861fee48017bae42cdb7172c8b091475
      0ff752cf
    • S
      Add CLANG analyze to CircleCI (#7114) · 43cc622d
      sdong 提交于
      Summary:
      CLANG analyze is useful before pull request. Add it.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7114
      
      Test Plan: Watch the CI results to succeed.
      
      Reviewed By: riversand963
      
      Differential Revision: D22491942
      
      fbshipit-source-id: 9ccad91c6142fedc3d3dd491cf55054827908f36
      43cc622d
  4. 11 7月, 2020 5 次提交
  5. 10 7月, 2020 5 次提交
    • Z
      Fix status message size assert (#7045) · a9a97386
      Zhichao Cao 提交于
      Summary:
      In status.cc, the assert is `assert(sizeof(msgs) > index)`; msgs is a const char* array, sizeof(msgs) is the array size*char* size, which will make the assert pass all the time. Change it to sizeof(msgs)/sizeof(char*) > index.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7045
      
      Test Plan: pass make check
      
      Reviewed By: cheng-chang
      
      Differential Revision: D22291337
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 4ba8ebbb8da80ace7ca6adcdb0c66726f993659d
      a9a97386
    • M
      More Makefile Cleanup (#7097) · c7c7b07f
      mrambacher 提交于
      Summary:
      Cleans up some of the dependencies on test code in the Makefile while building tools:
      - Moves the test::RandomString, DBBaseTest::RandomString into Random
      - Moves the test::RandomHumanReadableString into Random
      - Moves the DestroyDir method into file_utils
      - Moves the SetupSyncPointsToMockDirectIO into sync_point.
      - Moves the FaultInjection Env and FS classes under env
      
      These changes allow all of the tools to build without dependencies on test_util, thereby simplifying the build dependencies.  By moving the FaultInjection code, the dependency in db_stress on different libraries for debug vs release was eliminated.
      
      Tested both release and debug builds via Make and CMake for both static and shared libraries.
      
      More work remains to clean up how the tools are built and remove some unnecessary dependencies.  There is also more work that should be done to get the Makefile and CMake to align in their builds -- what is in the libraries and the sizes of the executables are different.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7097
      
      Reviewed By: riversand963
      
      Differential Revision: D22463160
      
      Pulled By: pdillinger
      
      fbshipit-source-id: e19462b53324ab3f0b7c72459dbc73165cc382b2
      c7c7b07f
    • A
      save key comparisons in BlockIter::BinarySeek (#7068) · 82611ee2
      Andrew Kryczka 提交于
      Summary:
      This is a followup to https://github.com/facebook/rocksdb/issues/6646. In that PR, for simplicity I just appended a comparison against the 0th restart key in case `BinarySeek()`'s binary search landed at index 0. As a result there were `2/(N+1) + log_2(N)` key comparisons. This PR does it differently. Now we expand the binary search range by one so it also covers the case where target is at or before the restart key at index 0. As a result, it involves `log_2(N+1)` key comparisons.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7068
      
      Test Plan:
      ran readrandom with mostly default settings and counted key comparisons
      using `PerfContext`.
      
      before: `user_key_comparison_count = 28881965`
      after: `user_key_comparison_count = 27823245`
      
      setup command:
      
      ```
      $ TEST_TMPDIR=/dev/shm/dbbench ./db_bench -benchmarks=fillrandom,compact -write_buffer_size=1048576 -target_file_size_base=1048576 -max_bytes_for_level_base=4194304 -max_background_jobs=12 -level_compaction_dynamic_level_bytes=true -num=10000000
      ```
      
      benchmark command:
      
      ```
      $ TEST_TMPDIR=/dev/shm/dbbench/ ./db_bench -use_existing_db=true -benchmarks=readrandom -disable_auto_compactions=true -num=10000000 -compression_type=none -reads=1000000 -perf_level=3
      ```
      
      Reviewed By: anand1976
      
      Differential Revision: D22357032
      
      Pulled By: ajkr
      
      fbshipit-source-id: 8b01e9c1c2a4e9d02fc9dfe16c1cc0327f8bdf24
      82611ee2
    • Y
      Parameterize a few tests in DBWALTest (#7105) · f70ad031
      Yanqin Jin 提交于
      Summary:
      As title. The goal is to shorten the execution time of several tests
      when they are combined together in a single TEST_F.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7105
      
      Test Plan:
      make db_wal_test
      ./db_wal_test
      
      Reviewed By: ltamasi
      
      Differential Revision: D22442705
      
      Pulled By: riversand963
      
      fbshipit-source-id: 0ad49b8f21fa86dcd5a4d3c9a06af313735ac217
      f70ad031
    • Y
      Running ./ldb without any extra arg print usage (#7107) · 842bd274
      Yanqin Jin 提交于
      Summary:
      as title.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7107
      
      Test Plan: make ldb && ./ldb
      
      Reviewed By: pdillinger
      
      Differential Revision: D22451399
      
      Pulled By: riversand963
      
      fbshipit-source-id: 797645e06473bb9cf139c533877e5161281515e8
      842bd274
  6. 09 7月, 2020 7 次提交
    • Z
      Fix GetFileDbIdentities (#7104) · b35a2f91
      Zitan Chen 提交于
      Summary:
      Although PR https://github.com/facebook/rocksdb/issues/7032 fixes the construction of the `SstFileDumper` in `GetFileDbIdentities` by setting a proper `Env` of the `Options` passed in the constructor, the file path was not corrected accordingly. This actually disables backup engine to use db session ids in the file names since the `db_session_id` is always empty.
      
      Now it is fixed by setting the correct path in the construction of `SstFileDumper`. Furthermore, to preserve the Direct IO property that backup engine already has, parameter `EnvOptions` is added to `GetFileDbIdentities` and `SstFileDumper`.
      
      The `BackupUsingDirectIO` test is updated accordingly.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7104
      
      Test Plan: backupable_db_test and some manual tests.
      
      Reviewed By: ajkr
      
      Differential Revision: D22443245
      
      Pulled By: gg814
      
      fbshipit-source-id: 056a9bb8b82947c5e73d7c3fbb62bfe23af5e562
      b35a2f91
    • A
      Update Flush policy in PartitionedIndexBuilder on switching from user-key to... · 54f171fe
      Akanksha Mahajan 提交于
      Update Flush policy in PartitionedIndexBuilder on switching from user-key to internal-key mode (#7096)
      
      Summary:
      When format_version is high enough to support user-key and
      there are index entries for same user key that spans multiple data
      blocks then it changes from user-key mode to internal-key mode. But the
      flush policy is not reset to point to Block Builder of internal-keys.
      After this switch, no entries are added to user key index partition
      result, thus it never triggers flushing the block.
      
      Fix: 1. After adding the entry in sub_builder_index_, if there is a switch
      from user-key to internal-key, then flush policy is updated to point to
      Block Builder of internal-keys index partition.
      2. Set sub_builder_index_->seperator_is_key_plus_seq_ = true if
      seperator_is_key_plus_seq_  is set to true so that subsequent partitions
      can also use internal key mode.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7096
      
      Test Plan: make check -j64
      
      Reviewed By: ajkr
      
      Differential Revision: D22416598
      
      Pulled By: akankshamahajan15
      
      fbshipit-source-id: 01fc2dc07ea1b32f8fb803995ebe6e9a3fbe67ac
      54f171fe
    • fix compile error (#7040) · 7c6f3d84
      球状闪电 提交于
      Summary:
      WITH_TESTS=OFF and WITH_BENCHMARK_TOOLS=ON
      
      there has errors:
       /bin/ld: cannot find -ltestharness
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7040
      
      Reviewed By: riversand963
      
      Differential Revision: D22447637
      
      Pulled By: ajkr
      
      fbshipit-source-id: f63058376deb4a2e6722d63541c40caa617c331a
      7c6f3d84
    • P
      cf_consistency_stress (crash_test_with_atomic_flush) checkpoint clean (#7103) · 90fd6b0c
      Peter Dillinger 提交于
      Summary:
      Delicious copy-pasta from https://github.com/facebook/rocksdb/issues/7039
      
      Also fixing DestroyDir to allow files to go missing while it is operating. This seems to fix failures I got with test plan reproducer.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7103
      
      Test Plan:
      make blackbox_crash_test_with_atomic_flush for a while with
      checkpoint_one_in=100
      
      Reviewed By: siying
      
      Differential Revision: D22435315
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 0ec0538402493887aeda43ecc03f32979cb84ced
      90fd6b0c
    • Z
      Fix flaky BackupableDBTest.TableFileCorruptedBeforeBackup (#7102) · cc5c6808
      Zitan Chen 提交于
      Summary:
      The fix in PR https://github.com/facebook/rocksdb/issues/7082 is not really successful because there is still a small chance that the test will fail.
      
      In addtion to flushing, we close the DB and then reopen before corrupting a table file in the DB. Specifically, we corrupt a table file before backup takes place as follows.
      * Open DB
      * Fill DB
      * Flush DB (optional, no flushing here also works)
      * Close DB
      * Reopen DB
      * Corrupt a table file in the DB
      
      This should make the test reliable.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7102
      
      Test Plan:
      `while ./backupable_db_test --gtest_filter=*TableFileCorruptedBeforeBackup*; do true; done`
      (kept running for an hour or so :)
      
      Reviewed By: pdillinger
      
      Differential Revision: D22432417
      
      Pulled By: gg814
      
      fbshipit-source-id: d407eee93ff428bb662f80cde1659fbf0149d0cd
      cc5c6808
    • R
      Add RestoreDBFromLatestBackup to C API, add new C# package (#7092) · 712458fc
      rafael-aero 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/7092
      
      Reviewed By: riversand963
      
      Differential Revision: D22412323
      
      Pulled By: ajkr
      
      fbshipit-source-id: 3fc1c63bb19a8cd2c0ae620800c28f199a7f494b
      712458fc
    • R
      Fixed Factory construct just for calling .Name() (#7080) · b649d8cb
      rockeet 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/7080
      
      Reviewed By: riversand963
      
      Differential Revision: D22412352
      
      Pulled By: ajkr
      
      fbshipit-source-id: 1d7f4c1621040a0130245139b52c3f4d3deac865
      b649d8cb
  7. 08 7月, 2020 6 次提交
    • W
      extend listener callback functions to more file I/O operations (#7055) · 226d1f9c
      wenh 提交于
      Summary:
      Currently, `EventListener` in listner.h only have callback functions for file read and write. One may favor extended callback functions for more file I/O operations like flush, sync and close. This PR tries to add those interface and have them called when appropriate throughout the code base.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7055
      
      Test Plan:
      Write an experimental listener with those new callback functions with log output in them; run experiments and check logs to see those functions are actually called.
      Default test suits `make check` should also be included.
      
      Reviewed By: riversand963
      
      Differential Revision: D22380624
      
      Pulled By: roghnin
      
      fbshipit-source-id: 4121491d45c2c2aae8c255e7998090559a241c6a
      226d1f9c
    • A
      Separate internal and user key comparators in `BlockIter` (#6944) · dd29ad42
      Andrew Kryczka 提交于
      Summary:
      Replace `BlockIter::comparator_` and `IndexBlockIter::user_comparator_wrapper_` with a concrete `UserComparatorWrapper` and `InternalKeyComparator`. The motivation for this change was the inconvenience of not knowing the concrete type of `BlockIter::comparator_`, which prevented calling specialized internal key comparison functions to optimize comparison of keys with global seqno applied.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6944
      
      Test Plan:
      benchmark setup -- single file DBs, in-memory, no compression. "normal_db"
      created by regular flush; "ingestion_db" created by ingesting a file. Both
      DBs have same contents.
      
      ```
      $ TEST_TMPDIR=/dev/shm/normal_db/ ./db_bench -benchmarks=fillrandom,compact -write_buffer_size=10485760000 -disable_auto_compactions=true -compression_type=none -num=1000000
      $ ./ldb write_extern_sst ./tmp.sst --db=/dev/shm/ingestion_db/dbbench/ --compression_type=no --hex --create_if_missing < <(./sst_dump --command=scan --output_hex --file=/dev/shm/normal_db/dbbench/000007.sst | awk 'began {print "0x" substr($1, 2, length($1) - 2), "==>", "0x" $5} ; /^Sst file format: block-based/ {began=1}')
      $ ./ldb ingest_extern_sst ./tmp.sst --db=/dev/shm/ingestion_db/dbbench/
      ```
      
      benchmark run command:
      
      ```
      $ TEST_TMPDIR=/dev/shm/$DB/ ./db_bench -benchmarks=seekrandom -seek_nexts=$SEEK_NEXT -use_existing_db=true -cache_index_and_filter_blocks=false -num=1000000 -cache_size=0 -threads=1 -reads=200000000 -mmap_read=1 -verify_checksum=false
      ```
      
      results: perf improved marginally for ingestion_db and did not change significantly for normal_db:
      
      SEEK_NEXT | DB | code | ops/sec | % change
      -- | -- | -- | -- | --
      0 | normal_db | master | 350880 |  
      0 | normal_db | PR6944 | 351040 | 0.0
      0 | ingestion_db | master | 343255 |  
      0 | ingestion_db | PR6944 | 349424 | 1.8
      10 | normal_db | master | 218711 |  
      10 | normal_db | PR6944 | 217892 | -0.4
      10 | ingestion_db | master | 220334 |  
      10 | ingestion_db | PR6944 | 226437 | 2.8
      
      Reviewed By: pdillinger
      
      Differential Revision: D21924676
      
      Pulled By: ajkr
      
      fbshipit-source-id: ea4288a2eefa8112eb6c651a671c1de18c12e538
      dd29ad42
    • P
      Replace large 'rm' with 'find' (#7095) · 4202c48f
      Peter Dillinger 提交于
      Summary:
      On some platforms like MacOS, a second 'make check' can lead to
      /bin/rm: Argument list too long
      
      This is fixed by replacing with a 'find'. Also, using '-f' for more rm calls
      to avoid prompt.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7095
      
      Test Plan: 'make check' on Linux and MacOS
      
      Reviewed By: riversand963
      
      Differential Revision: D22415808
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 0fd1ebae13739c9d81f9e813e99b062715604d6b
      4202c48f
    • P
      Fix build of db_stress with LIB_MODE=shared (#7098) · 787bf79f
      Peter Dillinger 提交于
      Summary:
      by tracking and linking against runtime dependent libraries in
      Makefile
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7098
      
      Test Plan: look for fix in CircleCI
      
      Reviewed By: riversand963
      
      Differential Revision: D22420860
      
      Pulled By: pdillinger
      
      fbshipit-source-id: d211d709214bf5306db68e43b7a2f18169281022
      787bf79f
    • P
      Exclude c_test from buck build opt mode (#7093) · dbf5c558
      Peter Dillinger 提交于
      Summary:
      Fix a Facebook internal build
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7093
      
      Test Plan:
      buck build mode/opt :c_test :c_test_bin (was compilation
      failure, now "not found")
      buck build mode/dev :c_test :c_test_bin (still passes)
      
      Reviewed By: ajkr
      
      Differential Revision: D22412528
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 8e55c43dbf95386597e4cc690c41d9cbdcee03aa
      dbf5c558
    • P
      Major CircleCI/Linux fixes / tweaks / enhancements (#7078) · 92731b6b
      Peter Dillinger 提交于
      Summary:
      Primarily, this change adds a way to work around a bug limiting the effective output (and therefore debugability) of the Linux builds using parallel make. We would get
      make[1]: write error: stdout
      probably due to a kernel bug, apparently affecting both available ubuntu 16 machine images (maybe not affecting docker images, less horsepower). https://bugs.launchpad.net/ubuntu/+source/linux-signed/+bug/1814393
      
      Now in the CircleCI config, make output on Ubuntu is piped through a custom 'cat' that ignores EAGAIN errors, which seems to fix the problem.
      
      Significant other changes:
      * Add another linux build that combines
        * LIB_MODE=shared, to ensure this works with compile and unit test execution
        * Alternative rocksdb namespace, to ensure this works (not rely on Travis)
        * ASSERT_STATUS_CHECKED=1, but with building all unit tests and running those expected to pass with it
      * Run release build with and without gflags. (Was running only without, ignore large swaths of code in a normal release build! Two regressions in this build, only with gflags, in the last week not caught by CI!)
      * Use gflags with unity and LITE build, as typical case.
      
      Debugability improvements:
      * Use V=1 to show commands being executed (thanks to EAGAIN work-around)
      * Print kernel version and compiler versions as part of V=1 output from Makefile
      
      Cosmetic other changes:
      * Put more commands on one line, for less clutter in CircleCI output pages
      * Remove redundant "all" in "make all check" and put make command options before targets
      * Change some recursive "make clean" into dependency on "clean," toward minimizing unnecessary overhead (detect platform, build version, etc.) of extra recursive makes
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7078
      
      Reviewed By: siying
      
      Differential Revision: D22391647
      
      Pulled By: pdillinger
      
      fbshipit-source-id: d446fccf5a8c568b37dc8748621c8a5c546fe135
      92731b6b