1. 20 4月, 2021 4 次提交
    • J
      Fix unittest no space issue (#8204) · a89740fb
      Jay Zhuang 提交于
      Summary:
      Unittest reports no space from time to time, which can be reproduced on a small memory machine with SHM. It's caused by large WAL files generated during the test, which is preallocated, but didn't truncate during close(). Adding the missing APIs to set preallocation.
      It added arm test as nightly build, as the test runs more than 1 hour.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8204
      
      Test Plan: test on small memory arm machine
      
      Reviewed By: mrambacher
      
      Differential Revision: D27873145
      
      Pulled By: jay-zhuang
      
      fbshipit-source-id: f797c429d6bc13cbcc673bc03fcc72adda55f506
      a89740fb
    • Y
      Handle rename() failure in non-local FS (#8192) · a376c220
      Yanqin Jin 提交于
      Summary:
      In a distributed environment, a file `rename()` operation can succeed on server (remote)
      side, but the client can somehow return non-ok status to RocksDB. Possible reasons include
      network partition, connection issue, etc. This happens in `rocksdb::SetCurrentFile()`, which
      can be called in `LogAndApply() -> ProcessManifestWrites()` if RocksDB tries to switch to a
      new MANIFEST. We currently always delete the new MANIFEST if an error occurs.
      
      This is problematic in distributed world. If the server-side successfully updates the CURRENT
      file via renaming, then a subsequent `DB::Open()` will try to look for the new MANIFEST and fail.
      
      As a fix, we can track the execution result of IO operations on the new MANIFEST.
      - If IO operations on the new MANIFEST fail, then we know the CURRENT must point to the original
        MANIFEST. Therefore, it is safe to remove the new MANIFEST.
      - If IO operations on the new MANIFEST all succeed, but somehow we end up in the clean up
        code block, then we do not know whether CURRENT points to the new or old MANIFEST. (For local
        POSIX-compliant FS, it should still point to old MANIFEST, but it does not matter if we keep the
        new MANIFEST.) Therefore, we keep the new MANIFEST.
          - Any future `LogAndApply()` will switch to a new MANIFEST and update CURRENT.
          - If process reopens the db immediately after the failure, then the CURRENT file can point
            to either the new MANIFEST or the old one, both of which exist. Therefore, recovery can
            succeed and ignore the other.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8192
      
      Test Plan: make check
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D27804648
      
      Pulled By: riversand963
      
      fbshipit-source-id: 9c16f2a5ce41bc6aadf085e48449b19ede8423e4
      a376c220
    • L
      Fix a data race related to DB properties (#8206) · 0c6e4674
      Levi Tamasi 提交于
      Summary:
      Historically, the DB properties `rocksdb.cur-size-active-mem-table`,
      `rocksdb.cur-size-all-mem-tables`, and `rocksdb.size-all-mem-tables` called
      the method `MemTable::ApproximateMemoryUsage` for mutable memtables,
      which is not safe without synchronization. This resulted in data races with
      memtable inserts. The patch changes the code handling these properties
      to use `MemTable::ApproximateMemoryUsageFast` instead, which returns a
      cached value backed by an atomic variable. Two test cases had to be updated
      for this change. `MemoryTest.MemTableAndTableReadersTotal` was fixed by
      increasing the value size used so each value ends up in its own memtable,
      which was the original intention (note: the test has been broken in the sense
      that the test code didn't consider that memtable sizes below 64 KB get
      increased to 64 KB by `SanitizeOptions`, and has been passing only by
      accident). `DBTest.MemoryUsageWithMaxWriteBufferSizeToMaintain` relies on
      completely up-to-date values and thus was changed to use `ApproximateMemoryUsage`
      directly instead of going through the DB properties. Note: this should be safe in this case
      since there's only a single thread involved.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8206
      
      Test Plan: `make check`
      
      Reviewed By: riversand963
      
      Differential Revision: D27866811
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 7bd754d0565e0a65f1f7f0e78ffc093beef79394
      0c6e4674
    • Y
      Handle blob files when options.best_efforts_recovery is true (#8180) · b0e20194
      Yanqin Jin 提交于
      Summary:
      If `options.best_efforts_recovery == true`, RocksDB currently tolerates missing table files and recovers to the latest version without missing table files (not considering WAL). It is necessary to handle blob files as well to make the feature more complete.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8180
      
      Test Plan: make check
      
      Reviewed By: ltamasi
      
      Differential Revision: D27840556
      
      Pulled By: riversand963
      
      fbshipit-source-id: 041685d0dc2e7779ac4f0374c07a8a327704aa5e
      b0e20194
  2. 16 4月, 2021 4 次提交
  3. 15 4月, 2021 2 次提交
  4. 10 4月, 2021 1 次提交
  5. 08 4月, 2021 2 次提交
    • G
      Fix flush reason attribution (#8150) · 48cd7a3a
      Giuseppe Ottaviano 提交于
      Summary:
      Current flush reason attribution is misleading or incorrect (depending on what the original intention was):
      
      - Flush due to WAL reaching its maximum size is attributed to `kWriteBufferManager`
      - Flushes due to full write buffer and write buffer manager are not distinguishable, both are attributed to `kWriteBufferFull`
      
      This changes the first to a new flush reason `kWALFull`, and splits the second between `kWriteBufferManager` and `kWriteBufferFull`.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8150
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D27569645
      
      Pulled By: ot
      
      fbshipit-source-id: 7e3c8ca186a6e71976e6b8e937297eebd4b769cc
      48cd7a3a
    • P
      Fix read-only DB writing to filesystem with write_dbid_to_manifest (#8164) · a4e82a3c
      Peter Dillinger 提交于
      Summary:
      Fixing another crash test failure in the case of
      write_dbid_to_manifest=true and reading a backup as read-only DB.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8164
      
      Test Plan:
      enhanced unit test for backup as read-only DB, ran
      blackbox_crash_test more with elevated backup_one_in
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D27622237
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 680d0f99ddb465a601737f2e3f2c80efd47384fb
      a4e82a3c
  6. 07 4月, 2021 2 次提交
    • P
      Make backups openable as read-only DBs (#8142) · 879357fd
      Peter Dillinger 提交于
      Summary:
      A current limitation of backups is that you don't know the
      exact database state of when the backup was taken. With this new
      feature, you can at least inspect the backup's DB state without
      restoring it by opening it as a read-only DB.
      
      Rather than add something like OpenAsReadOnlyDB to the BackupEngine API,
      which would inhibit opening stackable DB implementations read-only
      (if/when their APIs support it), we instead provide a DB name and Env
      that can be used to open as a read-only DB.
      
      Possible follow-up work:
      
      * Add a version of GetBackupInfo for a single backup.
      * Let CreateNewBackup return the BackupID of the newly-created backup.
      
      Implementation details:
      
      Refactored ChrootFileSystem to split off new base class RemapFileSystem,
      which allows more general remapping of files. We use this base class to
      implement BackupEngineImpl::RemapSharedFileSystem.
      
      To minimize API impact, I decided to just add these fields `name_for_open`
      and `env_for_open` to those set by GetBackupInfo when
      include_file_details=true. Creating the RemapSharedFileSystem adds a bit
      to the memory consumption, perhaps unnecessarily in some cases, but this
      has been mitigated by (a) only initialize the RemapSharedFileSystem
      lazily when GetBackupInfo with include_file_details=true is called, and
      (b) using the existing `shared_ptr<FileInfo>` objects to hold most of the
      mapping data.
      
      To enhance API safety, RemapSharedFileSystem is wrapped by new
      ReadOnlyFileSystem which rejects any attempts to write. This uncovered a
      couple of places in which DB::OpenForReadOnly would write to the
      filesystem, so I fixed these. Added a release note because this affects
      logging.
      
      Additional minor refactoring in backupable_db.cc to support the new
      functionality.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8142
      
      Test Plan:
      new test (run with ASAN and UBSAN), added to stress test and
      ran it for a while with amplified backup_one_in
      
      Reviewed By: ajkr
      
      Differential Revision: D27535408
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 04666d310aa0261ef6b2385c43ca793ce1dfd148
      879357fd
    • Y
      Fix a bug for SeekForPrev with partitioned filter and prefix (#8137) · 09528f9f
      Yanqin Jin 提交于
      Summary:
      According to https://github.com/facebook/rocksdb/issues/5907, each filter partition "should include the bloom of the prefix of the last
      key in the previous partition" so that SeekForPrev() in prefix mode can return correct result.
      The prefix of the last key in the previous partition does not necessarily have the same prefix
      as the first key in the current partition. Regardless of the first key in current partition, the
      prefix of the last key in the previous partition should be added. The existing code, however,
      does not follow this. Furthermore, there is another issue: when finishing current filter partition,
      `FullFilterBlockBuilder::AddPrefix()` is called for the first key in next filter partition, which effectively
      overwrites `last_prefix_str_` prematurely. Consequently, when the filter block builder proceeds
      to the next partition, `last_prefix_str_` will be the prefix of its first key, leaving no way of adding
      the bloom of the prefix of the last key of the previous partition.
      
      Prefix extractor is FixedLength.2.
      ```
      [  filter part 1   ]    [  filter part 2    ]
                        abc    d
      ```
      When SeekForPrev("abcd"), checking the filter partition will land on filter part 2 because "abcd" > "abc"
      but smaller than "d".
      If the filter in filter part 2 happens to return false for the test for "ab", then SeekForPrev("abcd") will build
      incorrect iterator tree in non-total-order mode.
      
      Also fix a unit test which starts to fail following this PR. `InDomain` should not fail due to assertion
      error when checking on an arbitrary key.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8137
      
      Test Plan:
      ```
      make check
      ```
      
      Without this fix, the following command will fail pretty soon.
      ```
      ./db_stress --acquire_snapshot_one_in=10000 --avoid_flush_during_recovery=0 \
      --avoid_unnecessary_blocking_io=0 --backup_max_size=104857600 --backup_one_in=0 \
      --batch_protection_bytes_per_key=0 --block_size=16384 --bloom_bits=17 \
      --bottommost_compression_type=disable --cache_index_and_filter_blocks=1 --cache_size=1048576 \
      --checkpoint_one_in=0 --checksum_type=kxxHash64 --clear_column_family_one_in=0 \
      --compact_files_one_in=1000000 --compact_range_one_in=1000000 --compaction_ttl=0 \
      --compression_max_dict_buffer_bytes=0 --compression_max_dict_bytes=0 \
      --compression_parallel_threads=1 --compression_type=zstd --compression_zstd_max_train_bytes=0 \
      --continuous_verification_interval=0 --db=/dev/shm/rocksdb/rocksdb_crashtest_whitebox \
      --db_write_buffer_size=8388608 --delpercent=5 --delrangepercent=0 --destroy_db_initially=0 --enable_blob_files=0 \
      --enable_compaction_filter=0 --enable_pipelined_write=1 --file_checksum_impl=big --flush_one_in=1000000 \
      --format_version=5 --get_current_wal_file_one_in=0 --get_live_files_one_in=1000000 --get_property_one_in=1000000 \
      --get_sorted_wal_files_one_in=0 --index_block_restart_interval=4 --index_type=2 --ingest_external_file_one_in=0 \
      --iterpercent=10 --key_len_percent_dist=1,30,69 --level_compaction_dynamic_level_bytes=True \
      --log2_keys_per_lock=10 --long_running_snapshots=1 --mark_for_compaction_one_file_in=0 \
      --max_background_compactions=20 --max_bytes_for_level_base=10485760 --max_key=100000000 --max_key_len=3 \
      --max_manifest_file_size=1073741824 --max_write_batch_group_size_bytes=16777216 --max_write_buffer_number=3 \
      --max_write_buffer_size_to_maintain=8388608 --memtablerep=skip_list --mmap_read=1 --mock_direct_io=False \
      --nooverwritepercent=0 --open_files=500000 --ops_per_thread=20000000 --optimize_filters_for_memory=0 --paranoid_file_checks=1 --partition_filters=1 --partition_pinning=0 --pause_background_one_in=1000000 \
      --periodic_compaction_seconds=0 --prefixpercent=5 --progress_reports=0 --read_fault_one_in=0 --read_only=0 \
      --readpercent=45 --recycle_log_file_num=0 --reopen=20 --secondary_catch_up_one_in=0 \
      --snapshot_hold_ops=100000 --sst_file_manager_bytes_per_sec=104857600 \
      --sst_file_manager_bytes_per_truncate=0 --subcompactions=2 --sync=0 --sync_fault_injection=False \
      --target_file_size_base=2097152 --target_file_size_multiplier=2 --test_batches_snapshots=0 --test_cf_consistency=0 \
      --top_level_index_pinning=0 --unpartitioned_pinning=1 --use_blob_db=0 --use_block_based_filter=0 \
      --use_direct_io_for_flush_and_compaction=0 --use_direct_reads=0 --use_full_merge_v1=0 --use_merge=0 \
      --use_multiget=0 --use_ribbon_filter=0 --use_txn=0 --user_timestamp_size=8 --verify_checksum=1 \
      --verify_checksum_one_in=1000000 --verify_db_one_in=100000 --write_buffer_size=4194304 \
      --write_dbid_to_manifest=1 --writepercent=35
      ```
      
      Reviewed By: pdillinger
      
      Differential Revision: D27553054
      
      Pulled By: riversand963
      
      fbshipit-source-id: 60e391e4a2d8d98a9a3172ec5d6176b90ec3de98
      09528f9f
  7. 04 4月, 2021 1 次提交
    • Y
      Use separate db dir for different tests hoping to remove flakiness (#8147) · dd3fbbbf
      Yanqin Jin 提交于
      Summary:
      DBWALTestWithParam relies on `SstFileManager` to have the expected behavior. However, if this test shares
      db directories with other DBSSTTest, then the SstFileManager may see non-empty data, thus will change its
      behavior to be different from expectation, introducing flakiness.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8147
      
      Test Plan: make check
      
      Reviewed By: jay-zhuang
      
      Differential Revision: D27553362
      
      Pulled By: riversand963
      
      fbshipit-source-id: a2d86343e8e2220bc553b6695ce87dd21a97ddec
      dd3fbbbf
  8. 03 4月, 2021 1 次提交
  9. 02 4月, 2021 2 次提交
    • A
      Add request_id in IODebugContext. (#8045) · 689b13e6
      Akanksha Mahajan 提交于
      Summary:
      Add request_id in IODebugContext which will be populated by
          underlying FileSystem for IOTracing purposes. Update IOTracer to trace
          request_id in the tracing records. Provided API
          IODebugContext::SetRequestId which will set the request_id and enable
          tracing for request_id. The API hides the implementation and underlying
          file system needs to call this API directly.
      
      Update DB::StartIOTrace API and remove redundant Env* from the
          argument as its not used and DB already has Env that is passed down to
          IOTracer.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8045
      
      Test Plan: Update unit test.
      
      Differential Revision: D26899871
      
      Pulled By: akankshamahajan15
      
      fbshipit-source-id: 56adef52ee5af0fb3060b607c3af1ec01635fa2b
      689b13e6
    • R
      version_set_test.cc: remove a redundent obj copy (#7880) · 5025c7ec
      rockeet 提交于
      Summary:
      Remove redundant obj copy
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/7880
      
      Reviewed By: akankshamahajan15
      
      Differential Revision: D26921119
      
      Pulled By: riversand963
      
      fbshipit-source-id: f227da688b067870a069e728a67799a8a95fee99
      5025c7ec
  10. 01 4月, 2021 3 次提交
    • A
      Fix compression dictionary sampling with dedicated range tombstone SSTs (#8141) · c43a37a9
      Andrew Kryczka 提交于
      Summary:
      Return early in case there are zero data blocks when
      `BlockBasedTableBuilder::EnterUnbuffered()` is called. This crash can
      only be triggered by applying dictionary compression to SST files that
      contain only range tombstones. It cannot be triggered by a low buffer
      limit alone since we only consider entering unbuffered mode after
      buffering a data block causing the limit to be breached, or `Finish()`ing the file. It also cannot
      be triggered by a totally empty file because those go through
      `Abandon()` rather than `Finish()` so unbuffered mode is never entered.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8141
      
      Test Plan: added a unit test that repro'd the "Floating point exception"
      
      Reviewed By: riversand963
      
      Differential Revision: D27495640
      
      Pulled By: ajkr
      
      fbshipit-source-id: a463cfba476919dc5c5c380800a75a86c31ffa23
      c43a37a9
    • shadowlux's avatar
      Merge checks into one (#8138) · a3a943bf
      shadowlux 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/8138
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D27475616
      
      Pulled By: riversand963
      
      fbshipit-source-id: d2815eed578a90c53d6a4e0dc4aaa232516eb4f8
      a3a943bf
    • A
      Add sample_for_compression results to table properties (#8139) · 1ba2b8a5
      Andrew Kryczka 提交于
      Summary:
      Added `TableProperties::{fast,slow}_compression_estimated_data_size`.
      These properties are present in block-based tables when
      `ColumnFamilyOptions::sample_for_compression > 0` and the necessary
      compression library is supported when the file is generated. They
      contain estimates of what `TableProperties::data_size` would be if the
      "fast"/"slow" compression library had been used instead. One
      limitation is we do not record exactly which "fast" (ZSTD or Zlib)
      or "slow" (LZ4 or Snappy) compression library produced the result.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8139
      
      Test Plan:
      - new unit test
      - ran `db_bench` with `sample_for_compression=1`; verified the `data_size` property matches the `{slow,fast}_compression_estimated_data_size` when the same compression type is used for the output file compression and the sampled compression
      
      Reviewed By: riversand963
      
      Differential Revision: D27454338
      
      Pulled By: ajkr
      
      fbshipit-source-id: 9529293de93ddac7f03b2e149d746e9f634abac4
      1ba2b8a5
  11. 31 3月, 2021 2 次提交
    • Z
      Fix error_handler_fs_test failure due to statistics (#8136) · 335c5a6b
      Zhichao Cao 提交于
      Summary:
      Fix error_handler_fs_test failure due to statistics, it will fails due to multi-thread running and resume is different.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8136
      
      Test Plan: make check
      
      Reviewed By: akankshamahajan15
      
      Differential Revision: D27448828
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: b94255c45e9e66e93334b5ca2e4e1bfcba23fc20
      335c5a6b
    • S
      Fix possible hang issue in ~DBImpl() when flush is scheduled in LOW pool (#8125) · e6534900
      sherriiiliu 提交于
      Summary:
      In DBImpl::CloseHelper, we wait for bg_compaction_scheduled_
      and bg_flush_scheduled_ to drop to 0. Unschedule is called prior
      to cancel any unscheduled flushes/compactions. It is assumed that
      anything in the high priority is a flush, and anything in the low
      priority pool is a compaction. This assumption, however, is broken when
      the high-pri pool is full.
      As a result, bg_compaction_scheduled_ can go < 0 and bg_flush_scheduled_
      will remain > 0 and DB can be in hang state.
      The fix is, we decrement the `bg_{flush,compaction,bottom_compaction}_scheduled_`
      inside the `Unschedule{Flush,Compaction,BottomCompaction}Callback()`s. DB
      `mutex_` will make the counts atomic in `Unschedule`.
      Related discussion: https://github.com/facebook/rocksdb/issues/7928
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8125
      
      Test Plan: Added new test case which hangs without the fix.
      
      Reviewed By: jay-zhuang
      
      Differential Revision: D27390043
      
      Pulled By: ajkr
      
      fbshipit-source-id: 78a367fba9a59ac5607ad24bd1c46dc16d5ec110
      e6534900
  12. 30 3月, 2021 1 次提交
  13. 29 3月, 2021 1 次提交
    • A
      Always truncate the latest WAL file on DB Open (#8122) · 7d7f1448
      anand76 提交于
      Summary:
      Currently, we only truncate the latest alive WAL files when the DB is opened. If the latest WAL file is empty or was flushed during Open, its not truncated since the file will be deleted later on in the Open path. However, before deletion, a new WAL file is created, and if the process crash loops between the new WAL file creation and deletion of the old WAL file, the preallocated space will keep accumulating and eventually use up all disk space. To prevent this, always truncate the latest WAL file, even if its empty or the data was flushed.
      
      Tests:
      Add unit tests to db_wal_test
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8122
      
      Reviewed By: riversand963
      
      Differential Revision: D27366132
      
      Pulled By: anand1976
      
      fbshipit-source-id: f923cc03ef033ccb32b140d36c6a63a8152f0e8e
      7d7f1448
  14. 27 3月, 2021 2 次提交
  15. 26 3月, 2021 4 次提交
    • L
      Introduce a ThreadGuard class and use it in ExternalSSTFileTest.PickedLevelBug (#8112) · 303cb23a
      Levi Tamasi 提交于
      Summary:
      The patch adds a resource management/RAII class called `ThreadGuard`,
      which can be used to ensure that the managed thread is joined when the
      `ThreadGuard` is destroyed, regardless of whether it is due to the
      object going out of scope, an early return, an exception etc. This is
      important because if an `std::thread` object is destroyed without having
      been joined (or detached) first, the process is aborted (via
      `std::terminate`).
      
      For now, `ThreadGuard` is only used in the test case
      `ExternalSSTFileTest.PickedLevelBug`; however, it could come in handy
      elsewhere in the codebase as well (both in test code and "real" code).
      Case in point: in the `PickedLevelBug` test case, with the earlier code we
      could end up in the above situation when the following assertion (which is
      before the threads are joined) is triggered:
      
      ```
      ASSERT_FALSE(bg_compact_started.load());
      ```
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8112
      
      Test Plan:
      ```
      make check
      gtest-parallel --repeat=10000 ./external_sst_file_test --gtest_filter="*PickedLevelBug"
      ```
      
      Reviewed By: riversand963
      
      Differential Revision: D27343185
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 2a8c3aa68bc78cc03ec0dbae909fb25c2cd15c69
      303cb23a
    • Z
      Fix flush no wal IO error bug (#8107) · af80a78b
      Zhichao Cao 提交于
      Summary:
      There is bug in the current code base introduced in https://github.com/facebook/rocksdb/issues/8049 , we still set the SST file write IO Error only case as hard error. Fix it by removing the logic.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8107
      
      Test Plan: make check, error_handler_fs_test
      
      Reviewed By: anand1976
      
      Differential Revision: D27321422
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: c014afc1553ca66b655e3bbf9d0bf6eb417ccf94
      af80a78b
    • S
      Fix some typos in comments (#8066) · 711881bc
      storagezhang 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/8066
      
      Reviewed By: jay-zhuang
      
      Differential Revision: D27280799
      
      Pulled By: mrambacher
      
      fbshipit-source-id: 68f91f5af4ffe0a84be581961bf9366887f47702
      711881bc
    • A
      Apply `sample_for_compression` to all block-based tables (#8105) · c20a7cd6
      Andrew Kryczka 提交于
      Summary:
      Previously it only applied to block-based tables generated by flush. This restriction
      was undocumented and blocked a new use case. Now compression sampling
      applies to all block-based tables we generate when it is enabled.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8105
      
      Test Plan: new unit test
      
      Reviewed By: riversand963
      
      Differential Revision: D27317275
      
      Pulled By: ajkr
      
      fbshipit-source-id: cd9fcc5178d6515e8cb59c6facb5ac01893cb5b0
      c20a7cd6
  16. 25 3月, 2021 2 次提交
  17. 24 3月, 2021 2 次提交
  18. 20 3月, 2021 4 次提交
    • S
      Remove unused variable (#8067) · c8b0842b
      storagezhang 提交于
      Summary:
      Remove unused variable `Slice blob_to_write` in `db/blob/blob_file_cache_test.cc`.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8067
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D27107693
      
      Pulled By: riversand963
      
      fbshipit-source-id: 9bfd4d296a6a1714ad5c1fa5bb231a0c52dbd56d
      c8b0842b
    • S
      Include C++ standard library headers instead of C compatibility headers (#8068) · d9be6556
      storagezhang 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/8068
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D27147685
      
      Pulled By: riversand963
      
      fbshipit-source-id: 5428b1c0142ecae17c977fba31a6d49b52983d1c
      d9be6556
    • S
      Add default in switch (#8065) · c7063242
      storagezhang 提交于
      Summary:
      switch may not cover all branch in `db/c.cc`:
      
      ```c++
      void rocksdb_options_set_access_hint_on_compaction_start(
          rocksdb_options_t* opt, int v) {
        switch(v) {
          case 0:
            opt->rep.access_hint_on_compaction_start =
                ROCKSDB_NAMESPACE::Options::NONE;
            break;
          case 1:
            opt->rep.access_hint_on_compaction_start =
                ROCKSDB_NAMESPACE::Options::NORMAL;
            break;
          case 2:
            opt->rep.access_hint_on_compaction_start =
                ROCKSDB_NAMESPACE::Options::SEQUENTIAL;
            break;
          case 3:
            opt->rep.access_hint_on_compaction_start =
                ROCKSDB_NAMESPACE::Options::WILLNEED;
            break;
        }
      }
      ```
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8065
      
      Reviewed By: riversand963
      
      Differential Revision: D27102892
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: ad1d20d192712878e61597311ba75b55df0066d7
      c7063242
    • Z
      Add new Append API with DataVerificationInfo to Env WritableFile (#8071) · dd0447ae
      Zhichao Cao 提交于
      Summary:
      Add the new Append and PositionedAppend API to env WritableFile. User is able to benefit from the write checksum handoff API when using the legacy Env classes. FileSystem already implemented the checksum handoff API.
      
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/8071
      
      Test Plan: make check, added new unit test.
      
      Reviewed By: anand1976
      
      Differential Revision: D27177043
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 430c8331fc81099fa6d00f4fff703b68b9e8080e
      dd0447ae