1. 23 2月, 2023 1 次提交
    • C
      Refactor AddRangeDels() + consider range tombstone during compaction file cutting (#11113) · 229297d1
      Changyu Bi 提交于
      Summary:
      A second attempt after https://github.com/facebook/rocksdb/issues/10802, with bug fixes and refactoring. This PR updates compaction logic to take range tombstones into account when determining whether to cut the current compaction output file (https://github.com/facebook/rocksdb/issues/4811). Before this change, only point keys were considered, and range tombstones could cause large compactions. For example, if the current compaction outputs is a range tombstone [a, b) and 2 point keys y, z, they would be added to the same file, and may overlap with too many files in the next level and cause a large compaction in the future. This PR also includes ajkr's effort to simplify the logic to add range tombstones to compaction output files in `AddRangeDels()` ([https://github.com/facebook/rocksdb/issues/11078](https://github.com/facebook/rocksdb/pull/11078#issuecomment-1386078861)).
      
      The main change is for `CompactionIterator` to emit range tombstone start keys to be processed by `CompactionOutputs`. A new class `CompactionMergingIterator` is introduced to replace `MergingIterator` under `CompactionIterator` to enable emitting of range tombstone start keys. Further improvement after this PR include cutting compaction output at some grandparent boundary key (instead of the next output key) when cutting within a range tombstone to reduce overlap with grandparents.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11113
      
      Test Plan:
      * added unit test in db_range_del_test
      * crash test with a small key range: `python3 tools/db_crashtest.py blackbox --simple --max_key=100 --interval=600 --write_buffer_size=262144 --target_file_size_base=256 --max_bytes_for_level_base=262144 --block_size=128 --value_size_mult=33 --subcompactions=10 --use_multiget=1 --delpercent=3 --delrangepercent=2 --verify_iterator_with_expected_state_one_in=2 --num_iterations=10`
      
      Reviewed By: ajkr
      
      Differential Revision: D42655709
      
      Pulled By: cbi42
      
      fbshipit-source-id: 8367e36ef5640e8f21c14a3855d4a8d6e360a34c
      229297d1
  2. 22 2月, 2023 9 次提交
    • Y
      fix -Wrange-loop-analysis in Apple clang version 12.0.0 (clang-1200.0.32.29) (#11240) · 9fa9becf
      ywave 提交于
      Summary:
      Fix complain
      ```
      db/db_impl/db_impl_compaction_flush.cc:417:19: error: loop variable 'bg_flush_arg' of type 'const rocksdb::DBImpl::BGFlushArg' creates a copy from type
            'const rocksdb::DBImpl::BGFlushArg' [-Werror,-Wrange-loop-analysis]
        for (const auto bg_flush_arg : bg_flush_args) {
                        ^
      db/db_impl/db_impl_compaction_flush.cc:417:8: note: use reference type 'const rocksdb::DBImpl::BGFlushArg &' to prevent copying
        for (const auto bg_flush_arg : bg_flush_args) {
             ^~~~~~~~~~~~~~~~~~~~~~~~~
                        &
      db/db_impl/db_impl_compaction_flush.cc:2911:21: error: loop variable 'bg_flush_arg' of type 'const rocksdb::DBImpl::BGFlushArg' creates a copy from type
            'const rocksdb::DBImpl::BGFlushArg' [-Werror,-Wrange-loop-analysis]
          for (const auto bg_flush_arg : bg_flush_args) {
                          ^
      db/db_impl/db_impl_compaction_flush.cc:2911:10: note: use reference type 'const rocksdb::DBImpl::BGFlushArg &' to prevent copying
          for (const auto bg_flush_arg : bg_flush_args) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~
                          &
      ```
      from
      
      ```sh
      xxx@MacBook-Pro / % g++ -v
      Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
      Apple clang version 12.0.0 (clang-1200.0.32.29)
      Target: x86_64-apple-darwin21.6.0
      Thread model: posix
      ```
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11240
      
      Reviewed By: cbi42
      
      Differential Revision: D43458729
      
      Pulled By: ajkr
      
      fbshipit-source-id: 26e110f83451509463a1bc308f737ccb693c9f45
      9fa9becf
    • A
      Update HISTORY.md and version.h for 8.0 release (#11238) · 28608045
      Andrew Kryczka 提交于
      Summary:
      8.0.fb branch is cut so changes going forward will be part of 8.1. Updated version.h and HISTORY.md accordingly
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11238
      
      Reviewed By: cbi42
      
      Differential Revision: D43428345
      
      Pulled By: ajkr
      
      fbshipit-source-id: d344b6e504c81a85563ae9d3705b11c533b1cd43
      28608045
    • A
      Revert enabling IO uring in db_stress (#11242) · 476b0157
      anand76 提交于
      Summary:
      IO uring usage is causing crash test failures due to bad cqe data being returned in the uring. Revert the change to enable IO uring in db_stress, and also re-enable async_io in CircleCI so that code path can be tested. Added the -use_io_uring flag to db_stress that, when false, will wrap the default env in db_stress to emulate async IO.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11242
      
      Reviewed By: akankshamahajan15
      
      Differential Revision: D43470569
      
      Pulled By: anand1976
      
      fbshipit-source-id: 7c69ac3f53a79ade31d37313f815f1a4b6108b75
      476b0157
    • C
      Fix an assertion failure in DBIter::SeekToLast() when user-defined timestamp is enabled (#11223) · 1b48ecc2
      Changyu Bi 提交于
      Summary:
      in DBIter::SeekToLast(), key() can be called when iter is invalid and fails the following assertion:
      ```
      ./db/db_iter.h:153: virtual rocksdb::Slice rocksdb::DBIter::key() const: Assertion `valid_' failed.
      ```
      This happens when `iterate_upper_bound` and timestamp_lb_ are set. SeekForPrev(*iterate_upper_bound_) positions the iterator on the same user key as *iterate_upper_bound_. A subsequent PrevInternal() call makes the iterator invalid just be the call to key().
      
      This PR fixes this issue by setting updating the seek key to have max sequence number AND max timestamp when the seek key has the same user key as *iterate_upper_bound_.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11223
      
      Test Plan: - Added a unit test that would fail the above assertion before this fix.
      
      Reviewed By: jowlyzhang
      
      Differential Revision: D43283600
      
      Pulled By: cbi42
      
      fbshipit-source-id: 0dd3999845b722584679bbc95be2664b266005ba
      1b48ecc2
    • L
      DBIter::FindNextUserEntryInternal: do not PrepareValue for `Delete` (#11211) · ea85148b
      leipeng 提交于
      Summary:
      `kTypeDeletion/kTypeDeletionWithTimestamp/kTypeSingleDeletion` does not need access iter value, so omit `PrepareValue`.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11211
      
      Reviewed By: ajkr
      
      Differential Revision: D43253068
      
      Pulled By: cbi42
      
      fbshipit-source-id: 1945c7f8a90b6909128a0553b62d9fd1078b0a08
      ea85148b
    • C
      Fix comment for option `periodic_compaction_seconds` (#11227) · ebfca2cf
      Changyu Bi 提交于
      Summary:
      the comment for option `periodic_compaction_seconds` only mentions support for Leveled and FIFO compaction, while the implementation supports all compaction styles after https://github.com/facebook/rocksdb/issues/5970. This PR updates comment to reflect this.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11227
      
      Reviewed By: ajkr
      
      Differential Revision: D43325046
      
      Pulled By: cbi42
      
      fbshipit-source-id: 2364dcb5a01cd098ad52c818fe10d621445e2188
      ebfca2cf
    • H
      add c api to set option fail_if_not_bottommost_level (#11158) · 83bc03a9
      HuangYi 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/11158
      
      Reviewed By: cbi42
      
      Differential Revision: D42870647
      
      Pulled By: ajkr
      
      fbshipit-source-id: 1b71a1dd415c34c332cecf60c68ce37fe4393e2a
      83bc03a9
    • H
      add c api for HyperClockCache (#11110) · cfe50f7e
      HuangYi 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/11110
      
      Reviewed By: cbi42
      
      Differential Revision: D42660941
      
      Pulled By: ajkr
      
      fbshipit-source-id: e977d9b76dfd5d8c62335f961c275f3b810503d7
      cfe50f7e
    • M
      C-API: Support multi-CF flush (#11112) · 142b18d0
      Matt Jurik 提交于
      Summary:
      This PR adds support to the c-api bindings for calling `Flush()` with multiple column families, which is useful for performing atomic flushes (assuming also that the db has been opened with `atomic_flush = true`).
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11112
      
      Reviewed By: cbi42
      
      Differential Revision: D42666382
      
      Pulled By: ajkr
      
      fbshipit-source-id: 82f05bf32d28452d85c79ea42411c8fea961fd87
      142b18d0
  3. 19 2月, 2023 1 次提交
  4. 18 2月, 2023 4 次提交
    • A
      Fix Java API ComparatorOptions use after delete error (#11176) · d4712687
      Alan Paxton 提交于
      Summary:
      The problem
      -------------
      ComparatorOptions is AutoCloseable.
      
      AbstractComparator does not hold a reference to its ComparatorOptions, but the native C++ ComparatorJniCallback holds a reference to the ComparatorOptions’ native C++ options structure. This gets deleted when the ComparatorOptions is closed, either explicitly, or as part of try-with-resources.
      
      Later, the deleted C++ options structure gets used by the callback and the comparator options are effectively random.
      
      The original bug report https://github.com/facebook/rocksdb/issues/8715 was caused by a GC-initiated finalization closing the still-in-use ComparatorOptions. As of 7.0, finalization of RocksDB objects no longer closes them, which worked round the reported bug, but still left ComparatorOptions with a potentially broken lifetime.
      
      In any case, we encourage API clients to use the try-with-resources model, and so we need it to work. And if they don't use it, they leak resources.
      
      The solution
      -------------
      The solution implemented here is to make a copy of the native C++ options object into the ComparatorJniCallback, rather than a reference. Then the deletion of the native object held by ComparatorOptions is *correctly* deleted when its scope is closed in try/finally.
      
      Testing
      -------
      We added a regression unit test based on the original test for the reported ticket.
      
      This checkin closes https://github.com/facebook/rocksdb/issues/8715
      
      We expect that there are more instances of "lifecycle" bugs in the Java API. They are a major source of support time/cost, and we note that they could be addressed as a whole using the model proposed/prototyped in https://github.com/facebook/rocksdb/pull/10736
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11176
      
      Reviewed By: cbi42
      
      Differential Revision: D43160885
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 60b54215a02ad9abb17363319650328c00a9ad62
      d4712687
    • M
      Remove FactoryFunc from LoadXXXObject (#11203) · b6640c31
      mrambacher 提交于
      Summary:
      The primary purpose of the FactoryFunc was to support LITE mode where the ObjectRegistry was not available.  With the removal of LITE mode, the function was no longer required.
      
      Note that the MergeOperator had some private classes defined in header files.  To gain access to their constructors (and name methods), the class definitions were moved into header files.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11203
      
      Reviewed By: cbi42
      
      Differential Revision: D43160255
      
      Pulled By: pdillinger
      
      fbshipit-source-id: f3a465fd5d1a7049b73ecf31e4b8c3762f6dae6c
      b6640c31
    • A
      Merge operator failed subcode (#11231) · 25e13652
      Andrew Kryczka 提交于
      Summary:
      From HISTORY.md: Added a subcode of `Status::Corruption`, `Status::SubCode::kMergeOperatorFailed`, for users to identify corruption failures originating in the merge operator, as opposed to RocksDB's internally identified data corruptions.
      
      This is a followup to https://github.com/facebook/rocksdb/issues/11092, where we gave users the ability to keep running a DB despite merge operator failing. Now that the DB keeps running despite such failures, they want to be able to distinguish such failures from real corruptions.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11231
      
      Test Plan: updated unit test
      
      Reviewed By: akankshamahajan15
      
      Differential Revision: D43396607
      
      Pulled By: ajkr
      
      fbshipit-source-id: 17fbcc779ad724dafada8abd73efd38e1c5208b9
      25e13652
    • A
      Use CacheDependencies() at start of ApproximateKeyAnchors() (#11230) · 6aef1a05
      Andrew Kryczka 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/11230
      
      Test Plan:
      - setup command: `$ ./db_bench -benchmarks=fillrandom,compact -compression_type=none -num=1000000 -write_buffer_size=4194304 -target_file_size_base=4194304 -use_direct_io_for_flush_and_compaction=true -partition_index_and_filters=true -bloom_bits=10 -metadata_block_size=1024`
      - measure small read count bucketed by size: `$ strace -fye pread64 ./db_bench.ctrl -use_existing_db=true -benchmarks=compact -compaction_readahead_size=4194304 -compression_type=none -num=1000000 -write_buffer_size=4194304 -target_file_size_base=4194304 -use_direct_io_for_flush_and_compaction=true -partition_index_and_filters=true -bloom_bits=10 -metadata_block_size=1024  -subcompactions=4 -cache_size=1048576000  2>&1 >/dev/null | awk '/= [0-9]+$/{print "[", int($NF / 1024), "KB,", int(1 + $NF / 1024), "KB)"}' | sort -n -k 2 | uniq -c | head -3`
      - before:
      ```
         1119 [ 0 KB, 1 KB)
            1 [ 6 KB, 7 KB)
            2 [ 7 KB, 8 KB)
      ```
      - after:
      ```
          242 [ 0 KB, 1 KB)
            1 [ 6 KB, 7 KB)
            2 [ 7 KB, 8 KB)
      ```
      
      Reviewed By: pdillinger
      
      Differential Revision: D43388507
      
      Pulled By: ajkr
      
      fbshipit-source-id: a02413c9f615b00784700646825a9870ee10f3a7
      6aef1a05
  5. 17 2月, 2023 3 次提交
  6. 16 2月, 2023 3 次提交
  7. 15 2月, 2023 2 次提交
    • A
      Fix regression script for async_io benchmarks (#11224) · 6d5e8604
      akankshamahajan 提交于
      Summary:
      Fix regression script for async_io benchmark using incorrect ops and threads and wrong benchmark name during reporting results.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11224
      
      Test Plan: Ran manually
      
      Reviewed By: anand1976
      
      Differential Revision: D43287658
      
      Pulled By: akankshamahajan15
      
      fbshipit-source-id: 433e2caa0e51268e72a875549ab8f7f92a7a4216
      6d5e8604
    • S
      Remove docs/Gemfile.lock and update github-pages version (#11173) · 1969815f
      sdong 提交于
      Summary:
      One system reports that a dependency in docs/Gemfile.lock is out-of-date and has a risk. I don't see a point of having Gemfile.lock checked in and dealing with dependencies all the time at all. It should be able to regenerated using `bundle install`. Update Gemfile file to a later version too.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11173
      
      Test Plan:
      Run
      bundle install
      bundle exec jekyll serve --host=0.0.0.0
      and see website working locally.
      
      Reviewed By: ajkr
      
      Differential Revision: D42897698
      
      fbshipit-source-id: aeaf065c28b8f6582f1af1b5ffbbd5fa194afe24
      1969815f
  8. 14 2月, 2023 1 次提交
    • Y
      Enable crash test to run BlobDB together with user-defined timestamp (#11199) · c19672c1
      Yu Zhang 提交于
      Summary:
      I missed a stress test code sanity check when enabling this combination of tests. This PR addresses that, the "iter_start_ts" function for user defined timestamp feature is not supported when BlobDB is enabled. It's disabled for now.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11199
      
      Test Plan:
      Locally always enable BlobDB and run
      tools/db_crashtest.py --stress_cmd=./db_stress --cleanup_cmd='' --enable_ts whitebox --random_kill_odd 888887
      
      Reviewed By: ltamasi
      
      Differential Revision: D43245657
      
      Pulled By: jowlyzhang
      
      fbshipit-source-id: 4cae19817bb1afd50a76f9e0e49f006fb5c0b211
      c19672c1
  9. 13 2月, 2023 1 次提交
    • W
      remove dependency on options.h for port_posix.h andport_win.h (#11214) · 42d6652b
      Wentian Guo 提交于
      Summary:
      The files in `port/`, such as `port_posix.h`, are layering over the system libraries, so shouldn't include the DB-specific files like `options.h`. This PR remove this dependency.
      
      # How
      The reason that `port_posix.h` (or `port_win.h`) include `options.h` is to use `CpuPriority`, as there is a method `SetCpuPriority()` in `port_posix.h` that uses `CpuPriority.`
      - I think `SetCpuPriority()` make sense to exist in `port_posix.h` as it provides has platform-dependent implementation
      - `CpuPriority` enum is defined in `env.h`, but used in `rocksdb/include` and `port/`.
      
      Hence, let us define `CpuPriority` enum in a common file, say `port_defs.h`, such that both directories `rocksdb/include` and `port/` can include.
      
      When we remove this dependency, some other files have compile errors because they can't find definitions, so add header files to resolve
      
      # Test
      make all check -j
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11214
      
      Reviewed By: pdillinger
      
      Differential Revision: D43196910
      
      Pulled By: guowentian
      
      fbshipit-source-id: 70deccb72844cfb08fcc994f76c6ef6df5d55ab9
      42d6652b
  10. 11 2月, 2023 1 次提交
  11. 10 2月, 2023 3 次提交
    • A
      Extend existing benchmarks seekrandom and multiread to run with async_io (#11170) · ab2157fa
      akankshamahajan 提交于
      Summary:
      =======================================================================
      Benchmark seekrandom_asyncio
      
      =======================================================================
      
      db_bench_cmd=$(which time) -p ./db_bench       --benchmarks=seekrandom
      --db=/tmp/rocksdb/regression_test/db --wal_dir=
      --use_existing_db=0       --perf_level=1
      --disable_auto_compactions       --threads=1       --num=1073741824
      --reads=1073741824       --writes=1073741824       --deletes=1073741824
      --key_size=100       --value_size=900       --cache_size=1073741824
      --statistics=0              --compression_ratio=0.5       --histogram=1
      --seek_nexts=10       --stats_per_interval=1
      --stats_interval_seconds=600       --max_background_flushes=4
      --num_multi_db=1       --max_background_compactions=16
      --num_high_pri_threads=4       --num_low_pri_threads=16
      --seed=1675181789       --multiread_batched=true       --batch_size=128
      --multiread_stride=12       --async_io=true
      --optimize_multiget_for_io=false 2>&1
      RocksDB:    version 8.0.0
      
      =======================================================================
       Benchmark multireadrandom_asyncio
      
      ====================================================================
      
      db_bench_cmd=$(which time) -p ./db_bench
      --benchmarks=multireadrandom --db=/tmp/rocksdb/regression_test/db
      --wal_dir=       --use_existing_db=0       --perf_level=1
      --disable_auto_compactions       --threads=1       --num=1073741824
      --reads=1073741824       --writes=1073741824       --deletes=1073741824
      --key_size=100       --value_size=900       --cache_size=1073741824
      --statistics=0              --compression_ratio=0.5       --histogram=1
      --seek_nexts=10       --stats_per_interval=1
      --stats_interval_seconds=600       --max_background_flushes=4
      --num_multi_db=1       --max_background_compactions=16
      --num_high_pri_threads=4       --num_low_pri_threads=16
      --seed=1675181841       --multiread_batched=true       --batch_size=128
      --multiread_stride=12       --async_io=true
      --optimize_multiget_for_io=true 2>&1
      RocksDB:    version 8.0.0
      Date:       Tue Jan 31 08:17:22 2023
      CPU:        32 * Intel Xeon Processor (Skylake)
      CPUCache:   16384 KB
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11170
      
      Reviewed By: ajkr, anand1976
      
      Differential Revision: D42889107
      
      Pulled By: akankshamahajan15
      
      fbshipit-source-id: b819be2bd5f00d1db654b9e829b84f11e6bcab92
      ab2157fa
    • P
      Put Cache and CacheWrapper in new public header (#11192) · 3cacd4b4
      Peter Dillinger 提交于
      Summary:
      The definition of the Cache class should not be needed by the vast majority of RocksDB users, so I think it is just distracting to include it in cache.h, which is primarily needed for configuring and creating caches. This change moves the class to a new header advanced_cache.h. It is just cut-and-paste except for modifying the class API comment.
      
      In general, operations on shared_ptr<Cache> should continue to work when only a forward declaration of Cache is available, as long as all the Cache instances provided are already shared_ptr. See https://stackoverflow.com/a/17650101/454544
      
      Also, the most common way to customize a Cache is by wrapping an existing implementation, so it makes sense to provide CacheWrapper in the public API. This was a cut-and-paste job except removing the implementation of Name() so that derived classes must provide it.
      
      Intended follow-up: consolidate Release() into one function to reduce customization bugs / confusion
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11192
      
      Test Plan: `make check`
      
      Reviewed By: anand1976
      
      Differential Revision: D43055487
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 7b05492df35e0f30b581b4c24c579bc275b6d110
      3cacd4b4
    • P
      Attempt fix flaky DBWriteTest.LockWALInEffect (#11209) · b7747bbc
      Peter Dillinger 提交于
      Summary:
      Example failure:
      ```
      [ RUN      ] DBWriteTestInstance/DBWriteTest.LockWALInEffect/1
      db/db_write_test.cc:646: Failure
      Put("key3", "value")
      Corruption: Not active
      ```
      Presumably from a background compaction prior to Put.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11209
      
      Test Plan: watch CI
      
      Reviewed By: akankshamahajan15
      
      Differential Revision: D43147727
      
      Pulled By: pdillinger
      
      fbshipit-source-id: a1c34ac5ab124bfe2f23205a30777990056e9082
      b7747bbc
  12. 09 2月, 2023 3 次提交
    • P
      Improve SmallEnumSet (#11178) · 34bb3ddc
      Peter Dillinger 提交于
      Summary:
      In anticipation of using this to represent sets of CacheEntryRole for including or excluding kinds of blocks in block cache tiers, add significant new features to SmallEnumSet, including at least:
      
      * List initialization
      * Applicative constexpr operations
      * copy/move/equality ops
      * begin/end/const_iterator for iteration
      * Better comments
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11178
      
      Test Plan: unit tests added/expanded
      
      Reviewed By: ltamasi
      
      Differential Revision: D42973723
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 40783486feda931c3f7c6fcc9a300acd6a4b0a0a
      34bb3ddc
    • P
      Mitigate presumed OOM in CircleCI (#11206) · ee5305fa
      Peter Dillinger 提交于
      Summary:
      We've seen many instances of
      build-linux-static_lib-alt_namespace-status_checked failing like this:
      ```
      g++: fatal error: Killed signal terminated program cc1plus
      compilation terminated.
      make: *** [Makefile:2507: utilities/transactions/transaction_test.o]
      Error 1
      ```
      
      It's understandable that so many static linking jobs could exhaust memory.
      
      The executor only has 16 vcores, so going from 32 down to 24 shouldn't hurt build time.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11206
      
      Test Plan: will watch CI
      
      Reviewed By: ajkr
      
      Differential Revision: D43137246
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 050b0f700c285dd913bcae8b4a76a44d04bb0356
      ee5305fa
    • A
      Fix bug in WAL streaming uncompression (#11198) · 77b61abc
      anand76 提交于
      Summary:
      Fix a bug in the calculation of the input buffer address/offset in log_reader.cc. The bug is when consecutive fragments of a compressed record are located at the same offset in the log reader buffer, the second fragment input buffer is treated as a leftover from the previous input buffer. As a result, the offset in the `ZSTD_inBuffer` is not reset.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11198
      
      Test Plan: Add a unit test in log_test.cc that fails without the fix and passes with it.
      
      Reviewed By: ajkr, cbi42
      
      Differential Revision: D43102692
      
      Pulled By: anand1976
      
      fbshipit-source-id: aa2648f4802c33991b76a3233c5a58d4cc9e77fd
      77b61abc
  13. 08 2月, 2023 4 次提交
    • L
      Add compaction filter support for wide-column entities (#11196) · 876d2815
      Levi Tamasi 提交于
      Summary:
      The patch adds compaction filter support for wide-column entities by introducing
      a new `CompactionFilter` API called `FilterV3`. This API is called for regular
      key-values, merge operands, and wide-column entities as well. It is passed the
      existing value/operand or wide-column structure and it can update the value or
      columns or keep/delete/etc. the key-value as usual. For compatibility, the default
      implementation of `FilterV3` keeps all wide-column entities and falls back to calling
      `FilterV2` for plain old key-values and merge operands.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11196
      
      Test Plan: `make check`
      
      Reviewed By: akankshamahajan15
      
      Differential Revision: D43094147
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 75acabe9a35254f7f404ba6173ee9c2774382ebd
      876d2815
    • H
      Remove a couple deprecated convenience.h APIs (#11120) · 6650ca24
      Hui Xiao 提交于
      Summary:
      **Context/Summary:**
      As instructed by convenience.h comments, a few deprecated APIs are removed.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11120
      
      Test Plan:
      - make check & CI
      - eyeball check on test semantics.
      
      Reviewed By: pdillinger
      
      Differential Revision: D42937507
      
      Pulled By: hx235
      
      fbshipit-source-id: a9e4709387da01b1d0e9148c2e210f02e9746ee1
      6650ca24
    • P
      Revert to LIB_MODE=static for optimized builds (#11195) · b5827c80
      Peter Dillinger 提交于
      Summary:
      Continuous performance testing indicates there's a small performance hit with shared library (-fPIC) builds, so while retaining the motivation for https://github.com/facebook/rocksdb/issues/11168, we set the default for DEBUG_LEVEL=0 Makefile builds back to LIB_MODE=static.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11195
      
      Test Plan: CI, with some updated checks and removal of some now obsolete LIB_MODE overrides
      
      Reviewed By: cbi42
      
      Differential Revision: D43090576
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 755fe5d07005f85caf24e16f90228ffd46a6e250
      b5827c80
    • S
      Add kForceOptimized option to jni (#11181) · 68fa90ca
      Symious 提交于
      Summary:
      Currently the option of "KForceOptimized" is not included in CompactRangeOptions.BottommostLevelCompaction.
      
      This PR is to add this option.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/11181
      
      Reviewed By: ajkr
      
      Differential Revision: D43056453
      
      Pulled By: cbi42
      
      fbshipit-source-id: 22fd53f980ab1a86c61dd42e948902542065128f
      68fa90ca
  14. 07 2月, 2023 4 次提交