1. 21 12月, 2019 13 次提交
    • S
      db_stress should not keep manifest files under checkpoint directory (#6233) · e0f9d11a
      sdong 提交于
      Summary:
      Recently db_stress starts to use a special Env that keeps all manifest files. This should not apply to checkpoint directory and causes test failure like this:
      
      Verification failed: Checkpoint gave inconsistent state. Status is IO error: While mkdir: /dev/shm/rocksdb/rocksdb_crashtest_whitebox/.checkpoint27.tmp: File exists
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6233
      
      Test Plan: Run crash_test with high chance of checkpoint and make sure it doesn't reproduce.
      
      Differential Revision: D19207250
      
      fbshipit-source-id: 12a931379e2e0572bb84aa658b6d03770c8551d4
      e0f9d11a
    • S
      db_stress: listners to implement all functions (#6197) · 9d36c066
      sdong 提交于
      Summary:
      Listners are one source of bugs because we frequently release some mutex to invoke them, which introduce race conditions. Implement all callback functions in db_stress's listener class, and randomly sleep.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6197
      
      Test Plan: Run crash_test for a while and see no obvious problem.
      
      Differential Revision: D19134015
      
      fbshipit-source-id: b9ea8be9366e4501759119520cd4f204943538f6
      9d36c066
    • S
      db_stress: cover approximate size (#6213) · 79cc8dc2
      sdong 提交于
      Summary:
      db_stress to execute DB::GetApproximateSizes() with randomized keys and options. Return value is not validated but error will be reported.
      Two ways to generate the range keys: (1) two random keys; (2) a small range.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6213
      
      Test Plan: (1) run "make crash_test" for a while; (2) hack the code to ingest some errors to see it is reported.
      
      Differential Revision: D19204665
      
      fbshipit-source-id: 652db36f13bcb5a3bd8fe4a10c0aa22a77a0bce2
      79cc8dc2
    • A
      Generate variable length keys in db_stress (#6165) · 3160edfd
      anand76 提交于
      Summary:
      Currently, db_stress generates fixed length keys of 8 bytes. This patch adds the ability to generate variable length keys. Most of the db_stress code continues to work with a numeric key randomly generated, and the numeric key also acts as an index into the values_ array. The numeric key is mapped to a variable length string key in a deterministic way. Furthermore, the ordering is preserved.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6165
      
      Test Plan: run make crash_test
      
      Differential Revision: D19204646
      
      Pulled By: anand1976
      
      fbshipit-source-id: d2d46a96615b4832a8be2a981f5913905f0e1ca7
      3160edfd
    • S
      crash_test to cover bottommost compression and some other changes (#6215) · 338c149b
      sdong 提交于
      Summary:
      Several improvements to crash_test/stress_test:
      (1) Stress_test to support an parameter of bottommost compression
      (2) Rename those FLAGS_* variables that are not gflags to avoid confusion
      (3) Crash_test to randomly generate compression type for bottommost compression with half the chance.
      (4) Stress_test to sanitize unsupported compression type to snappy, so that crash_test to cover all possible compression types and people don't need to worry about they don't support all comrpession types in their environment.
      (5) In crash_test, when generating db_stress command, sort arguments in alphabeta order, so that it is easier to find value for a specific argument.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6215
      
      Test Plan: Run "make crash_test" for a while and see the botommost option shown in LOG files.
      
      Differential Revision: D19171255
      
      fbshipit-source-id: d7001e246c4ff9ee5760776eea0be97738650735
      338c149b
    • S
      db_stress: improvements in TestIterator (#6166) · e55c2b3f
      sdong 提交于
      Summary:
      1. Cover SeekToFirst() and SeekToLast().
      2. Try to record the history of iterator operations.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6166
      
      Test Plan: Do some manual changes in the code to cover the failure cases and see the error printing is correct and SeekToFirst() and SeekToLast() sometimes show up.
      
      Differential Revision: D19047079
      
      fbshipit-source-id: 1ed616f919fe4d32c0a021fc37932a7bd3063bcd
      e55c2b3f
    • A
      RocksDB#keyMayExist should not assume database values are unicode strings (#6186) · e697da0b
      Adam Retter 提交于
      Summary:
      Closes https://github.com/facebook/rocksdb/issues/6183
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6186
      
      Differential Revision: D19201281
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 1c96b4ea09e826f91e44b0009eba3de0991d9053
      e697da0b
    • A
      Cleanup deprecation warnings and javadoc (#6218) · 4d3264e4
      Adam Retter 提交于
      Summary:
      There are no API changes ;-)
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6218
      
      Differential Revision: D19200373
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 58d34b01ea53b75a1eccbd72f8b14d6256a7380f
      4d3264e4
    • Z
      db_stress: Added the verification for GetLiveFiles, GetSortedWalFiles and GetCurrentWalFile (#6224) · f89dea4f
      Zhichao Cao 提交于
      Summary:
      Add the verification in operateDB to verify GetLiveFiles, GetSortedWalFiles and GetCurrentWalFile. The test will be called every 1 out of N, N is decided by get_live_files_and_wal_files_one_i, whose default is 1000000.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6224
      
      Test Plan: pass db_stress default run.
      
      Differential Revision: D19183358
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 20073cf72ede77a3e0d3cf5f28304f1f605d2b1a
      f89dea4f
    • Y
      Remove an unnecessary check before running db_stress (#6231) · c4fd9cf4
      Yanqin Jin 提交于
      Summary:
      As title. We can run non-cf-consistency stress tests with verify_db_one_in>0,
      thus remove the check added previously.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6231
      
      Test Plan:
      ```
      make crash_test
      ```
      
      Differential Revision: D19198295
      
      Pulled By: riversand963
      
      fbshipit-source-id: e874c701bb03ab76eaab00f059dd4032bb2f537f
      c4fd9cf4
    • L
      Log garbage_collection_cutoff alongside the other BlobDB options · 1ebaa762
      Levi Tamasi 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6229
      
      Differential Revision: D19191195
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 2a3c4785299641a46e022fc012460b759a689fce
      1ebaa762
    • L
      Support BlobDB in db_stress (#6230) · 786c3d45
      Levi Tamasi 提交于
      Summary:
      The patch adds support for BlobDB to `db_stress`. Note that BlobDB currently does
      not support (amongst other features) Column Families or the `SingleDelete` API,
      so for now, those should be disabled on the command line when running `db_stress` in
      BlobDB mode (using `-column_families=1` and `-nooverwritepercent=0`,
      respectively). Also, some BlobDB features that do not go well with the verification logic
      in `db_stress` like TTL and FIFO eviction are not supported currently.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6230
      
      Test Plan:
      ```
      ./db_stress -max_key=100000 -use_blob_db -column_families=1 -nooverwritepercent=0 -reopen=1 -blob_db_file_size=1000000 -target_file_size_base=1000000 -blob_db_enable_gc -blob_db_gc_cutoff=0.1 -blob_db_min_blob_size=10 -blob_db_bytes_per_sync=16384
      ```
      
      Differential Revision: D19191476
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 35840452af8c5e6095249c7fd9a53a119a0985fc
      786c3d45
    • Y
      Add more verification to db_stress (#6173) · 670a916d
      Yanqin Jin 提交于
      Summary:
      Currently, db_stress performs verification by calling `VerifyDb()` at the end of test and optionally before tests start. In case of corruption or incorrect result, it will be too late. This PR adds more verification in two ways.
      1. For cf consistency test, each test thread takes a snapshot and verifies every N ops. N is configurable via `-verify_db_one_in`. This option is not supported in other stress tests.
      2. For cf consistency test, we use another background thread in which a secondary instance periodically tails the primary (interval is configurable). We verify the secondary. Once an error is detected, we terminate the test and report. This does not affect other stress tests.
      
      Test plan (devserver)
      ```
      $./db_stress -test_cf_consistency -verify_db_one_in=0 -ops_per_thread=100000 -continuous_verification_interval=100
      $./db_stress -test_cf_consistency -verify_db_one_in=1000 -ops_per_thread=10000 -continuous_verification_interval=0
      $make crash_test
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6173
      
      Differential Revision: D19047367
      
      Pulled By: riversand963
      
      fbshipit-source-id: aeed584ad71f9310c111445f34975e5ab47a0615
      670a916d
  2. 20 12月, 2019 7 次提交
    • L
      BlobDB: only compare CF IDs when checking whether an API call is for the default CF (#6226) · 7a7ca8eb
      Levi Tamasi 提交于
      Summary:
      BlobDB currently only supports using the default column family. The earlier
      code enforces this by comparing the `ColumnFamilyHandle` passed to the
      `Get`/`Put`/etc. call with the handle returned by `DefaultColumnFamily`
      (which, at the end of the day, comes from `DBImpl::default_cf_handle_`).
      Since other `ColumnFamilyHandle`s can also point to the default column
      family, this can reject legitimate requests as well. (As an example,
      with the earlier code, the handle returned by `BlobDB::Open` cannot
      actually be used in API calls.) The patch fixes this by comparing only
      the IDs of the column family handles instead of the pointers themselves.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6226
      
      Test Plan: `make check`
      
      Differential Revision: D19187461
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 54ce2e12ebb1f07e6d1e70e3b1e0213dfa94bda2
      7a7ca8eb
    • P
      Only search specific directories in Python check (#6225) · 1ba92b85
      Peter Dillinger 提交于
      Summary:
      The new Python syntax check could fail if external entities
      were cloned or symlinked to a subdir in a rocksdb git clone. (E.g.
      Facebook internal LITE build.) Only look for Python files in specific
      subdirs
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6225
      
      Test Plan: python tools/check_all_python.py (still 34 files checked)
      
      Reviewed By: gfosco
      
      Differential Revision: D19186110
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 1fefa54e36b32cd5d96d3d1a43e8a2a694c22ea5
      1ba92b85
    • S
      BlockBasedTable::ApproximateSize() should use total order seek (#6222) · f295b099
      sdong 提交于
      Summary:
      Right now BlockBasedTable::ApproximateSize() uses default setting about whether to use total order seek. There is no reason for that. There is no reason to do any filtering for approximate size boundary key, and it may introduce bugs. Disable it.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6222
      
      Test Plan: Run existing tests
      
      Differential Revision: D19184787
      
      fbshipit-source-id: 64180660bd2800914fff75104172b61c06f0b1c9
      f295b099
    • P
      Refactor pulling out parts of StressTest::OperateDb (#6195) · 873331fe
      Peter Dillinger 提交于
      Summary:
      Complete some refactoring called for in https://github.com/facebook/rocksdb/issues/6148. Somehow I got some 'make format' in here for files I didn't change, but that should be OK. (I'm not sure why "hide whitespace changes" doesn't seem to help in review.)
      
      Not addressed in this PR: some operations simply print to stdout rather than failing on discovering a bad status or inconsistency.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6195
      
      Differential Revision: D19131067
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 4f416e6b792023989ef119f385fe122426cb825d
      873331fe
    • M
      Revert "Add kHashSearch to stress tests (#6210)" (#6220) · 77d5ba78
      Maysam Yabandeh 提交于
      Summary:
      This reverts commit 54f9092b.
      It making our daily stress tests fail. Revert it until the issues are fixed.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6220
      
      Differential Revision: D19179881
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 99de0eaf776567fa81110b9ad2608234a16083ce
      77d5ba78
    • P
      Temporarily disable level_compaction_dynamic_level_bytes in crash test (#6217) · 9ff569bd
      Peter Dillinger 提交于
      Summary:
      We're seeing assertion violations like this in crash test:
      
      db_stress: table/block_based/block_based_table_reader.cc:4129: virtual uint64_t rocksdb::BlockBasedTable::ApproximateSize(const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::TableReaderCaller): Assertion `end_offset >= start_offset' failed.***
      
      And ApproximateSize appears only to be called with the level_compaction_dynamic_level_bytes option.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6217
      
      Test Plan:
      temporarily put an assert(false) in ApproximateSize and
      briefly run 'make crash_test'
      
      Differential Revision: D19179174
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 506e6549aea0da19b363a1a6da04373c364d92e4
      9ff569bd
    • P
      Syntax check python files on testing (#6209) · 5b18729d
      Peter Dillinger 提交于
      Summary:
      Adds a python script to syntax check all python files in the
      repository and report any errors.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6209
      
      Test Plan:
      'make check' with and without seeded syntax errors. Also look
      for "No syntax errors in 34 .py files" on success, and in java_test CI output
      
      Differential Revision: D19166756
      
      Pulled By: pdillinger
      
      fbshipit-source-id: 537df464b767260d66810b4cf4c9808a026c58a4
      5b18729d
  3. 19 12月, 2019 7 次提交
  4. 18 12月, 2019 8 次提交
  5. 17 12月, 2019 5 次提交
    • A
      Fix crash in Transaction::MultiGet() when num_keys > 32 · 1be48cb8
      anand1976 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6192
      
      Test Plan:
      Add a unit test that fails without the fix and passes now
      make check
      
      Differential Revision: D19124781
      
      Pulled By: anand1976
      
      fbshipit-source-id: 8c8cb6fa16c3fc23ec011e168561a13f76bbd783
      1be48cb8
    • Y
      Use Env::LoadEnv to create custom Env objects (#6196) · 7678cf2d
      Yanqin Jin 提交于
      Summary:
      As title. Previous assumption was that the underlying lib can always return
      a shared_ptr<Env>. This is too strong. Therefore, we use Env::LoadEnv to relax
      it.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6196
      
      Test Plan: make check
      
      Differential Revision: D19133199
      
      Pulled By: riversand963
      
      fbshipit-source-id: c83a0c02a42610d077054f2de1acfc45126b3a75
      7678cf2d
    • M
      Wait for CancelAllBackgroundWork before Close in db stress (#6191) · 68d5d82d
      Maysam Yabandeh 提交于
      Summary:
      In https://github.com/facebook/rocksdb/issues/6174 we fixed the stress test to respect the CancelAllBackgroundWork + Close order for WritePrepared transactions. The fix missed to take into account that some invocation of CancelAllBackgroundWork are with wait=false parameter which essentially breaks the order.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6191
      
      Differential Revision: D19102709
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: f4e7b5fdae47ff1c1ac284ba1cf67d5d3f3d03eb
      68d5d82d
    • Z
      Merge adjacent file block reads in RocksDB MultiGet() and Add uncompressed block to cache (#6089) · cddd6379
      Zhichao Cao 提交于
      Summary:
      In the current MultiGet, if the KV-pairs do not belong to the data blocks in the block cache, multiple blocks are read from a SST. It will trigger one block read for each block request and read them in parallel. In some cases, if some data blocks are adjacent in the SST, the reads for these blocks can be combined to a single large read, which can reduce the system calls and reduce the read latency if possible.
      
      Considering to fill the block cache, if multiple data blocks are in the same memory buffer, we need to copy them to the heap separately. Therefore, only in the case that 1) data block compression is enabled, and 2) compressed block cache is null, we can do combined read. Otherwise, extra memory copy is needed, which may cause extra overhead. In the current case, data blocks will be uncompressed to a new memory space.
      
      Also, in the case that 1) data block compression is enabled, and 2) compressed block cache is null, it is possible the data block is actually not compressed. In the current logic, these data blocks will not be added to the uncompressed_cache. So if memory buffer is shared and the data block is not compressed, the data block are copied to the head and fill the cache.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6089
      
      Test Plan: Added test case to ParallelIO.MultiGet. Pass make asan_check
      
      Differential Revision: D18734668
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 67c5615ed373e51e42635fd74b36f8f3a66d5da4
      cddd6379
    • S
      Add some new options to crash_test (#6176) · bcc372c0
      sdong 提交于
      Summary:
      Several options are trivially added to crash test and random values are picked.
      Made simple test run non-dynamic level and normal test run dynamic level.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6176
      
      Test Plan: Run crash_test and watch the printing
      
      Differential Revision: D19053955
      
      fbshipit-source-id: 958cb43c968541ebd87ed4d91e778bd1d40e7502
      bcc372c0