1. 18 4月, 2015 1 次提交
  2. 17 4月, 2015 2 次提交
    • I
      Speed up reduce_levels_test · 48b0a045
      Igor Canadi 提交于
      Summary: For some reason reduce_levels is opening the databse with 65.000 levels. This makes ComputeCompactionScore() function terribly slow and the tests is also very slow (20seconds).
      
      Test Plan: mr reduce_levels_test now takes 20ms
      
      Reviewers: sdong, rven, kradhakrishnan, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D37059
      48b0a045
    • I
      Fix bug in ExpandWhileOverlapping() · 00c2afcd
      Igor Canadi 提交于
      Summary: If ExpandWhileOverlapping() we don't clear inputs. That's a bug introduced by my recent patch https://reviews.facebook.net/D36687. However, we have no tests covering ExpandWhileOverlapping(). I created a task t6771252 to add ExpandWhileOverlapping() tests.
      
      Test Plan: make check
      
      Reviewers: sdong, rven, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D37077
      00c2afcd
  3. 16 4月, 2015 5 次提交
  4. 15 4月, 2015 4 次提交
    • S
      Bug of trivial move of dynamic level · debaf85e
      sdong 提交于
      Summary: D36669 introduces a bug that trivial moved data is not going to specific level but the next level, which will incorrectly be level 1 for level 0 compaciton if base level is not level 1. Fixing it by appreciating the output level
      
      Test Plan: Run all tests
      
      Reviewers: MarkCallaghan, rven, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D37119
      debaf85e
    • S
      Fix and Improve DBTest.DynamicLevelCompressionPerLevel2 · 12d7d3d2
      sdong 提交于
      Summary:
      Recent change of DBTest.DynamicLevelCompressionPerLevel2 has a bug that the second sync point is not enabled. Fix it. Also add an assert for that.
      Also, flush compression is not tracked in the test. Add it.
      
      Test Plan: Build everything
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D37101
      12d7d3d2
    • S
      Fix build break introduced by new SyncPoint interface change · a1271c6c
      sdong 提交于
      Summary: When commiting the sync point interface change, didn't resolve the new occurance of the old interface in rebase. Fix it.
      
      Test Plan: Build and see it pass
      
      Reviewers: igor, yhchiang, rven, anthony, kradhakrishnan
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D37095
      a1271c6c
    • S
      SyncPoint to allow a callback with an argument and use it to get... · fcb206b6
      sdong 提交于
      SyncPoint to allow a callback with an argument and use it to get DBTest.DynamicLevelCompressionPerLevel2 more straight-forward
      
      Summary:
      Allow users to give a callback function with parameter using sync point, so more complicated verification can be done in tests.
      Use it in DBTest.DynamicLevelCompressionPerLevel2 so that failures will be more easy to debug.
      
      Test Plan: Run all tests. Run DBTest.DynamicLevelCompressionPerLevel2 with valgrind check.
      
      Reviewers: rven, yhchiang, anthony, kradhakrishnan, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D36999
      fcb206b6
  5. 14 4月, 2015 10 次提交
    • I
      Temporarily disable test CompactFilesOnLevelCompaction · 281db8bb
      Igor Canadi 提交于
      Summary: https://reviews.facebook.net/D36963 made the debug build much faster and that triggered failures of CompactFilesOnLevelCompaction test. 3 out of 4 last tests on Jenkins failed. I'm disabling this test temporarily, since we likely know the reason why it's failing and there's already work in progress to address it -- https://reviews.facebook.net/D36225
      
      Test Plan: none
      
      Reviewers: sdong, rven, yhchiang, meyering
      
      Reviewed By: meyering
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36993
      281db8bb
    • P
      Added falloc.h in build_detect_platform · e8808b91
      Pooya Shareghi 提交于
      On Centos 6, you need to explicitely include linux/falloc.h which is
      whele the  FALLOC_FL_* flags are defined. Otherwise, the fallocate()
      support test defined in build_detect_platform will fail.
      Signed-off-by: NPooya Shareghi <shareghi@gmail.com>
      e8808b91
    • I
      assert(sorted) in vector rep · 1983fadc
      Igor Canadi 提交于
      Summary: based on discussion on https://reviews.facebook.net/D36969
      
      Test Plan: will let jenkins do its job
      
      Reviewers: sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36975
      1983fadc
    • M
      Get benchmark.sh loads to run faster · 9da87480
      Mark Callaghan 提交于
      Summary:
      This changes loads to use vector memtable and disable the WAL. This also
      increases the chance we will see IO bottlenecks during loads which is good to stress
      test HW. But I also think it is a good way to load data quickly as this is a bulk
      operation and the WAL isn't needed.
      
      The two numbers below are the MB/sec rates for fillseq, bulkload using a skiplist
      or vector memtable and the WAL enabled or disabled. There is a big benefit from
      using the vector memtable and WAL disabled. Alas there is also a perf bug in
      the use of std::sort for ordered input when the vector is flushed. Task is open
      for that.
        112, 66 - skiplist with wal
        250, 116 - skiplist without wal
        110, 108 - vector with wal
        232, 370 - vector without wal
      
      Task ID: #
      
      Blame Rev:
      
      Test Plan:
      Revert Plan:
      
      Database Impact:
      
      Memcache Impact:
      
      Other Notes:
      
      EImportant:
      
      - begin *PUBLIC* platform impact section -
      Bugzilla: #
      - end platform impact -
      
      Reviewers: igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D36957
      9da87480
    • I
      Fix flakiness of WalManagerTest · 9b983bef
      Igor Canadi 提交于
      Summary: We should use mocked-out env for these tests to make it more realiable. Added benefit is that instead of actually sleeping for 3 seconds, we can instead pretend to sleep and just increase time counters.
      
      Test Plan: for i in `seq 100`; do ./wal_manager_test --gtest_filter=WalManagerTest.WALArchivalTtl ;done
      
      Reviewers: rven, meyering
      
      Reviewed By: meyering
      
      Subscribers: meyering, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36951
      9b983bef
    • I
      Don't do O(N^2) operations in debug mode for vector memtable · d41a565a
      Igor Canadi 提交于
      Summary: As title. For every operation we're asserting Valid(), which sorts the data. That's pretty terrible. We have to be careful to have decent performance even with DEBUG builds.
      
      Test Plan: make check
      
      Reviewers: sdong, rven, yhchiang, MarkCallaghan
      
      Reviewed By: MarkCallaghan
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36969
      d41a565a
    • I
      Fix bad performance in debug mode · 08be1803
      Igor Canadi 提交于
      Summary:
      See github issue 574: https://github.com/facebook/rocksdb/issues/574
      
      Basically when we're running in DEBUG mode we're calling `usleep(0)` on
      every mutex lock. I bisected the issue to
      https://reviews.facebook.net/D36963. Instead of calling sleep(0), this
      diff just avoids calling SleepForMicroseconds() when delay is not set.
      
      Test Plan:
          bpl=10485760;overlap=10;mcz=2;del=300000000;levels=2;ctrig=10000000; delay=10000000; stop=10000000; wbn=30; mbc=20; mb=1073741824;wbs=268435456; dds=1; sync=0; r=100000; t=1; vs=800; bs=65536; cs=1048576; of=500000; si=1000000; ./db_bench --benchmarks=fillrandom --disable_seek_compaction=1 --mmap_read=0 --statistics=1 --histogram=1 --num=$r --threads=$t --value_size=$vs --block_size=$bs --cache_size=$cs --bloom_bits=10 --cache_numshardbits=4 --open_files=$of --verify_checksum=1 --db=/tmp/rdb10test --sync=$sync --disable_wal=1 --compression_type=snappy --stats_interval=$si --compression_ratio=0.5 --disable_data_sync=$dds --write_buffer_size=$wbs --target_file_size_base=$mb --max_write_buffer_number=$wbn --max_background_compactions=$mbc --level0_file_num_compaction_trigger=$ctrig --level0_slowdown_writes_trigger=$delay --level0_stop_writes_trigger=$stop --num_levels=$levels --delete_obsolete_files_period_micros=$del --min_level_to_compress=$mcz --max_grandparent_overlap_factor=$overlap --stats_per_interval=1 --max_bytes_for_level_base=$bpl --memtablerep=vector --use_existing_db=0 --disable_auto_compactions=1 --source_compaction_factor=10000000 | grep ops
      
      Before:
      fillrandom   :     117.525 micros/op 8508 ops/sec;    6.6 MB/s
      After:
      fillrandom   :       1.283 micros/op 779502 ops/sec;  606.6 MB/s
      
      Reviewers: rven, yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: meyering, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36963
      08be1803
    • V
      Add Xfunc to makefile · 0a0501c8
      Venkatesh Radhakrishnan 提交于
      Summary: Make target for running all xfunc tests
      
      Test Plan: make xfunc
      
      Reviewers: igor, sdong, meyering
      
      Reviewed By: meyering
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36873
      0a0501c8
    • I
      Fix flakiness in FIFOCompaction test (github issue #573) · e7ad1492
      Igor Canadi 提交于
      Summary:
      The problem is that sometimes two memtables will be compacted together into a single file. In that case, our assertion
      
              ASSERT_EQ(NumTableFilesAtLevel(0), 5);
      
      fails because same amount of data is in 4 files instead of 5. We should wait for flush so that we prevent two memtables merging into a single file.
      
      Test Plan: `for i in `seq 20`; do mrtest FIFOCompactionTest; done` -- fails at least once before. fails zero times after.
      
      Reviewers: rven
      
      Reviewed By: rven
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36939
      e7ad1492
    • I
      Kill benchharness · abb40522
      Igor Canadi 提交于
      Summary:
      1. it doesn't work
      2. we're not using it
      
      In the future, if we need general benchmark framework, we should probably use https://github.com/google/benchmark
      
      Test Plan: make all
      
      Reviewers: yhchiang, rven, anthony, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36777
      abb40522
  6. 13 4月, 2015 1 次提交
  7. 11 4月, 2015 5 次提交
    • I
      Fix compile warning on CLANG · 590fadc4
      Igor Canadi 提交于
      Summary: oops
      
      Test Plan: compiles now
      
      Reviewers: sdong, yhchiang
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36867
      590fadc4
    • I
      Make Compaction class easier to use · 47b87439
      Igor Canadi 提交于
      Summary:
      The goal of this diff is to make Compaction class easier to use. This should also make new compaction algorithms easier to write (like CompactFiles from @yhchiang and dynamic leveled and multi-leveled universal from @sdong).
      
      Here are couple of things demonstrating that Compaction class is hard to use:
      1. we have two constructors of Compaction class
      2. there's this thing called grandparents_, but it appears to only be setup for leveled compaction and not compactfiles
      3. it's easy to introduce a subtle and dangerous bug like this: D36225
      4. SetupBottomMostLevel() is hard to understand and it shouldn't be. See this comment: https://github.com/facebook/rocksdb/blob/afbafeaeaebfd27a0f3e992fee8e0c57d07658fa/db/compaction.cc#L236-L241. It also made it harder for @yhchiang to write CompactFiles, as evidenced by this: https://github.com/facebook/rocksdb/blob/afbafeaeaebfd27a0f3e992fee8e0c57d07658fa/db/compaction_picker.cc#L204-L210
      
      The problem is that we create Compaction object, which holds a lot of state, and then pass it around to some functions. After those functions are done mutating, then we call couple of functions on Compaction object, like SetupBottommostLevel() and MarkFilesBeingCompacted(). It is very hard to see what's happening with all that Compaction's state while it's travelling across different functions. If you're writing a new PickCompaction() function you need to try really hard to understand what are all the functions you need to run on Compaction object and what state you need to setup.
      
      My proposed solution is to make important parts of Compaction immutable after construction. PickCompaction() should calculate compaction inputs and then pass them onto Compaction object once they are finalized. That makes it easy to create a new compaction -- just provide all the parameters to the constructor and you're done. No need to call confusing functions after you created your object.
      
      This diff doesn't fully achieve that goal, but it comes pretty close. Here are some of the changes:
      * have one Compaction constructor instead of two.
      * inputs_ is constant after construction
      * MarkFilesBeingCompacted() is now private to Compaction class and automatically called on construction/destruction.
      * SetupBottommostLevel() is gone. Compaction figures it out on its own based on the input.
      * CompactionPicker's functions are not passing around Compaction object anymore. They are only passing around the state that they need.
      
      Test Plan:
      make check
      make asan_check
      make valgrind_check
      
      Reviewers: rven, anthony, sdong, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: sdong, yhchiang, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36687
      47b87439
    • A
      Fix valgrind issues in memtable_list_test · 753dd1fd
      agiardullo 提交于
      Summary: Need to remember to unref MemTableList->current() before deleting.
      
      Test Plan: ran test with valgrind
      
      Reviewers: igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36855
      753dd1fd
    • K
      Repairer documentation improvement. · 697380f3
      krad 提交于
      Summary: Adding verbosity to existing comments.
      
      Test Plan: None
      
      Reviewers: sdong
      
      CC: leveldb
      
      Task ID: #6718960
      
      Blame Rev:
      697380f3
    • I
      Add LinkedIn back to USERS.md · 2f66d7f9
      Igor Canadi 提交于
      Summary: Thanks Ankit!
      
      Test Plan: none
      
      Reviewers: ankgup87
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D36837
      2f66d7f9
  8. 10 4月, 2015 9 次提交
    • A
      Fix memtable_list_test · 0feeee64
      agiardullo 提交于
      Summary:
      Test failing due to a missing directory caused by a simple bug (did not run into this on my dev box since the path already existed).
      
      We should look into deleting test::TmpDir() before each test run.
      
      Test Plan: ran test
      
      Reviewers: igor, yhchiang, meyering, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36831
      0feeee64
    • Y
      Fixed xfunc related compile errors in ROCKSDB_LITE · 7b9581bc
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fixed xfunc related compile errors in ROCKSDB_LITE
      
      Now make OPT=-DROCKSDB_LITE shared_lib -j32 would work
      
      Test Plan:
      make clean
      make OPT=-DROCKSDB_LITE shared_lib -j32
      make clean
      make OPT=-DROCKSDB_LITE static_lib -j32
      
      Reviewers: sdong, igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36825
      7b9581bc
    • A
      MemTableList tests · fabc1156
      agiardullo 提交于
      Summary: Add tests for MemTableList
      
      Test Plan: run test
      
      Reviewers: yhchiang, kradhakrishnan, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36735
      fabc1156
    • Y
      Fix a compile error in ROCKSDB_LITE in db/db_impl.cc · 9741dec0
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fix a compile error in ROCKSDB_LITE in db/db_impl.cc
      related to internal_stats.
      
      Test Plan: make OPT=-DROCKSDB_LITE shared_lib
      
      Reviewers: sdong, igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36819
      9741dec0
    • S
      "make commit-prereq" doesn't really build ROCKSDB_LITE · 465b25ca
      sdong 提交于
      Summary: "make commit-prereq" uses "make release" which overrides OPT, so ROCKSDB_LITE is not covered. Fix it by using "make static_lib"
      
      Test Plan: Run it and see it fail (which is expected)
      
      Reviewers: yhchiang, meyering, rven, anthony, kradhakrishnan, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D36813
      465b25ca
    • Y
      Fix a compilation error in ROCKSDB_LITE in db/internal_stats.h · d2a05624
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fix a compilation error in ROCKSDB_LITE in db/internal_stats.h
      
      Other compilation errors will be fixed in a separate diff.
      
      Test Plan: make OPT=-DROCKSDB_LITE
      
      Reviewers: sdong, igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36807
      d2a05624
    • S
      fault_injection_test: add a test case to cover log syncing after a log roll · 316ec80b
      sdong 提交于
      Summary:
      Add a test case:
      Write some keys without sync, flush, write other keys and do sync. Before flush finishes, host crashes and unsync data is dropped.
      Tag the new test as disabled since it is not passing.
      
      Test Plan: Run the test
      
      Reviewers: MarkCallaghan, rven, anthony, igor, kradhakrishnan
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D36741
      316ec80b
    • M
      Fixes for readcache-flashcache · ed229a0d
      Mark Callaghan 提交于
      Summary:
      This fixes two problems:
      1) the env should not be created twice when use_existing_db is false
      2) the env dtor should run before cachedev_fd_ is closed.
      
      Task ID: #
      
      Blame Rev:
      
      Test Plan:
      Revert Plan:
      
      Database Impact:
      
      Memcache Impact:
      
      Other Notes:
      
      EImportant:
      
      - begin *PUBLIC* platform impact section -
      Bugzilla: #
      - end platform impact -
      
      Reviewers: igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D36795
      ed229a0d
    • I
      Remove use of whole-archive to include jemalloc · 91df4e96
      Igor Canadi 提交于
      Summary: I don't think we need to use whole-archive to include jemalloc. This change only affects our development builds -- it does not affect our open source builds (which don't support jemalloc) or our fbcode third-party2 builds (which use open-source build codepaths).
      
      Test Plan:
      make
      verify that jemalloc is running by running `MALLOC_CONF="prof:true" ./cache_test` and observing that file was created
      
      Reviewers: MarkCallaghan
      
      Reviewed By: MarkCallaghan
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36783
      91df4e96
  9. 09 4月, 2015 3 次提交