1. 13 11月, 2013 2 次提交
    • I
      Small changes in Deleting obsolete files · 9bc4a26f
      Igor Canadi 提交于
      Summary:
      @haobo's suggestions from https://reviews.facebook.net/D13827
      
      Renaming some variables, deprecating purge_log_after_flush, changing for loop into auto for loop.
      
      I have not implemented deleting objects outside of mutex yet because it would require a big code change - we would delete object in db_impl, which currently does not know anything about object because it's defined in version_edit.h (FileMetaData). We should do it at some point, though.
      
      Test Plan: Ran deletefile_test
      
      Reviewers: haobo
      
      Reviewed By: haobo
      
      CC: leveldb, haobo
      
      Differential Revision: https://reviews.facebook.net/D14025
      9bc4a26f
    • I
      Move the comment · dad42556
      Igor Canadi 提交于
      Summary: Moving the comment per @haobo suggestion.
      
      Test Plan: No
      
      Reviewers: haobo
      
      Reviewed By: haobo
      
      CC: leveldb, haobo
      
      Differential Revision: https://reviews.facebook.net/D14019
      dad42556
  2. 12 11月, 2013 5 次提交
  3. 11 11月, 2013 1 次提交
  4. 10 11月, 2013 1 次提交
  5. 09 11月, 2013 3 次提交
    • L
      WriteBatch::Put() overload that gathers key and value from arrays of slices · 8a46ecd3
      lovro 提交于
      Summary: In our project, when writing to the database, we want to form the value as the concatenation of a small header and a larger payload.  It's a shame to have to copy the payload just so we can give RocksDB API a linear view of the value.  Since RocksDB makes a copy internally, it's easy to support gather writes.
      
      Test Plan: write_batch_test, new test case
      
      Reviewers: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13947
      8a46ecd3
    • I
      Speed up FindObsoleteFiles · 1510339e
      Igor Canadi 提交于
      Summary:
      Here's one solution we discussed on speeding up FindObsoleteFiles. Keep a set of all files in DBImpl and update the set every time we create a file. I probably missed few other spots where we create a file.
      
      It might speed things up a bit, but makes code uglier. I don't really like it.
      
      Much better approach would be to abstract all file handling to a separate class. Think of it as layer between DBImpl and Env. Having a separate class deal with file namings and deletion would benefit both code cleanliness (especially with huge DBImpl) and speed things up. It will take a huge effort to do this, though.
      
      Let's discuss offline today.
      
      Test Plan: Ran ./db_stress, verified that files are getting deleted
      
      Reviewers: dhruba, haobo, kailiu, emayanke
      
      Reviewed By: dhruba
      
      Differential Revision: https://reviews.facebook.net/D13827
      1510339e
    • I
      Forgot to change interface everywhere · dd218bbc
      Igor Canadi 提交于
      Summary: Changed the name and interface for creating HashSkipListRep. Forgot to change it in db_test.
      
      Test Plan: make db_test
      
      Reviewers: haobo
      
      Reviewed By: haobo
      
      Differential Revision: https://reviews.facebook.net/D13965
      dd218bbc
  6. 08 11月, 2013 4 次提交
    • I
      Implementing DynamicIterator for TransformRepNoLock · 8b3379dc
      Igor Canadi 提交于
      Summary: What @haobo done with TransformRep, now in TransformRepNoLock. Similar implementation, except that I made DynamicIterator a subclass of Iterator which makes me have less iterator initializations.
      
      Test Plan: ./prefix_test. Seeing huge savings vs. TransformRep again!
      
      Reviewers: dhruba, haobo, sdong, kailiu
      
      Reviewed By: haobo
      
      CC: leveldb, haobo
      
      Differential Revision: https://reviews.facebook.net/D13953
      8b3379dc
    • K
      Provide mechanism to configure when to flush the block · fd075d6e
      Kai Liu 提交于
      Summary: Allow block based table to configure the way flushing the blocks. This feature will allow us to add support for prefix-aligned block.
      
      Test Plan: make check
      
      Reviewers: dhruba, haobo, sdong, igor
      
      Reviewed By: sdong
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13875
      fd075d6e
    • K
      Fix the valgrind error · bba6595b
      Kai Liu 提交于
      Summary: I this bug from valgrind report and found a place that may potentially leak memory.
      
      Test Plan: re-ran the valgrind and no error any more
      
      Reviewers: emayanke
      
      Reviewed By: emayanke
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13959
      bba6595b
    • I
      Flush the log outside of lock · 444cf88a
      Igor Canadi 提交于
      Summary:
      Added a new call LogFlush() that flushes the log contents to the OS buffers. We never call it with lock held.
      
      We call it once for every Read/Write and often in compaction/flush process so the frequency should not be a problem.
      
      Test Plan: db_test
      
      Reviewers: dhruba, haobo, kailiu, emayanke
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13935
      444cf88a
  7. 07 11月, 2013 6 次提交
    • H
      [RocksDB] Generalize prefix-aware iterator to be used for more than one Seek · fd204488
      Haobo Xu 提交于
      Summary: Added a prefix_seek flag in ReadOptions to indicate that Seek is prefix aware(might not return data with different prefix), and also not bound to a specific prefix. Multiple Seeks and range scans can be invoked on the same iterator. If a specific prefix is specified, this flag will be ignored. Just a quick prototype that works for PrefixHashRep, the new lockless memtable could be easily extended with this support too.
      
      Test Plan: test it on Leaf
      
      Reviewers: dhruba, kailiu, sdong, igor
      
      Reviewed By: igor
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13929
      fd204488
    • S
      WAL log retention policy based on archive size. · c2be2cba
      shamdor 提交于
      Summary:
      Archive cleaning will still happen every WAL_ttl seconds
      but archived logs will be deleted only if archive size
      is greater then a WAL_size_limit value.
      Empty archived logs will be deleted evety WAL_ttl.
      
      Test Plan:
      1. Unit tests pass.
      2. Benchmark.
      
      Reviewers: emayanke, dhruba, haobo, sdong, kailiu, igor
      
      Reviewed By: emayanke
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13869
      c2be2cba
    • D
      Fix stress test failure when using mmap-reads. · 292c2b33
      Dhruba Borthakur 提交于
      Summary:
      The mmap-read file->Read() does not use the scratch buffer to
      read in file-contents.
      
      Test Plan: ./db_stress --test_batches_snapshots=1 --ops_per_thread=100000000 --threads=32 --write_buffer_size=4194304 --destroy_db_initially=0 --reopen=0 --readpercent=45 --prefixpercent=5 --writepercent=35 --delpercent=5 --iterpercent=10 --db=/tmp/dhruba --max_key=100000000 --disable_seek_compaction=0 --mmap_read=1 --block_size=16384 --cache_size=1048576 --open_files=500000 --verify_checksum=1 --sync=1 --disable_wal=0 --disable_data_sync=0 --target_file_size_base=2097152 --target_file_size_multiplier=2 --max_write_buffer_number=3 --max_background_compactions=20 --max_bytes_for_level_base=10485760 --filter_deletes=0
      
      Reviewers: haobo, kailiu
      
      Reviewed By: kailiu
      
      CC: leveldb, kailiu, emayanke
      
      Differential Revision: https://reviews.facebook.net/D13923
      292c2b33
    • I
      Log flush every 0 seconds · 95a8213f
      Igor Canadi 提交于
      Summary: We have to be able to catch last few log outputs before a crash
      
      Test Plan: no
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13917
      95a8213f
    • I
      Fix slow no-io iterator · 36409e00
      Igor Canadi 提交于
      Summary:
      This fixes #3130525. Dhruba's suggestion and Tnovak's implementation :)
      
      The issue was with SkipEmptyDataBlocksForward(), but I also changed SkipEmptyDataBlocksBackward(). Is that OK?
      
      Test Plan: Run the logdevice test
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13911
      36409e00
    • I
      TransformRep - use array instead of unordered_map · be96f249
      Igor Canadi 提交于
      Summary:
      I'm sending this diff together with https://reviews.facebook.net/D13881 because it didn't allow me to send only the array one.
      
      Here I also replaced unordered_map with just an array of shared_ptrs. This elminated all the locks.
      
      I will run the new benchmark and post the results here.
      
      Test Plan: db_test
      
      Reviewers: dhruba, haobo
      
      Reviewed By: haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13893
      be96f249
  8. 06 11月, 2013 4 次提交
  9. 05 11月, 2013 1 次提交
    • M
      Making the transaction log iterator more robust · f837f5b1
      Mayank Agarwal 提交于
      Summary:
      strict essentially means that we MUST find the startsequence. Thus we should return if starteSequence is not found in the first file in case strict is set. This will take care of ending the iterator in case of permanent gaps due to corruptions in the log files
      Also created NextImpl function that will have internal variable to distinguish whether Next is being called from StartSequence or by application.
      Set NotFoudn::gaps status to give an indication of gaps happeneing.
      Polished the inline documentation at various places
      
      Test Plan:
      * db_repl_stress test
      * db_test relating to transaction log iterator
      * fbcode/wormhole/rocksdb/rocks_log_iterator
      * sigma production machine sigmafio032.prn1
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13689
      f837f5b1
  10. 02 11月, 2013 3 次提交
    • D
      Implement a compressed block cache. · b4ad5e89
      Dhruba Borthakur 提交于
      Summary:
      Rocksdb can now support a uncompressed block cache, or a compressed
      block cache or both. Lookups first look for a block in the
      uncompressed cache, if it is not found only then it is looked up
      in the compressed cache. If it is found in the compressed cache,
      then it is uncompressed and inserted into the uncompressed cache.
      
      It is possible that the same block resides in the compressed cache
      as well as the uncompressed cache at the same time. Both caches
      have their own individual LRU policy.
      
      Test Plan: Unit test case attached.
      
      Reviewers: kailiu, sdong, haobo, leveldb
      
      Reviewed By: haobo
      
      CC: xjin, haobo
      
      Differential Revision: https://reviews.facebook.net/D12675
      b4ad5e89
    • P
      Task #3071144 Enhance ldb (db dump tool for leveldb) to report row counters for each row type · 1e4375d2
      Piyush Garg 提交于
      Summary: Added an option --count_delim=<char> which takes the given character as delimiter ('.' by default) and reports count of each row type found in the db
      
      Test Plan:
      1. Created test in file (for DBDumperCommand) rocksdb/tools/ldb_test.py which puts various key value pair in db and checks the output using dump --count_delim ,--count_delim="." and --count_delim=",".
      2. Created test in file (for InternalDumperCommand) rocksdb/tools/ldb_test.py which puts various key value pair in db and checks the output using dump --count_delim ,--count_delim="." and --count_delim=",".
      3. Manually created a database with several keys of several type and verified by running the command
         ./ldb db=<path> dump --count_delim="<char>"
         ./ldb db=<path> idump --count_delim="<char>"
      
      Reviewers: vamsi, dhruba, emayanke, kailiu
      
      Reviewed By: vamsi
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13815
      1e4375d2
    • I
      Move I/O outside of lock · beeb74be
      Igor Canadi 提交于
      Summary:
      I'm figuring out how Version[Set, Edit, ] classes work and I stumbled on this.
      
      It doesn't seem that the comment is accurate anymore. What I read is when the manifest grows too big, create a new file (and not only when we call LogAndApply for the first time).
      
      Test Plan: make check (currently running)
      
      Reviewers: dhruba, haobo, kailiu, emayanke
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13839
      beeb74be
  11. 01 11月, 2013 7 次提交
    • I
      Flush Log every 5 seconds · b572e81f
      Igor Canadi 提交于
      Summary: This might help with p99 performance, but does not solve the real problem. More discussion on #2947135
      
      Test Plan: make check
      
      Reviewers: dhruba, haobo
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13809
      b572e81f
    • S
      Fix a bug of table_reader_bench · 82b7e37f
      Siying Dong 提交于
      Summary: Iterator benchmark case is timed incorrectly. Fix it
      
      Test Plan: Run the benchmark
      
      Reviewers: haobo, dhruba
      
      Reviewed By: haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13845
      82b7e37f
    • S
      A very simple benchmark to measure Table implemenation's Get() And Iterator performance · 7caadf2e
      Siying Dong 提交于
      Summary: It is a very simple benchmark to measure a Table implementation's Get() and iterator performance if all the data is in memory.
      
      Test Plan: N/A
      
      Reviewers: dhruba, haobo, kailiu
      
      Reviewed By: haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13743
      7caadf2e
    • H
      [RocksDB] Add OnCompactionStart to CompactionFilter class · 8cbe5bb5
      Haobo Xu 提交于
      Summary: This is to give application compaction filter a chance to access context information of a specific compaction run. For example, depending on whether a compaction goes through all data files, the application could do things differently.
      
      Test Plan: make check
      
      Reviewers: dhruba, kailiu, sdong
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13683
      8cbe5bb5
    • N
      b4fab3be
    • I
      Fix make release · 138a8eee
      Igor Canadi 提交于
      Summary: Don't define if already defined.
      
      Test Plan: Running make release in parallel, will not commit if it fails.
      
      Reviewers: emayanke
      
      Reviewed By: emayanke
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13833
      138a8eee
    • N
      In-place updates for equal keys and similar sized values · fe250702
      Naman Gupta 提交于
      Summary:
      Currently for each put, a fresh memory is allocated, and a new entry is added to the memtable with a new sequence number irrespective of whether the key already exists in the memtable. This diff is an attempt to update the value inplace for existing keys. It currently handles a very simple case:
      1. Key already exists in the current memtable. Does not inplace update values in immutable memtable or snapshot
      2. Latest value type is a 'put' ie kTypeValue
      3. New value size is less than existing value, to avoid reallocating memory
      
      TODO: For a put of an existing key, deallocate memory take by values, for other value types till a kTypeValue is found, ie. remove kTypeMerge.
      TODO: Update the transaction log, to allow consistent reload of the memtable.
      
      Test Plan: Added a unit test verifying the inplace update. But some other unit tests broken due to invalid sequence number checks. WIll fix them next.
      
      Reviewers: xinyaohu, sumeet, haobo, dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D12423
      
      Automatic commit by arc
      fe250702
  12. 31 10月, 2013 1 次提交
    • S
      Follow-up Cleaning-up After D13521 · f03b2df0
      Siying Dong 提交于
      Summary:
      This patch is to address @haobo's comments on D13521:
      1. rename Table to be TableReader and make its factory function to be GetTableReader
      2. move the compression type selection logic out of TableBuilder but to compaction logic
      3. more accurate comments
      4. Move stat name constants into BlockBasedTable implementation.
      5. remove some uncleaned codes in simple_table_db_test
      
      Test Plan: pass test suites.
      
      Reviewers: haobo, dhruba, kailiu
      
      Reviewed By: haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D13785
      f03b2df0
  13. 30 10月, 2013 1 次提交
  14. 29 10月, 2013 1 次提交