1. 28 11月, 2019 1 次提交
  2. 15 11月, 2019 1 次提交
    • S
      crash_test: use large max_manifest_file_size most of the time. (#6034) · 6123611c
      sdong 提交于
      Summary:
      Right now, crash_test always uses 16KB max_manifest_file_size value. It is good to cover logic of manifest file switch. However, information stored in manifest files might be useful in debugging failures. Switch to only use small manifest file size in 1/15 of the time.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6034
      
      Test Plan: Observe command generated by db_crash_test.py multiple times and see the --max_manifest_file_size value distribution.
      
      Differential Revision: D18513824
      
      fbshipit-source-id: 7b3ae6dbe521a0918df41064e3fa5ecbf2466e04
      6123611c
  3. 01 11月, 2019 1 次提交
    • S
      crash_test: disable periodic compaction in FIFO compaction. (#5993) · 5b656584
      sdong 提交于
      Summary:
      A recent commit make periodic compaction option valid in FIFO, which means TTL. But we fail to disable it in crash test, causing assert failure. Fix it by having it disabled.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5993
      
      Test Plan: Restart "make crash_test" many times and make sure --periodic_compaction_seconds=0 is always the case when --compaction_style=2
      
      Differential Revision: D18263223
      
      fbshipit-source-id: c91a802017d83ae89ac43827d1b0012861933814
      5b656584
  4. 31 10月, 2019 1 次提交
    • S
      crash_test: disable atomic flush with pipelined write (#5986) · 0337d87b
      sdong 提交于
      Summary:
      Recently, pipelined write is enabled even if atomic flush is enabled, which causing sanitizing failure in db_stress. Revert this change.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5986
      
      Test Plan: Run "make crash_test_with_atomic_flush" and see it to run for some while so that the old sanitizing error (which showed up quickly) doesn't show up.
      
      Differential Revision: D18228278
      
      fbshipit-source-id: 27fdf2f8e3e77068c9725a838b9bef4ab25a2553
      0337d87b
  5. 30 10月, 2019 1 次提交
    • S
      Move pipeline write waiting logic into WaitForPendingWrites() (#5716) · a3960fc8
      sdong 提交于
      Summary:
      In pipeline writing mode, memtable switching needs to wait for memtable writing to finish to make sure that when memtables are made immutable, inserts are not going to them. This is currently done in DBImpl::SwitchMemtable(). This is done after flush_scheduler_.TakeNextColumnFamily() is called to fetch the list of column families to switch. The function flush_scheduler_.TakeNextColumnFamily() itself, however, is not thread-safe when being called together with flush_scheduler_.ScheduleFlush().
      This change provides a fix, which moves the waiting logic before flush_scheduler_.TakeNextColumnFamily(). WaitForPendingWrites() is a natural place where the logic can happen.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5716
      
      Test Plan: Run all tests with ASAN and TSAN.
      
      Differential Revision: D18217658
      
      fbshipit-source-id: b9c5e765c9989645bf10afda7c5c726c3f82f6c3
      a3960fc8
  6. 15 10月, 2019 1 次提交
  7. 11 10月, 2019 1 次提交
  8. 09 10月, 2019 1 次提交
  9. 28 9月, 2019 1 次提交
    • S
      crash_test to do some verification for prefix extractor and iterator bounds. (#5846) · 679a45d0
      sdong 提交于
      Summary:
      For now, crash_test is not able to report any failure for the logic related to iterator upper, lower bounds or iterators, or reseek. These are features prone to errors. Improve db_stress in several ways:
      (1) For each iterator run, reseek up to 3 times.
      (2) For every iterator, create control iterator with upper or lower bound, with total order seek. Compare the results with the iterator.
      (3) Make simple crash test to avoid prefix size to have more coverage.
      (4) make prefix_size = 0 a valid size and -1 to indicate disabling prefix extractor.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5846
      
      Test Plan: Manually hack the code to create wrong results and see they are caught by the tool.
      
      Differential Revision: D17631760
      
      fbshipit-source-id: acd460a177bd2124a5ffd7fff490702dba63030b
      679a45d0
  10. 19 9月, 2019 1 次提交
  11. 17 9月, 2019 1 次提交
  12. 13 9月, 2019 1 次提交
  13. 12 9月, 2019 1 次提交
    • A
      Support partitioned index and filters in stress/crash tests (#4020) · dd2a35f1
      Andrew Kryczka 提交于
      Summary:
      - In `db_stress`, support choosing index type and whether to enable filter partitioning, and randomly set those options in crash test
      - When partitioned filter is enabled by crash test, force partitioned index to also be enabled since it's a prerequisite
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4020
      
      Test Plan:
      currently this is blocked on fixing the bug that crash test caught:
      
      ```
      $ TEST_TMPDIR=/data/compaction_bench python ./tools/db_crashtest.py blackbox --simple --interval=10 --max_key=10000000
      ...
      Verification failed for column family 0 key 937501: Value not found: NotFound:
      Crash-recovery verification failed :(
      ```
      
      Differential Revision: D8508683
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 0337e5d0558bcef26b1f3699f47265a2c1e99629
      dd2a35f1
  14. 28 8月, 2019 1 次提交
  15. 27 8月, 2019 1 次提交
  16. 23 8月, 2019 1 次提交
    • S
      Atomic Flush Crash Test also covers the case that WAL is enabled. (#5729) · d8a27d93
      sdong 提交于
      Summary:
      AtomicFlushStressTest is a powerful test, but right now we only run it for atomic_flush=true + disable_wal=true. We further extend it to the case where atomic_flush=false + disable_wal = false. All the workload generation and validation can stay the same.
      Atomic flush crash test is also changed to switch between the two test scenarios. It makes the name "atomic flush crash test" out of sync from what it really does. We leave it as it is to avoid troubles with continous test set-up.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5729
      
      Test Plan: Run "CRASH_TEST_KILL_ODD=188 TEST_TMPDIR=/dev/shm/ USE_CLANG=1 make whitebox_crash_test_with_atomic_flush", observe the settings used and see it passed.
      
      Differential Revision: D16969791
      
      fbshipit-source-id: 56e37487000ae631e31b0100acd7bdc441c04163
      d8a27d93
  17. 20 8月, 2019 1 次提交
    • S
      Slightly adjust atomic white box test's kill odd (#5717) · 8e12638f
      sdong 提交于
      Summary:
      Atomic white box test's kill odd is the same as normal test. However, in the scenario that only WritableFileWriter::Append() is blacklisted, WritableFileWriter::Flush() dominates the killing odds. Normally, most of WritableFileWriter::Flush() are called in WAL writes, where every write triggers a WAL flush. In atomic test, WAL is disabled, so the kill happens less frequently than we antipated. In some rare cases, the kill didn't end up with happening (for reasons I still don't fully understand) and cause the stress test timeout.
      
      If WAL is disabled, make the odds 5x likely to trigger.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5717
      
      Test Plan: Run whitebox_crash_test_with_atomic_flush and whitebox_crash_test and observe the kill odds printed out.
      
      Differential Revision: D16897237
      
      fbshipit-source-id: cbf5d96f6fc0e980523d0f1f94bf4e72cdb82d1c
      8e12638f
  18. 23 7月, 2019 1 次提交
  19. 10 7月, 2019 1 次提交
  20. 13 6月, 2019 1 次提交
  21. 10 5月, 2019 1 次提交
    • A
      Fix bugs in FilePickerMultiGet (#5292) · 181bb43f
      anand76 提交于
      Summary:
      This PR fixes a couple of bugs in FilePickerMultiGet that were causing db_stress test failures. The failures were caused by -
      1. Improper handling of a key that matches the user key portion of an L0 file's largest key. In this case, the curr_index_in_curr_level file index in L0 for that key was getting incremented, but batch_iter_ was not advanced. By design, all keys in a batch are supposed to be checked against an L0 file before advancing to the next L0 file. Not advancing to the next key in the batch was causing a double increment of curr_index_in_curr_level due to the same key being processed again
      2. Improper handling of a key that matches the user key portion of the largest key in the last file of L1 and higher. This was resulting in a premature end to the processing of the batch for that level when the next key in the batch is a duplicate. Typically, the keys in MultiGet will not be duplicates, but its good to handle that case correctly
      
      Test -
      asan_crash
      make check
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5292
      
      Differential Revision: D15282530
      
      Pulled By: anand1976
      
      fbshipit-source-id: d1a6a86e0af273169c3632db22a44d79c66a581f
      181bb43f
  22. 07 5月, 2019 1 次提交
  23. 04 5月, 2019 1 次提交
    • M
      Refresh snapshot list during long compactions (2nd attempt) (#5278) · 6a40ee5e
      Maysam Yabandeh 提交于
      Summary:
      Part of compaction cpu goes to processing snapshot list, the larger the list the bigger the overhead. Although the lifetime of most of the snapshots is much shorter than the lifetime of compactions, the compaction conservatively operates on the list of snapshots that it initially obtained. This patch allows the snapshot list to be updated via a callback if the compaction is taking long. This should let the compaction to continue more efficiently with much smaller snapshot list.
      For simplicity, to avoid the feature is disabled in two cases: i) When more than one sub-compaction are sharing the same snapshot list, ii) when Range Delete is used in which the range delete aggregator has its own copy of snapshot list.
      This fixes the reverted https://github.com/facebook/rocksdb/pull/5099 issue with range deletes.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5278
      
      Differential Revision: D15203291
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: fa645611e606aa222c7ce53176dc5bb6f259c258
      6a40ee5e
  24. 02 5月, 2019 1 次提交
  25. 01 5月, 2019 1 次提交
    • A
      Init compression dict handle before reading meta-blocks (#5267) · b02d0c23
      Andrew Kryczka 提交于
      Summary:
      At least one of the meta-block loading functions (`ReadRangeDelBlock`)
      uses the same block reading function (`NewDataBlockIterator`) as data
      block reads, which means it uses the dictionary handle. However, the
      dictionary handle was uninitialized while reading meta-blocks, causing
      readers to receive an error. This situation was only noticed when
      `cache_index_and_filter_blocks=true`.
      
      This PR initializes the handle to null while reading meta-blocks to
      prevent the error. It also adds support to `db_stress` /
      `db_crashtest.py` for `cache_index_and_filter_blocks`.
      
      Fixes #5263.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5267
      
      Differential Revision: D15149264
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 991d38a306c62db5976778bfb050fa3cd4a0671b
      b02d0c23
  26. 30 4月, 2019 1 次提交
    • Y
      Disable pipelined write in atomic flush stress test (#5266) · 210b49ca
      Yanqin Jin 提交于
      Summary:
      Since currently pipelined write allows one thread to perform memtable writes
      while another thread is traversing the `flush_scheduler_`, it will cause an
      assertion failure in `FlushScheduler::Clear`. To unblock crash recoery tests,
      we temporarily disable pipelined write when atomic flush is enabled.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/5266
      
      Differential Revision: D15142285
      
      Pulled By: riversand963
      
      fbshipit-source-id: a0c20fe4ac543e08feaed602414f982054df7831
      210b49ca
  27. 19 4月, 2019 1 次提交
  28. 16 3月, 2019 1 次提交
  29. 12 2月, 2019 1 次提交
    • A
      Fix `compression_zstd_max_train_bytes` coverage in stress test (#4957) · 1218704b
      Andrew Kryczka 提交于
      Summary:
      Previously `finalize_and_sanitize` function was always zeroing out `compression_zstd_max_train_bytes`. It was only supposed to do that when non-ZSTD compression was used. But since `--compression_type` was an unknown argument (i.e., one that `db_crashtest.py` does not recognize and blindly forwards to `db_stress`), `finalize_and_sanitize` could not tell whether ZSTD was used. This PR fixes it simply by making `--compression_type` a known argument with snappy as default (same as `db_stress`).
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4957
      
      Differential Revision: D13994302
      
      Pulled By: ajkr
      
      fbshipit-source-id: 1b0baea7331397822830970d3698642eb7a7df65
      1218704b
  30. 19 12月, 2018 1 次提交
  31. 14 12月, 2018 1 次提交
  32. 31 10月, 2018 1 次提交
  33. 20 9月, 2018 1 次提交
    • Z
      add missing range in random.choice argument (#4397) · 9b3cf908
      Zhongyi Xie 提交于
      Summary:
      This will fix the broken asan crash test:
      > Traceback (most recent call last):
        File "tools/db_crashtest.py", line 384, in <module>
          main()
        File "tools/db_crashtest.py", line 368, in main
          parser.add_argument("--" + k, type=type(v() if callable(v) else v))
        File "tools/db_crashtest.py", line 59, in <lambda>
          "index_block_restart_interval": lambda: random.choice(1, 16),
      TypeError: choice() takes exactly 2 arguments (3 given)
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4397
      
      Differential Revision: D9933041
      
      Pulled By: miasantreble
      
      fbshipit-source-id: 10998e5bc6b6a5cea3e4088b18465affc246e639
      9b3cf908
  34. 19 9月, 2018 1 次提交
  35. 18 9月, 2018 1 次提交
  36. 15 8月, 2018 1 次提交
  37. 07 8月, 2018 1 次提交
  38. 24 7月, 2018 1 次提交
  39. 27 6月, 2018 1 次提交
  40. 20 6月, 2018 1 次提交