1. 08 2月, 2020 11 次提交
    • A
      Check KeyContext status in MultiGet (#6387) · d70011bc
      anand76 提交于
      Summary:
      Currently, any IO errors and checksum mismatches while reading data
      blocks, are being ignored by the batched MultiGet. Its only looking at
      the GetContext state. Fix that.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6387
      
      Test Plan: Add unit tests
      
      Differential Revision: D19799819
      
      Pulled By: anand1976
      
      fbshipit-source-id: 46133dccbb04e64067b9fe6cda73e282203db969
      d70011bc
    • R
      db/write_thread.cc: Initialize state (#6275) · 4e457278
      Robert Yang 提交于
      Summary:
      Fixed an error when compiled with -Og:
      db/write_thread.cc:183:14: error: 'state' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      Signed-off-by: NRobert Yang <liezhi.yang@windriver.com>
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6275
      
      Differential Revision: D19381755
      
      fbshipit-source-id: a90bf3cd4a7248d9d71219e918fc6253deb97e3c
      4e457278
    • S
      Allow readahead when reading option files. (#6372) · 876c2dbf
      sdong 提交于
      Summary:
      Right, when reading from option files, no readahead is used and 8KB buffer is used. It might introduce high latency if the file system provide high latency and doesn't do readahead. Instead, introduce a readahead to the file. When calling inside DB, infer the value from options.log_readahead. Otherwise, a default 512KB readahead size is used.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6372
      
      Test Plan: Add --log_readahead_size in db_bench. Run it with several options and observe read size from option files using strace.
      
      Differential Revision: D19727739
      
      fbshipit-source-id: e6d8053b0a64259abc087f1f388b9cd66fa8a583
      876c2dbf
    • C
      Support move semantics for PinnableSlice (#6374) · b42fa149
      Cheng Chang 提交于
      Summary:
      It's logically correct for PinnableSlice to support move semantics to transfer ownership of the pinned memory region. This PR adds both move constructor and move assignment to PinnableSlice.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6374
      
      Test Plan:
      A set of unit tests for the move semantics are added in slice_test.
      So `make slice_test && ./slice_test`.
      
      Differential Revision: D19739254
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: f898bd811bb05b2d87384ec58b645e9915e8e0b1
      b42fa149
    • C
      Fix Buck build on macOS (#6378) · 25fbdc5a
      Chad Austin 提交于
      Summary:
      liburing is a Linux-specific dependency, so make sure it's configured in the Linux-only Buck rules.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6378
      
      Test Plan:
      ```
      ~/fbcode $ cp internal_repo_rocksdb/repo/TARGETS rocksdb/src
      ~/fbcode $ buck build mode/mac eden
      ```
      
      Reviewed By: chadaustin
      
      Differential Revision: D19760039
      
      Pulled By: riversand963
      
      fbshipit-source-id: 2abfce81c8b17965ef76012262cd117708e0294f
      25fbdc5a
    • L
      Clean up VersionEdit a bit (#6383) · 752c87af
      Levi Tamasi 提交于
      Summary:
      This is a bunch of small improvements to `VersionEdit`. Namely, the patch
      
      * Makes the names and order of variables, methods, and code chunks related
        to the various information elements more consistent, and adds missing
        getters for the sake of completeness.
      * Initializes previously uninitialized stack variables.
      * Marks all getters const to improve const correctness.
      * Adds in-class initializers and removes the default ctor that would
        create an object with uninitialized built-in fields and call `Clear`
        afterwards.
      * Adds a new type alias for new files and changes the existing `typedef`
        for deleted files into a type alias as well.
      * Makes the helper method `DecodeNewFile4From` private.
      * Switches from long-winded iterator syntax to range based loops in a
        couple of places.
      * Fixes a couple of assignments where an integer 0 was assigned to
        boolean members.
      * Fixes a getter which used to return a `const std::string` instead of
      the intended `const std::string&`.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6383
      
      Test Plan: make check
      
      Differential Revision: D19780537
      
      Pulled By: ltamasi
      
      fbshipit-source-id: b0b4f09fee0ec0e7c7b7a6d76bfe5346e91824d0
      752c87af
    • C
      Remove outdated comment (#6379) · 5f478b9f
      Cheng Chang 提交于
      Summary:
      Since the logic for handling IDENTITY file is now inside `NewDB`, the comment above `NewDB` is no longer relevant.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6379
      
      Test Plan: not needed
      
      Differential Revision: D19795440
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 0b1cca87ac6d92474701c46aa4c8d4d708bfa19b
      5f478b9f
    • L
      BlobDB: ignore trivially moved files when updating the SST<->blob file mapping (#6381) · 1b4be4ca
      Levi Tamasi 提交于
      Summary:
      BlobDB keeps track of the mapping between SSTs and blob files using
      the `OnFlushCompleted` and `OnCompactionCompleted` callbacks of
      the `EventListener` interface: upon receiving a flush notification, a link
      is added between the newly flushed SST and the corresponding blob file;
      for compactions, links are removed for the inputs and added for the outputs.
      The earlier code performed this link deletion and addition even for
      trivially moved files; the new code walks through the two lists together
      (in a fashion that's similar to merge sort) and skips such files.
      This should mitigate https://github.com/facebook/rocksdb/issues/6338,
      wherein an assertion is triggered with the earlier code when a compaction
      notification for a trivial move precedes the flush notification for the
      moved SST.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6381
      
      Test Plan: make check
      
      Differential Revision: D19773729
      
      Pulled By: ltamasi
      
      fbshipit-source-id: ae0f273ded061110dd9334e8fb99b0d7786650b0
      1b4be4ca
    • C
      Remove inappropriate comments (#6371) · 107a7ca9
      Cheng Chang 提交于
      Summary:
      The comments are for iterators, not Cleanable.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6371
      
      Test Plan: no need
      
      Differential Revision: D19727527
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: c74aeffa27ea0ce15a36ff6f9694826712cd1c70
      107a7ca9
    • C
      Add status checks during DB::Open (#6380) · 0a74e1b9
      Cheng Chang 提交于
      Summary:
      Several statuses were not checked during DB::Open.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6380
      
      Test Plan: make check
      
      Differential Revision: D19780237
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: c8d189d20344bd1607890dd1449345bda2ef96b9
      0a74e1b9
    • Y
      Atomic flush rollback once on failure (#6385) · f361cedf
      Yanqin Jin 提交于
      Summary:
      Before this fix, atomic flush codepath may hit an assertion failure on a specific failure case.
      If all flush jobs within an atomic flush succeed (they do not write to MANIFEST), but batch writing version edits to MANIFEST fails, then `cfd->imm()->RollbackMemTableFlush()` will be called twice, and the second invocation hits assertion failure `assert(m->flush_in_progress_)` since the first invocation resets the variable `flush_in_progress_` to false already.
      
      Test plan (dev server):
      ```
      ./db_flush_test --gtest_filter=DBAtomicFlushTest/DBAtomicFlushTest.RollbackAfterFailToInstallResults
      make check
      ```
      Both must succeed.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6385
      
      Differential Revision: D19782943
      
      Pulled By: riversand963
      
      fbshipit-source-id: 84e1592625e729d1b70fdc8479959387a74cb121
      f361cedf
  2. 07 2月, 2020 2 次提交
    • A
      Fixing the documentation of the function (#4803) · c6f75516
      atul 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6354
      
      Differential Revision: D19725459
      
      Pulled By: riversand963
      
      fbshipit-source-id: fded24576251bfa4b289399f0909f1fe43426e28
      c6f75516
    • C
      Be able to read compatible leveldb sst files (#6370) · f5f79f01
      Cheng Chang 提交于
      Summary:
      In `DBSSTTest.SSTsWithLdbSuffixHandling`, some sst files are renamed to ldb files, the original intention of the test is to test that the ldb files can be loaded along with the sst files.
      
      The original test checks this by `ASSERT_NE("NOT_FOUND", Get(Key(k)))`, but the problem is `Get(Key(k))` returns IO error due to path not found instead of NOT_FOUND, so the success of ASSERT_NE does not mean the key can be retrieved.
      
      This PR updates the test to make sure Get(Key(k)) returns the original value.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6370
      
      Test Plan: make db_sst_test && ./db_sst_test
      
      Differential Revision: D19726278
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 993127f56457b315e669af4eeb92d6f956b7a4b7
      f5f79f01
  3. 06 2月, 2020 1 次提交
    • S
      Remove include math.h (#6373) · 24c9dce8
      sdong 提交于
      Summary:
      We see some odd errors complaining math. However, it doesn't seem that it is needed to be included. Remove the include of math.h. Just removing it from db_bench doesn't seem to break anything. Replacing sqrt from std::sqrt seems to work for histogram.cc
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6373
      
      Test Plan: Watch Travis and appveyor to run.
      
      Differential Revision: D19730068
      
      fbshipit-source-id: d3ad41defcdd9f51c2da1a3673fb258f5dfacf47
      24c9dce8
  4. 05 2月, 2020 3 次提交
    • M
      Avoid lots of calls to Env::GetFileSize() in SstFileManagerImpl when opening DB (#6363) · 1ed7d9b1
      Mike Kolupaev 提交于
      Summary:
      Before this PR it calls GetFileSize() once for each sst file in the DB. This can take a long time if there are be tens of thousands of sst files (e.g. in thousands of column families), and even longer if Env is talking to some remote service rather than local filesystem. This PR makes DB::Open() use sst file sizes that are already known from manifest (typically almost all files in the DB) and only call GetFileSize() for non-sst or obsolete files. Note that GetFileSize() is also called and checked against manifest in CheckConsistency(), so the calls in SstFileManagerImpl were completely redundant.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6363
      
      Test Plan: deployed to a test cluster, looked at a dump of Env calls (from a custom instrumented Env) - no more thousands of GetFileSize()s.
      
      Differential Revision: D19702509
      
      Pulled By: al13n321
      
      fbshipit-source-id: 99f8110620cb2e9d0c092dfcdbb11f3af4ff8b73
      1ed7d9b1
    • S
      Consolidate ReadFileToString() (#6366) · 3a073234
      sdong 提交于
      Summary:
      It's a minor refactoring. We have two ReadFileToString() but they are very similar. Make the one with Env argument calls the one with FS argument instead.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6366
      
      Test Plan: Run all existing tests
      
      Differential Revision: D19712332
      
      fbshipit-source-id: 5ae6fabf6355938690d95cda52afd1f39e0a7823
      3a073234
    • S
      Avoid to get manifest file size when recovering from it. (#6369) · 69c86148
      sdong 提交于
      Summary:
      Right now RocksDB gets manifest file size before recovering from it. The information is available in LogReader. Use it instead to prevent one file system call.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6369
      
      Test Plan: Run all existing tests
      
      Differential Revision: D19714872
      
      fbshipit-source-id: 0144be324d403c99e3da875ea2feccc8f64e883d
      69c86148
  5. 04 2月, 2020 6 次提交
    • M
      Add an option to prevent DB::Open() from querying sizes of all sst files (#6353) · 637e64b9
      Mike Kolupaev 提交于
      Summary:
      When paranoid_checks is on, DBImpl::CheckConsistency() iterates over all sst files and calls Env::GetFileSize() for each of them. As far as I could understand, this is pretty arbitrary and doesn't affect correctness - if filesystem doesn't corrupt fsynced files, the file sizes will always match; if it does, it may as well corrupt contents as well as sizes, and rocksdb doesn't check contents on open.
      
      If there are thousands of sst files, getting all their sizes takes a while. If, on top of that, Env is overridden to use some remote storage instead of local filesystem, it can be *really* slow and overload the remote storage service. This PR adds an option to not do GetFileSize(); instead it does GetChildren() for parent directory to check that all the expected sst files are at least present, but doesn't check their sizes.
      
      We can't just disable paranoid_checks instead because paranoid_checks do a few other important things: make the DB read-only on write errors, print error messages on read errors, etc.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6353
      
      Test Plan: ran the added sanity check unit test. Will try it out in a LogDevice test cluster where the GetFileSize() calls are causing a lot of trouble.
      
      Differential Revision: D19656425
      
      Pulled By: al13n321
      
      fbshipit-source-id: c2c421b367633033760d1f56747bad206d1fbf82
      637e64b9
    • A
      Fix a test failure in error_handler_test (#6367) · 7330ec0f
      anand76 提交于
      Summary:
      Fix an intermittent failure in
      DBErrorHandlingTest.CompactionManifestWriteError due to a race between
      background error recovery and the main test thread calling
      TEST_WaitForCompact().
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6367
      
      Test Plan: Run the test using gtest_parallel
      
      Differential Revision: D19713802
      
      Pulled By: anand1976
      
      fbshipit-source-id: 29e35dc26e0984fe8334c083e059f4fa1f335d68
      7330ec0f
    • S
      Use ReadFileToString() to get content from IDENTITY file (#6365) · f195d8d5
      sdong 提交于
      Summary:
      Right now when reading IDENTITY file, we use a very similar logic as ReadFileToString() while it does an extra file size check, which may be expensive in some file systems. There is no reason to duplicate the logic. Use ReadFileToString() instead.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6365
      
      Test Plan: RUn all existing tests.
      
      Differential Revision: D19709399
      
      fbshipit-source-id: 3bac31f3b2471f98a0d2694278b41e9cd34040fe
      f195d8d5
    • S
      Avoid create directory for every column families (#6358) · 36c504be
      sdong 提交于
      Summary:
      A relatively recent regression causes for every CF, create and open directory is called for the DB directory, unless CF has a private directory. This doesn't scale well with large number of column families.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6358
      
      Test Plan: Run all existing tests and see it pass. strace with db_bench --num_column_families and observe it doesn't open directory for number of column families.
      
      Differential Revision: D19675141
      
      fbshipit-source-id: da01d9216f1dae3f03d4064fbd88ce71245bd9be
      36c504be
    • H
      Error handler test fix (#6266) · eb4d6af5
      Huisheng Liu 提交于
      Summary:
      MultiDBCompactionError fails when it verifies the number of files on level 0 and level 1 without waiting for compaction to finish.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6266
      
      Differential Revision: D19701639
      
      Pulled By: riversand963
      
      fbshipit-source-id: e96d511bcde705075f073e0b550cebcd2ecfccdc
      eb4d6af5
    • A
      Improve RocksJava Comparator (#6252) · 7242dae7
      Adam Retter 提交于
      Summary:
      This is a redesign of the API for RocksJava comparators with the aim of improving performance. It also simplifies the class hierarchy.
      
      **NOTE**: This breaks backwards compatibility for existing 3rd party Comparators implemented in Java... so we need to consider carefully which release branches this goes into.
      
      Previously when implementing a comparator in Java the developer had a choice of subclassing either `DirectComparator` or `Comparator` which would use direct and non-direct byte-buffers resepectively (via `DirectSlice` and `Slice`).
      
      In this redesign there we have eliminated the overhead of using the Java Slice classes, and just use `ByteBuffer`s. The `ComparatorOptions` supplied when constructing a Comparator allow you to choose between direct and non-direct byte buffers by setting `useDirect`.
      
      In addition, the `ComparatorOptions` now allow you to choose whether a ByteBuffer is reused over multiple comparator calls, by setting `maxReusedBufferSize > 0`. When buffers are reused, ComparatorOptions provides a choice of mutex type by setting `useAdaptiveMutex`.
      
       ---
      [JMH benchmarks previously indicated](https://github.com/facebook/rocksdb/pull/6241#issue-356398306) that the difference between C++ and Java for implementing a comparator was ~7x slowdown in Java.
      
      With these changes, when reusing buffers and guarding access to them via mutexes the slowdown is approximately the same. However, these changes offer a new facility to not reuse mutextes, which reduces the slowdown to ~5.5x in Java. We also offer a `thread_local` mechanism for reusing buffers, which reduces slowdown to ~5.2x in Java (closes https://github.com/facebook/rocksdb/pull/4425).
      
      These changes also form a good base for further optimisation work such as further JNI lookup caching, and JNI critical.
      
       ---
      These numbers were captured without jemalloc. With jemalloc, the performance improves for all tests, and the Java slowdown reduces to between 4.8x and 5.x.
      
      ```
      ComparatorBenchmarks.put                                                native_bytewise  thrpt   25  124483.795 ± 2032.443  ops/s
      ComparatorBenchmarks.put                                        native_reverse_bytewise  thrpt   25  114414.536 ± 3486.156  ops/s
      ComparatorBenchmarks.put              java_bytewise_non-direct_reused-64_adaptive-mutex  thrpt   25   17228.250 ± 1288.546  ops/s
      ComparatorBenchmarks.put          java_bytewise_non-direct_reused-64_non-adaptive-mutex  thrpt   25   16035.865 ± 1248.099  ops/s
      ComparatorBenchmarks.put                java_bytewise_non-direct_reused-64_thread-local  thrpt   25   21571.500 ±  871.521  ops/s
      ComparatorBenchmarks.put                  java_bytewise_direct_reused-64_adaptive-mutex  thrpt   25   23613.773 ± 8465.660  ops/s
      ComparatorBenchmarks.put              java_bytewise_direct_reused-64_non-adaptive-mutex  thrpt   25   16768.172 ± 5618.489  ops/s
      ComparatorBenchmarks.put                    java_bytewise_direct_reused-64_thread-local  thrpt   25   23921.164 ± 8734.742  ops/s
      ComparatorBenchmarks.put                              java_bytewise_non-direct_no-reuse  thrpt   25   17899.684 ±  839.679  ops/s
      ComparatorBenchmarks.put                                  java_bytewise_direct_no-reuse  thrpt   25   22148.316 ± 1215.527  ops/s
      ComparatorBenchmarks.put      java_reverse_bytewise_non-direct_reused-64_adaptive-mutex  thrpt   25   11311.126 ±  820.602  ops/s
      ComparatorBenchmarks.put  java_reverse_bytewise_non-direct_reused-64_non-adaptive-mutex  thrpt   25   11421.311 ±  807.210  ops/s
      ComparatorBenchmarks.put        java_reverse_bytewise_non-direct_reused-64_thread-local  thrpt   25   11554.005 ±  960.556  ops/s
      ComparatorBenchmarks.put          java_reverse_bytewise_direct_reused-64_adaptive-mutex  thrpt   25   22960.523 ± 1673.421  ops/s
      ComparatorBenchmarks.put      java_reverse_bytewise_direct_reused-64_non-adaptive-mutex  thrpt   25   18293.317 ± 1434.601  ops/s
      ComparatorBenchmarks.put            java_reverse_bytewise_direct_reused-64_thread-local  thrpt   25   24479.361 ± 2157.306  ops/s
      ComparatorBenchmarks.put                      java_reverse_bytewise_non-direct_no-reuse  thrpt   25    7942.286 ±  626.170  ops/s
      ComparatorBenchmarks.put                          java_reverse_bytewise_direct_no-reuse  thrpt   25   11781.955 ± 1019.843  ops/s
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6252
      
      Differential Revision: D19331064
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 1f3b794e6a14162b2c3ffb943e8c0e64a0c03738
      7242dae7
  6. 01 2月, 2020 4 次提交
  7. 31 1月, 2020 5 次提交
    • M
      Disable recycle_log_file_num when it is incompatible with recovery mode (#6351) · 3316d292
      Maysam Yabandeh 提交于
      Summary:
      Non-zero recycle_log_file_num is incompatible with kPointInTimeRecovery and kAbsoluteConsistency recovery modes. Currently SanitizeOptions changes the recovery mode to kTolerateCorruptedTailRecords, while to resolve this option conflict it makes more sense to compromise recycle_log_file_num, which is a performance feature, instead of wal_recovery_mode, which is a safety feature.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6351
      
      Differential Revision: D19648931
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: dd0bf78349edc007518a00c4d63931fd69294ad7
      3316d292
    • Y
      Shorten certain test names to avoid infra failure (#6352) · f2fbc5d6
      Yanqin Jin 提交于
      Summary:
      Unit test names, together with other components,  are used to create log files
      during some internal testing. Overly long names cause infra failure due to file
      names being too long.
      
      Look for internal tests.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6352
      
      Differential Revision: D19649307
      
      Pulled By: riversand963
      
      fbshipit-source-id: 6f29de096e33c0eaa87d9c8702f810eda50059e7
      f2fbc5d6
    • B
      fix build warnnings on MSVC (#6309) · c9a5e487
      Burton Li 提交于
      Summary:
      Fix build warnings on MSVC. siying
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6309
      
      Differential Revision: D19455012
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 940739f2c92de60e47cc2bed8dd7f921459545a9
      c9a5e487
    • P
      Don't download from (unreliable) maven.org (#6348) · 90c71aa5
      Peter Dillinger 提交于
      Summary:
      I set up a mirror of our Java deps on github so we can download
      them through github URLs rather than maven.org, which is proving
      terribly unreliable from Travis builds.
      
      Also sanitized calls to curl, so they are easier to read and
      appropriately fail on download failure.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6348
      
      Test Plan: CI
      
      Differential Revision: D19633621
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 7eb3f730953db2ead758dc94039c040f406790f3
      90c71aa5
    • A
      Force a new manifest file if append to current one fails (#6331) · fb05b5a6
      anand76 提交于
      Summary:
      Fix for issue https://github.com/facebook/rocksdb/issues/6316
      
      When an append/sync of the manifest file fails due to an IO error such
      as NoSpace, we don't always put the DB in read-only mode. This is true
      for flush and compactions, as well as foreground operatons such as column family
      add/drop, CompactFiles etc. Subsequent changes to the DB will be
      recorded in the same manifest file, which would have a corrupted record
      in the middle due to the previous failure. On next DB::Open(), it will
      fail to process the full manifest and data will be lost.
      
      To fix this, we reset VersionSet::descriptor_log_ on append/sync
      failure, which will force a new manifest file to be written on the next
      append.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6331
      
      Test Plan: Add new unit tests in error_handler_test.cc
      
      Differential Revision: D19632951
      
      Pulled By: anand1976
      
      fbshipit-source-id: 68d527cb6e59a94cbbbf9f5a17a7f464381d51e3
      fb05b5a6
  8. 30 1月, 2020 6 次提交
    • L
      Add statistics for BlobDB GC (#6296) · 9e3ace42
      Levi Tamasi 提交于
      Summary:
      The patch adds statistics support to the new BlobDB garbage collection implementation;
      namely, it adds support for the following (pre-existing) tickers:
      
      `BLOB_DB_GC_NUM_FILES`: the number of blob files obsoleted by the GC logic.
      `BLOB_DB_GC_NUM_NEW_FILES`: the number of new blob files generated by the GC logic.
      `BLOB_DB_GC_FAILURES`: the number of failed GC passes (where a GC pass is
      equivalent to a (sub)compaction).
      `BLOB_DB_GC_NUM_KEYS_RELOCATED`: the number of blobs relocated to new blob
      files by the GC logic.
      `BLOB_DB_GC_BYTES_RELOCATED`: the total size of blobs relocated to new blob files.
      
      The tickers `BLOB_DB_GC_NUM_KEYS_OVERWRITTEN`, `BLOB_DB_GC_NUM_KEYS_EXPIRED`,
      `BLOB_DB_GC_BYTES_OVERWRITTEN`, `BLOB_DB_GC_BYTES_EXPIRED`, and
      `BLOB_DB_GC_MICROS` are not relevant for the new GC logic, and are thus marked
      deprecated.
      
      The patch also adds a couple of log messages that log the number and total size of
      blobs encountered and relocated during a GC pass, as well as the number of blob
      files created and obsoleted.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6296
      
      Test Plan: Extended unit tests and used the BlobDB mode of `db_bench`.
      
      Differential Revision: D19402513
      
      Pulled By: ltamasi
      
      fbshipit-source-id: d53d2bfbf4928a1db1e9346c67ebb9007b8932ec
      9e3ace42
    • S
      Fix LITE build with DBTest2.AutoPrefixMode1 (#6346) · 71874c5a
      sdong 提交于
      Summary:
      DBTest2.AutoPrefixMode1 doesn't pass because auto prefix mode is not supported there.
      Fix it by disabling the test.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6346
      
      Test Plan: Run DBTest2.AutoPrefixMode1 in lite mode
      
      Differential Revision: D19627486
      
      fbshipit-source-id: fbde75260aeecb7e6fc406e09c19a71a95aa5f08
      71874c5a
    • P
      Upload DB dir for all crash tests (#6344) · 23dcf275
      Peter Dillinger 提交于
      Summary:
      Difficult to root cause crash test failures without archiving
      db dir. Now all crash test configurations should save the db dir.
      
      Also exit with error code on bad command.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6344
      
      Test Plan:
      Hmm, how about this:
      
          for TARGET in stress_crash asan_crash ubsan_crash tsan_crash; do EMAIL=email ONCALL=oncall TRIGGER=all SUBSCRIBER=sub build_tools/rocksdb-lego-determinator $TARGET > tmp && node -c tmp && grep -q Upload tmp || echo Bad; done
      
      Differential Revision: D19625605
      
      Pulled By: pdillinger
      
      fbshipit-source-id: cb84aa93ee80b4534f4c61b90f0e0f99a41155d5
      23dcf275
    • S
      Fix db_bloom_filter_test clang LITE build (#6340) · 02ac6c9a
      sdong 提交于
      Summary:
      db_bloom_filter_test break with clang LITE build with following message:
      
      db/db_bloom_filter_test.cc:23:29: error: unused variable 'kPlainTable' [-Werror,-Wunused-const-variable]
      static constexpr PseudoMode kPlainTable = -1;
                                  ^
      
      Fix it by moving the declaration out of LITE build
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6340
      
      Test Plan:
      USE_CLANG=1 LITE=1 make db_bloom_filter_test
      and without LITE=1
      
      Differential Revision: D19609834
      
      fbshipit-source-id: 0e88f5c6759238a94f9880d84c785ac18e7cdd7e
      02ac6c9a
    • M
      Double Crash in kPointInTimeRecovery with TransactionDB (#6313) · 2f973ca9
      Maysam Yabandeh 提交于
      Summary:
      In WritePrepared there could be gap in sequence numbers. This breaks the trick we use in kPointInTimeRecovery which assume the first seq in the log right after the corrupted log is one larger than the last seq we read from the logs. To let this trick keep working, we add a dummy entry with the expected sequence to the first log right after recovery.
      Also in WriteCommitted, if the log right after the corrupted log is empty, since it has no sequence number to let the sequential trick work, it is assumed as unexpected behavior. This is however expected to happen if we close the db after recovering from a corruption and before writing anything new to it. To remedy that, we apply the same technique by writing a dummy entry to the log that is created after the corrupted log.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6313
      
      Differential Revision: D19458291
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 09bc49e574690085df45b034ca863ff315937e2d
      2f973ca9
    • A
      Reduce the need to re-download dependencies (#6318) · a07a9dc9
      Adam Retter 提交于
      Summary:
      Both changes are related to RocksJava:
      
      1. Allow dependencies that are already present on the host system due to Maven to be reused in Docker builds.
      
      2. Extend the `make clean-not-downloaded` target to RocksJava, so that libraries needed as dependencies for the test suite are not deleted and re-downloaded unnecessarily.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6318
      
      Differential Revision: D19608742
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 25e25649e3e3212b537ac4512b40e2e53dc02ae7
      a07a9dc9
  9. 29 1月, 2020 2 次提交
    • S
      Add ReadOptions.auto_prefix_mode (#6314) · 8f2bee67
      sdong 提交于
      Summary:
      Add a new option ReadOptions.auto_prefix_mode. When set to true, iterator should return the same result as total order seek, but may choose to do prefix seek internally, based on iterator upper bounds. Also fix two previous bugs when handling prefix extrator changes: (1) reverse iterator should not rely on upper bound to determine prefix. Fix it with skipping prefix check. (2) block-based filter is not handled properly.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6314
      
      Test Plan: (1) add a unit test; (2) add the check to stress test and run see whether it can pass at least one run.
      
      Differential Revision: D19458717
      
      fbshipit-source-id: 51c1bcc5cdd826c2469af201979a39600e779bce
      8f2bee67
    • S
      Add Google Group to Issue Template · 431fb6c0
      Siying Dong 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6339
      
      Differential Revision: D19608457
      
      fbshipit-source-id: 2adea28b1bd20b85ccafca1aa567030115220ea6
      431fb6c0