1. 06 11月, 2015 2 次提交
    • V
      Prefix-based iterating only shows keys in prefix · 9d50afc3
      Venkatesh Radhakrishnan 提交于
      Summary:
      MyRocks testing found an issue that while iterating over keys
      that are outside the prefix, sometimes wrong results were seen for keys
      outside the prefix. We now tighten the range of keys seen with a new
      read option called prefix_seen_at_start. This remembers the starting
      prefix and then compares it on a Next for equality of prefix. If they
      are from a different prefix, it sets valid to false.
      
      Test Plan: PrefixTest.PrefixValid
      
      Reviewers: IslamAbdelRahman, sdong, yhchiang, anthony
      
      Reviewed By: anthony
      
      Subscribers: spetrunia, hermanlee4, yoshinorim, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D50211
      9d50afc3
    • I
      Add write_stress to RocksDB Legocastle runs · 14c6e1a0
      Igor Canadi 提交于
      Summary: As title. Let's run it for 1 hour.
      
      Test Plan: How can I test legocastle changes?
      
      Reviewers: IslamAbdelRahman, yhchiang, rven, sdong, anthony, kradhakrishnan
      
      Reviewed By: kradhakrishnan
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D49653
      14c6e1a0
  2. 05 11月, 2015 5 次提交
  3. 04 11月, 2015 5 次提交
    • Y
      Fixed the compile error in RocksDBLite in memory_test.cc · dba5e007
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fixed the following compile error in RocksDBLite:
      
      18:00:33   CC       utilities/memory/memory_test.o
      18:00:33 utilities/memory/memory_test.cc: In function ‘int main(int, char**)’:
      18:00:33 utilities/memory/memory_test.cc:268:66: error: ‘printf’ was not declared in this scope
      18:00:33    printf("Skipped in RocksDBLite as utilities are not supported.");
      18:00:33                                                                   ^
      
      Test Plan: make OPT=-DROCKSDB_LITE memory_test
      
      Reviewers: igor, sdong, anthony, IslamAbdelRahman
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D50145
      dba5e007
    • Y
      Add Memory Insight support to utilities · 7d7ee2b6
      Yueh-Hsuan Chiang 提交于
      Summary:
      This patch introduces utilities/memory, which currently includes
      GetApproximateMemoryUsageByType that reports different types of
      rocksdb memory usage given a list of input DBs.
      
      The API also take care of the case where Cache could be shared
      across multiple column families / multiple db instances.
      
      Currently, it reports memory usage of memtable, table-readers
      and cache.
      
      Test Plan: utilities/memory/memory_test.cc
      
      Reviewers: igor, anthony, IslamAbdelRahman, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D49257
      7d7ee2b6
    • Y
      Add GetAggregatedIntProperty(): returns the aggregated value from all CFs · 3ecbab00
      Yueh-Hsuan Chiang 提交于
      Summary:
      This patch adds GetAggregatedIntProperty() that returns the aggregated
      value from all CFs
      
      Test Plan: Added a test in db_test
      
      Reviewers: igor, sdong, anthony, IslamAbdelRahman, rven
      
      Reviewed By: rven
      
      Subscribers: rven, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D49497
      3ecbab00
    • S
      Merge branch 'master' of github.com:facebook/rocksdb · 93a96672
      Satnam Singh 提交于
      93a96672
    • S
      Add RocksDb/GeoDb Iterator interface · c9aef3c4
      Satnam Singh 提交于
      Summary:
      This diff is a first step towards an iterator based interface for the
      SearchRadial method which replaces a vector of GeoObjects with an
      iterator for GeoObjects. This diff works by just wrapping the iterator
      for the encapsulated vector of GeoObjects. A future diff could extend
      this approach by defining an interator in terms of the underlying
      iteration in SearchRadial which would then remove the need to have
      an in-memory representation for all the matching GeoObjects.
      Fixes T8421387
      
      Test Plan:
      The existing tests have been modified to work with the new
      interface.
      
      Reviewers: IslamAbdelRahman, kradhakrishnan, dhruba, igor
      
      Reviewed By: igor
      
      Subscribers: igor, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D50031
      c9aef3c4
  4. 03 11月, 2015 7 次提交
  5. 31 10月, 2015 6 次提交
  6. 30 10月, 2015 8 次提交
  7. 29 10月, 2015 7 次提交
    • S
      Support PlainTableOption in option_helper · b69b9b62
      SherlockNoMad 提交于
      b69b9b62
    • I
      Fix RocksDB lite build for write_stress · c97667d9
      Igor Canadi 提交于
      Summary: We don't have access to GetLiveFilesMetadata() in RocksDB lite. If compiling write_stress for lite, I skip the check for leaked files, which depends on this function.
      
      Test Plan: OPT=-DROCKSDB_LITE m write_stress
      
      Reviewers: sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D49647
      c97667d9
    • H
      Use the correct variable when fetching table properties. · 0d720dfc
      Herman Lee 提交于
      Summary:
      An uninitialized parameter was being passed into the call to fetch the table
      properties during the compaction notification callbacks.
      
      Test Plan:
      Build it with myrocks and verify unit test passed.
      Run unit tests.
      
      Reviewers: rven, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D49635
      0d720dfc
    • I
      Write stress test · 4b66d953
      Igor Canadi 提交于
      Summary:
      The goal of this diff is to create a simple stress test with focus on catching:
      * bugs in compaction/flush processes, especially the ones that cause assertion errors
      * bugs in the code that deletes obsolete files
      
      There are two parts of the test:
      * write_stress, a binary that writes to the database
      * write_stress_runner.py, a script that invokes and kills write_stress
      
      Here are some interesting parts of write_stress:
      * Runs with very high concurrency of compactions and flushes (32 threads total) and tries to create a huge amount of small files
      * The keys written to the database are not uniformly distributed -- there is a 3-character prefix that mutates occasionally (in prefix mutator thread), in such a way that the first character mutates slower than second, which mutates slower than third character. That way, the compaction stress tests some interesting compaction features like trivial moves and bottommost level calculation
      * There is a thread that creates an iterator, holds it for couple of seconds and then iterates over all keys. This is supposed to test RocksDB's abilities to keep the files alive when there are references to them.
      * Some writes trigger WAL sync. This is stress testing our WAL sync code.
      * At the end of the run, we make sure that we didn't leak any of the sst files
      
      write_stress_runner.py changes the mode in which we run write_stress and also kills and restarts it. There are some interesting characteristics:
      * At the beginning we divide the full test runtime into smaller parts -- shorter runtimes (couple of seconds) and longer runtimes (100, 1000) seconds
      * The first time we run write_stress, we destroy the old DB. Every next time during the test, we use the same DB.
      * We can run in kill mode or clean-restart mode. Kill mode kills the write_stress violently.
      * We can run in mode where delete_obsolete_files_with_fullscan is true or false
      * We can run with low_open_files mode turned on or off. When it's turned on, we configure table cache to only hold a couple of files -- that way we need to reopen files every time we access them.
      
      Another goal was to create a stress test without a lot of parameters. So tools/write_stress_runner.py should only take one parameter -- runtime_sec and it should figure out everything else on its own.
      
      In a separate diff, I'll add this new test to our nightly legocastle runs.
      
      Test Plan:
      The goal of this test was to retroactively catch the following bugs: D33045, D48201, D46899, D42399. I failed to reproduce D48201, but all others have been caught!
      
      When i reverted https://reviews.facebook.net/D33045:
      
           ./write_stress --runtime_sec=200 --low_open_files_mode=true
           Iterator statuts not OK: IO error: /fast-rocksdb-tmp/rocksdb_test/write_stress/089166.sst: No such file or directory
      
      When i reverted https://reviews.facebook.net/D42399:
      
          python tools/write_stress_runner.py --runtime_sec=5000
          Running write_stress, will kill after 5 seconds: ./write_stress --runtime_sec=-1
          Running write_stress, will kill after 2 seconds: ./write_stress --runtime_sec=-1 --destroy_db=false --delete_obsolete_files_with_fullscan=true
          Running write_stress, will kill after 7 seconds: ./write_stress --runtime_sec=-1 --destroy_db=false
          Running write_stress, will kill after 5 seconds: ./write_stress --runtime_sec=-1 --destroy_db=false
          Running write_stress, will kill after 8 seconds: ./write_stress --runtime_sec=-1 --destroy_db=false --low_open_files_mode=true
          Write to DB failed: IO error: /fast-rocksdb-tmp/rocksdb_test/write_stress/019250.sst: No such file or directory
          ERROR: write_stress died with exitcode=-6
      
      When i reverted https://reviews.facebook.net/D46899:
      
          python tools/write_stress_runner.py --runtime_sec=1000
          runtime: 1000
          Going to execute write stress for [3, 3, 100, 3, 2, 100, 1, 788]
          Running write_stress for 3 seconds: ./write_stress --runtime_sec=3 --low_open_files_mode=true
          Running write_stress for 3 seconds: ./write_stress --runtime_sec=3 --destroy_db=false --delete_obsolete_files_with_fullscan=true
          Running write_stress, will kill after 100 seconds: ./write_stress --runtime_sec=-1 --destroy_db=false --delete_obsolete_files_with_fullscan=true
          write_stress: db/db_impl.cc:2070: void rocksdb::DBImpl::MarkLogsSynced(uint64_t, bool, const rocksdb::Status&): Assertion `log.getting_synced' failed.
          ERROR: write_stress died with exitcode=-6
      
      Reviewers: IslamAbdelRahman, yhchiang, rven, kradhakrishnan, sdong, anthony
      
      Reviewed By: anthony
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D49533
      4b66d953
    • S
      Move include/posix/io_posix.h to util/io_posix.h · 47414c6c
      sdong 提交于
      Summary: include/posix/io_posix.h is not a public API. Although include/posix/ is not a public header directory, it is confusing to put non-public headers to under include/. Move it to util/ to be clearer.
      
      Test Plan: Run all tests
      
      Reviewers: rven, IslamAbdelRahman, anthony, kradhakrishnan, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D49611
      47414c6c
    • S
      Revert "Avoid to reply on ROCKSDB_FALLOCATE_PRESENT in include/posix/io_posix.h" · 2889df84
      sdong 提交于
      This reverts commit c37223c0.
      2889df84
    • S
      Merge pull request #795 from yuslepukhin/fix_mocktable_id · 28c8758a
      Siying Dong 提交于
      Fix MockTable ID storage
      28c8758a