a4913c5 | Abhishek Kona | 10 June 2013, 18:57:55 UTC | [rocksdb] names for all metrics provided in statistics.h Summary: Provide a map of histograms and ticker vs strings. Fb303 libraries can use this to provide the mapping. We will not have to duplicate the code during release. Test Plan: db_bench with statistics=1 Reviewers: dhruba, haobo Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D11145 | 10 June 2013, 18:57:55 UTC |
184343a | Mayank Agarwal | 09 June 2013, 03:15:10 UTC | Max_mem_compaction_level can have maximum value of num_levels-1 Summary: Without this files could be written out to a level greater than the maximum level possible and is the source of the segfaults that wormhole awas getting. The sequence of steps that was followed: 1. WriteLevel0Table was called when memtable was to be flushed for a file. 2. PickLevelForMemTableOutput was called to determine the level to which this file should be pushed. 3. PickLevelForMemTableOutput returned a wrong result because max_mem_compaction_level was equal to 2 even when num_levels was equal to 0. The fix to re-initialize max_mem_compaction_level based on num_levels passed seems correct. Test Plan: make all check; Also made a dummy file to mimic the wormhole-file behaviour which was causing the segfaults and found that the same segfault occurs without this change and not with this. Reviewers: dhruba, haobo Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D11157 | 09 June 2013, 17:38:55 UTC |
7a6bd8e | Mayank Agarwal | 08 June 2013, 19:29:43 UTC | Modifying options to db_stress when it is run with db_crashtest Summary: These extra options caught some bugs. Will be run via Jenkins now with the crash_test Test Plan: ./make crashtest Reviewers: dhruba, vamsi Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D11151 | 09 June 2013, 16:58:46 UTC |
3bb9449 | Vamsi Ponnekanti | 07 June 2013, 18:06:20 UTC | [Fix whilebox crash test failure] Summary: I think the check for "error" that I added had caused false alarm. Fixed that. Test Plan: Revert Plan: OK Task ID: # Reviewers: emayanke, dhruba Reviewed By: emayanke Differential Revision: https://reviews.facebook.net/D11139 | 07 June 2013, 18:34:46 UTC |
e982b5a | Abhishek Kona | 07 June 2013, 17:02:28 UTC | [Rocksdb] measure table open io in a histogram Summary: as title Test Plan: db_bench --statistics=1 check for statistic. Reviewers: dhruba, haobo Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D11109 | 07 June 2013, 17:02:28 UTC |
8ef328e | Jim Paton | 05 June 2013, 17:37:38 UTC | ctags and cscope support to Makefile Summary: Added a target to Makefile called 'tags' that runs ctags and cscope on all *.cc and *.h file Test Plan: Run 'make tags'. Then start vim and do :set tags=./tags :cs add cscope.out These commands should give you no error messages. You should then be able to access cscope db and ctags as normal in vim. Reviewers: dhruba Differential Revision: https://reviews.facebook.net/D11103 | 07 June 2013, 16:13:40 UTC |
5cf7a00 | Vamsi Ponnekanti | 24 May 2013, 02:10:13 UTC | [Make most of the changes suggested by Aaron] Summary: $title Test Plan: Revert Plan: OK Task ID: # Reviewers: emayanke, akushner Reviewed By: akushner Differential Revision: https://reviews.facebook.net/D10923 | 07 June 2013, 00:31:45 UTC |
db1f0cd | Deon Nicholas | 06 June 2013, 00:25:16 UTC | Fixed valgrind errors | 06 June 2013, 00:25:16 UTC |
d8c7c45 | Deon Nicholas | 05 June 2013, 18:22:38 UTC | Very basic Multiget and simple test cases. Summary: Implemented the MultiGet operator which takes in a list of keys and returns their associated values. Currently uses std::vector as its container data structure. Otherwise, it works identically to "Get". Test Plan: 1. make db_test ; compile it 2. ./db_test ; test it 3. make all check ; regress / run all tests 4. make release ; (optional) compile with release settings Reviewers: haobo, MarkCallaghan, dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10875 | 05 June 2013, 18:22:38 UTC |
d91b42e | Abhishek Kona | 05 June 2013, 18:06:21 UTC | [Rocksdb] Measure all FSYNC/SYNC times Summary: Add stop watches around all sync calls. Test Plan: db_bench check if respective histograms are printed Reviewers: haobo, dhruba Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D11073 | 05 June 2013, 18:06:21 UTC |
ee522d0 | Abhishek Kona | 05 June 2013, 17:48:24 UTC | [Rocksdb] Log on disable/enable file deletions Summary: as title Test Plan: compile Reviewers: dhruba, haobo Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D11085 | 05 June 2013, 17:48:24 UTC |
043573b | Haobo Xu | 04 June 2013, 06:23:03 UTC | [RocksDB] Include 64bit random number generator Summary: As title. Test Plan: make check; Reviewers: chip, MarkCallaghan CC: leveldb Differential Revision: https://reviews.facebook.net/D11061 | 04 June 2013, 20:52:27 UTC |
d9f538e | Mark Callaghan | 03 June 2013, 15:16:16 UTC | Improve output for GetProperty('leveldb.stats') Summary: Display separate values for read, write & total compaction IO. Display compaction amplification and write amplification. Add similar values for the period since the last call to GetProperty. Results since the server started are reported as "cumulative" stats. Results since the last call to GetProperty are reported as "interval" stats. Level Files Size(MB) Time(sec) Read(MB) Write(MB) Rn(MB) Rnp1(MB) Wnew(MB) Amplify Read(MB/s) Write(MB/s) Rn Rnp1 Wnp1 NewW Count Ln-stall ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0 7 13 21 0 211 0 0 211 0.0 0.0 10.1 0 0 0 0 113 0.0 1 79 157 88 993 989 198 795 194 9.0 11.3 11.2 106 405 502 97 14 0.0 2 19 36 5 63 63 37 27 36 2.4 12.3 12.2 19 14 32 18 12 0.0 >>>>>>>>>>>>>>>>>>>>>>>>> text below has been is new and/or reformatted Uptime(secs): 122.2 total, 0.9 interval Compaction IO cumulative (GB): 0.21 new, 1.03 read, 1.23 write, 2.26 read+write Compaction IO cumulative (MB/sec): 1.7 new, 8.6 read, 10.3 write, 19.0 read+write Amplification cumulative: 6.0 write, 11.0 compaction Compaction IO interval (MB): 5.59 new, 0.00 read, 5.59 write, 5.59 read+write Compaction IO interval (MB/sec): 6.5 new, 0.0 read, 6.5 write, 6.5 read+write Amplification interval: 1.0 write, 1.0 compaction >>>>>>>>>>>>>>>>>>>>>>>> text above is new and/or reformatted Stalls(secs): 90.574 level0_slowdown, 0.000 level0_numfiles, 10.165 memtable_compaction, 0.000 leveln_slowdown Task ID: # Blame Rev: Test Plan: make check, run db_bench Revert Plan: Database Impact: Memcache Impact: Other Notes: EImportant: - begin *PUBLIC* platform impact section - Bugzilla: # - end platform impact - Reviewers: haobo Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D11049 | 04 June 2013, 03:24:49 UTC |
2b1fb5b | Haobo Xu | 31 May 2013, 05:57:22 UTC | [RocksDB] Add score column to leveldb.stats Summary: Added the 'score' column to the compaction stats output, which shows the level total size devided by level target size. Could be useful when monitoring compaction decisions... Test Plan: make check; db_bench Reviewers: dhruba CC: leveldb, MarkCallaghan Differential Revision: https://reviews.facebook.net/D11025 | 04 June 2013, 00:38:27 UTC |
d897d33 | Haobo Xu | 31 May 2013, 23:30:17 UTC | [RocksDB] Introduce Fast Mutex option Summary: This diff adds an option to specify whether PTHREAD_MUTEX_ADAPTIVE_NP will be enabled for the rocksdb single big kernel lock. db_bench also have this option now. Quickly tested 8 thread cpu bound 100 byte random read. No fast mutex: ~750k/s ops With fast mutex: ~880k/s ops Test Plan: make check; db_bench; db_stress Reviewers: dhruba CC: MarkCallaghan, leveldb Differential Revision: https://reviews.facebook.net/D11031 | 02 June 2013, 06:11:34 UTC |
ab8d2f6 | Haobo Xu | 17 May 2013, 22:53:01 UTC | [RocksDB] [Performance] Allow different posix advice to be applied to the same table file Summary: Current posix advice implementation ties up the access pattern hint with the creation of a file. It is not possible to apply different advice for different access (random get vs compaction read), without keeping two open files for the same table. This patch extended the RandomeAccessFile interface to accept new access hint at anytime. Particularly, we are able to set different access hint on the same table file based on when/how the file is used. Two options are added to set the access hint, after the file is first opened and after the file is being compacted. Test Plan: make check; db_stress; db_bench Reviewers: dhruba Reviewed By: dhruba CC: MarkCallaghan, leveldb Differential Revision: https://reviews.facebook.net/D10905 | 31 May 2013, 02:08:44 UTC |
2df65c1 | Haobo Xu | 28 May 2013, 19:35:43 UTC | [RocksDB] Dump counters and histogram data periodically with compaction stats Summary: As title Test Plan: make check Reviewers: dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10995 | 29 May 2013, 19:00:18 UTC |
a8d807e | Dhruba Borthakur | 28 May 2013, 21:00:10 UTC | Record the number of open db iterators. Summary: Enhance the statitics to report the number of open db iterators. Test Plan: make check Reviewers: haobo, emayanke Reviewed By: emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D10983 | 29 May 2013, 15:47:08 UTC |
fb684da | Haobo Xu | 28 May 2013, 18:38:47 UTC | [RocksDB] Fix CorruptionTest Summary: Overriding block_size_deviation to zero, so that CorruptionTest can pass. Test Plan: make check Reviewers: dhruba Reviewed By: dhruba Differential Revision: https://reviews.facebook.net/D10977 | 28 May 2013, 19:36:42 UTC |
4c47d8f | heyongqiang | 15 May 2013, 17:34:02 UTC | add block deviation option to terminate a block before it exceeds block_size Summary: a new option block_size_deviation is added. Test Plan: run db_test and db_bench Reviewers: dhruba, haobo Reviewed By: haobo Differential Revision: https://reviews.facebook.net/D10821 | 24 May 2013, 23:21:52 UTC |
4b29651 | heyongqiang | 15 May 2013, 17:34:02 UTC | add block deviation option to terminate a block before it exceeds block_size Summary: a new option block_size_deviation is added. Test Plan: run db_test and db_bench Reviewers: dhruba, haobo Reviewed By: haobo Differential Revision: https://reviews.facebook.net/D10821 | 24 May 2013, 22:52:49 UTC |
ef15b9d | Haobo Xu | 24 May 2013, 19:52:45 UTC | [RocksDB] Fix MaybeDumpStats Summary: MaybeDumpStats was causing lock problem Test Plan: make check; db_stress Reviewers: dhruba Reviewed By: dhruba Differential Revision: https://reviews.facebook.net/D10935 | 24 May 2013, 22:43:16 UTC |
0e879c9 | Haobo Xu | 10 May 2013, 22:21:04 UTC | [RocksDB] dump leveldb.stats periodically in LOG file. Summary: Added an option stats_dump_period_sec to dump leveldb.stats to LOG periodically for diagnosis. By defauly, it's set to a very big number 3600 (1 hour). Test Plan: make check; Reviewers: dhruba Reviewed By: dhruba CC: leveldb, zshao Differential Revision: https://reviews.facebook.net/D10761 | 23 May 2013, 23:56:59 UTC |
2654186 | Dhruba Borthakur | 23 May 2013, 18:56:19 UTC | The max size of the write buffer size can be 64 GB. Summary: There was an artifical limit on the size of the write buffer size. Test Plan: make check Reviewers: haobo Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D10911 | 23 May 2013, 22:00:27 UTC |
898f793 | Dhruba Borthakur | 23 May 2013, 17:56:36 UTC | Fix valgrind errors introduced by https://reviews.facebook.net/D10863 Summary: The valgrind errors were in the unit tests where we change the number of levels of a database using internal methods. Test Plan: valgrind ./reduce_levels_test valgrind ./db_test Reviewers: emayanke Reviewed By: emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D10893 | 23 May 2013, 19:14:41 UTC |
c2e2460 | Haobo Xu | 23 May 2013, 18:34:58 UTC | [RocksDB] Expose DBStatistics Summary: Make Statistics usable by client Test Plan: make check; db_bench Reviewers: dhruba Reviewed By: dhruba Differential Revision: https://reviews.facebook.net/D10899 | 23 May 2013, 18:49:38 UTC |
760dd47 | Vamsi Ponnekanti | 05 April 2013, 06:49:43 UTC | [Kill randomly at various points in source code for testing] Summary: This is initial version. A few ways in which this could be extended in the future are: (a) Killing from more places in source code (b) Hashing stack and using that hash in determining whether to crash. This is to avoid crashing more often at source lines that are executed more often. (c) Raising exceptions or returning errors instead of killing Test Plan: This whole thing is for testing. Here is part of output: python2.7 tools/db_crashtest2.py -d 600 Running db_stress db_stress retncode -15 output LevelDB version : 1.5 Number of threads : 32 Ops per thread : 10000000 Read percentage : 50 Write-buffer-size : 4194304 Delete percentage : 30 Max key : 1000 Ratio #ops/#keys : 320000 Num times DB reopens: 0 Batches/snapshots : 1 Purge redundant % : 50 Num keys per lock : 4 Compression : snappy ------------------------------------------------ No lock creation because test_batches_snapshots set 2013/04/26-17:55:17 Starting database operations Created bg thread 0x7fc1f07ff700 ... finished 60000 ops Running db_stress db_stress retncode -15 output LevelDB version : 1.5 Number of threads : 32 Ops per thread : 10000000 Read percentage : 50 Write-buffer-size : 4194304 Delete percentage : 30 Max key : 1000 Ratio #ops/#keys : 320000 Num times DB reopens: 0 Batches/snapshots : 1 Purge redundant % : 50 Num keys per lock : 4 Compression : snappy ------------------------------------------------ Created bg thread 0x7ff0137ff700 No lock creation because test_batches_snapshots set 2013/04/26-17:56:15 Starting database operations ... finished 90000 ops Revert Plan: OK Task ID: #2252691 Reviewers: dhruba, emayanke Reviewed By: emayanke CC: leveldb, haobo Differential Revision: https://reviews.facebook.net/D10581 | 22 May 2013, 01:21:49 UTC |
87d0af1 | Haobo Xu | 21 May 2013, 18:53:33 UTC | [RocksDB] Introduce an option to skip log error on recovery Summary: Currently, with paranoid_check on, DB::Open will fail on any log read error on recovery. If client is ok with losing most recent updates, we could simply skip those errors. However, it's important to introduce an additional flag, so that paranoid_check can still guard against more serious problems. Test Plan: make check; db_stress Reviewers: dhruba, emayanke Reviewed By: emayanke CC: leveldb, emayanke Differential Revision: https://reviews.facebook.net/D10869 | 21 May 2013, 21:30:36 UTC |
d1aaaf7 | Dhruba Borthakur | 21 May 2013, 18:37:06 UTC | Ability to set different size fanout multipliers for every level. Summary: There is an existing field Options.max_bytes_for_level_multiplier that sets the multiplier for the size of each level in the database. This patch introduces the ability to set different multipliers for every level in the database. The size of a level is determined by using both max_bytes_for_level_multiplier as well as the per-level fanout. size of level[i] = size of level[i-1] * max_bytes_for_level_multiplier * fanout[i-1] The default value of fanout is 1, so that it is backward compatible. Test Plan: make check Reviewers: haobo, emayanke Reviewed By: emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D10863 | 21 May 2013, 20:50:20 UTC |
c3c13db | Haobo Xu | 21 May 2013, 04:28:09 UTC | [RocksDB] [Performance Bug] MemTable::Get Slow Summary: The merge operator diff introduced a performance problem in MemTable::Get. An exit condition is missed when the current key does not match the user key. This could lead to full memtable scan if the user key is not found. Test Plan: make check; db_bench Reviewers: dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10851 | 21 May 2013, 20:40:38 UTC |
3827403 | Mayank Agarwal | 21 May 2013, 18:27:23 UTC | Check to db_stress to not allow disable_wal and reopens set together Summary: db can't reopen safely with disable_wal set! Test Plan: make db_stress; run db_stress with disable_wal and reopens set and see error Reviewers: dhruba, vamsi Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10857 | 21 May 2013, 18:49:29 UTC |
839f6db | Haobo Xu | 25 March 2013, 17:56:48 UTC | [RocksDB] Fix PosixLogger and AutoRollLogger thread safety Summary: PosixLogger and AutoRollLogger do not seem to be thread safe. For PosixLogger, log_size_ is not atomically updated. For AutoRollLogger, the underlying logger_ might be deleted by one thread while still being accessed by another. Test Plan: make check Reviewers: kailiu, dhruba, heyongqiang Reviewed By: kailiu CC: leveldb, zshao, sheki Differential Revision: https://reviews.facebook.net/D9699 | 21 May 2013, 18:39:44 UTC |
15ccd10 | Mayank Agarwal | 20 May 2013, 21:45:22 UTC | A nit to db_stress to terminate generated value at proper length Summary: Will help while debugging if the generated value is truncated at proper length. Test Plan: make db_stress;/db_stress --max_key=10000 --db=/tmp/mcr --threads=1 --ops_per_thread=10000 Reviewers: dhruba, vamsi Reviewed By: vamsi Differential Revision: https://reviews.facebook.net/D10845 | 21 May 2013, 01:13:32 UTC |
8a59ed9 | Haobo Xu | 17 May 2013, 23:14:07 UTC | [RockdDB] fix build Summary: assert => ASSERT_TRUE Test Plan: make release; make check Reviewers: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10839 | 17 May 2013, 23:15:44 UTC |
e117430 | Abhishek Kona | 17 May 2013, 17:55:34 UTC | [RocksDB] Simplify StopWatch implementation Summary: Make stop watch a simple implementation, instead of subclass of a virtual class Allocate stop watches off the stack instead of heap. Code is more terse now. Test Plan: make all check, db_bench with --statistics=1 Reviewers: haobo, dhruba Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D10809 | 17 May 2013, 17:55:34 UTC |
446151c | Abhishek Kona | 16 May 2013, 17:40:30 UTC | [Rocksdb] Remove unused double apis to record into histograms Summary: Statistics.h and histogram.h had double based api's to record values. Remove them as they are not used anywhere Test Plan: make all check Reviewers: haobo, dhruba Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D10815 | 16 May 2013, 17:40:30 UTC |
8a48410 | Mayank Agarwal | 14 May 2013, 02:11:56 UTC | Enhance the ldb tool to support ttl databases Summary: ldb works with raw data from the database and needs to be aware of ttl-database to work with it meaningfully. '-ttl' option now tells it that. Also added onto the ldb_test.py test. This option may be specified alongwith put, get, scan or dump. There is no support to provide a ttl-value and it uses default forever because there is no use-case for this currently. Test Plan: make ldb_test; python tools/ldb_test.py Reviewers: dhruba, sheki, haobo, vamsi Reviewed By: sheki CC: leveldb Differential Revision: https://reviews.facebook.net/D10797 | 15 May 2013, 19:10:00 UTC |
8c9411c | Mayank Agarwal | 14 May 2013, 23:08:03 UTC | Modify build_detect_platform to run fbcode.*.* irrespective of $PATH Summary: This caused crash when the jenkins machine changed because the PATH variable is different. Test Plan: make Reviewers: dhruba, sheki Reviewed By: sheki CC: leveldb Differential Revision: https://reviews.facebook.net/D10803 | 15 May 2013, 05:09:01 UTC |
accd3de | Deon Nicholas | 10 May 2013, 17:40:10 UTC | Implemented StringAppendOperator and unit tests. Summary: Implemented the StringAppendOperator class (subclass of MergeOperator). Found in utilities/merge_operators/string_append/stringappend.{h,cc} It is a rocksdb Merge Operator that supports string/list concatenation with a configurable delimiter. The tests are found in .../stringappend_test.cc. It implements a map : key -> (list of strings), with core operations Append(list_key,val) and Get(list_key). Test Plan: 1. Navigate to your rocksdb repository 2. Execute: make stringappend_test (to compile) 3. Execute: ./stringappend_test (to run the tests) 4. Execute: make all check (to test the ENTIRE rocksdb codebase / regression) Reviewers: haobo, dhruba, zshao Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D10737 | 13 May 2013, 22:09:42 UTC |
4ca3c67 | Haobo Xu | 12 May 2013, 09:36:59 UTC | [RocksDB] Cleanup compaction filter to use a class interface, instead of function pointer and additional context pointer. Summary: This diff replaces compaction_filter_args and CompactionFilter with a single compaction_filter parameter. It gives CompactionFilter better encapsulation and a similar look to Comparator and MergeOpertor, which improves consistency of the overall interface. The change is not backward compatible. Nevertheless, the two references in fbcode are not in production yet. Test Plan: make check Reviewers: dhruba Reviewed By: dhruba CC: leveldb, zshao Differential Revision: https://reviews.facebook.net/D10773 | 13 May 2013, 21:06:10 UTC |
73c0a33 | Haobo Xu | 03 May 2013, 22:26:12 UTC | [RocksDB] fix compaction filter trigger condition Summary: Currently, compaction filter is run on internal key older than the oldest snapshot, which is incorrect. Compaction filter should really be run on the most recent internal key when there is no external snapshot. Test Plan: make check; db_stress Reviewers: dhruba Reviewed By: dhruba Differential Revision: https://reviews.facebook.net/D10641 | 13 May 2013, 19:33:02 UTC |
3102628 | Mayank Agarwal | 10 May 2013, 21:19:47 UTC | Bring read_only into ttl Summary: added an argument to openttldb for read only and open the db in normal readonly mode if the arguments is set to true Test Plan: make ttl_test; ./ttl_test Reviewers: dhruba, haobo, vamsi, sheki Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10749 | 10 May 2013, 23:13:26 UTC |
8d58ecd | Abhishek Kona | 10 May 2013, 21:41:45 UTC | [RocksDB] Expose compaction stalls via db_statistics Test Plan: make check Reviewers: dhruba, haobo Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10575 | 10 May 2013, 21:41:45 UTC |
d98e563 | Abhishek Kona | 10 May 2013, 20:19:39 UTC | [RocksDB] Make Ticker Atomic Summary: Our ticker was not atomic. This was based on the assumption that we will increment counts at places only protected by Mutex. This is hard to program for and easy to make mistakes (mutex may be held a few layers above etc). Also this increases the instructions executed when the mutex is held. Test Plan: make check Reviewers: haobo, dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10569 | 10 May 2013, 20:19:39 UTC |
85cccc5 | Mayank Agarwal | 10 May 2013, 01:11:37 UTC | Replacing rocksdb by leveldb in Makefile Summary: Since we are keeping 'leveldb' instead of 'rocksdb' in third-party, this is only logical. Test Plan: make clean;make Reviewers: sheki, dhruba, haobo Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10719 | 10 May 2013, 01:39:25 UTC |
c605e12 | Mayank Agarwal | 10 May 2013, 00:33:27 UTC | Adding Sanity checks in Get and Iterator->value for ttl Summary: The 2 checks added will increase reliabilty and help in debugging Test Plan: make ttl_test;./ttl_test Reviewers: vamsi, dhruba, sheki, haobo Reviewed By: vamsi Differential Revision: https://reviews.facebook.net/D10713 | 10 May 2013, 01:13:27 UTC |
ff1a080 | Mayank Agarwal | 09 May 2013, 22:52:02 UTC | Correct path of db.h in utility_db.h Summary: Will not be caught properly from file in fbcode with old path. New path fixes it. Test Plan: make Reviewers: sheki, dhruba, haobo, vamsi Reviewed By: sheki Differential Revision: https://reviews.facebook.net/D10707 | 10 May 2013, 00:32:39 UTC |
a8d3aa2 | Dhruba Borthakur | 08 May 2013, 17:19:24 UTC | Assertion failure for L0-L1 compactions. Summary: For level-0 compactions, we try to find if can include more L0 files in the same compaction run. This causes the 'smallest' and 'largest' key to get extended to a larger range. But the suceeding call to ParentRangeInCompaction() was still using the earlier values of 'smallest' and 'largest', Because of this bug, a file in L1 can be part of two concurrent compactions: one L0-L1 compaction and the other L1-L2 compaction. This should not cause any data loss, but will cause an assertion failure with debug builds. Test Plan: make check Differential Revision: https://reviews.facebook.net/D10677 | 09 May 2013, 00:10:11 UTC |
988c20b | Abhishek Kona | 06 May 2013, 18:41:01 UTC | [RocksDB] Clear Archive WAL files Summary: WAL files are moved to archive directory and clear only at DB::Open. Can lead to a lot of space consumption in a Database. Added logic to periodically clear Archive Directory too. Test Plan: make all check + add unit test Reviewers: dhruba, heyongqiang Reviewed By: heyongqiang CC: leveldb Differential Revision: https://reviews.facebook.net/D10617 | 06 May 2013, 18:41:01 UTC |
3c4efc4 | Haobo Xu | 06 May 2013, 17:35:41 UTC | [RocksDB] fix build Summary: makefile change: LIBRARY => LIBOBJECTS thanks Abhishek for reproducing this locally. Test Plan: make release Reviewers: sheki CC: leveldb Task ID: # Blame Rev: | 06 May 2013, 17:35:41 UTC |
05e8854 | Haobo Xu | 21 March 2013, 22:59:47 UTC | [Rocksdb] Support Merge operation in rocksdb Summary: This diff introduces a new Merge operation into rocksdb. The purpose of this review is mostly getting feedback from the team (everyone please) on the design. Please focus on the four files under include/leveldb/, as they spell the client visible interface change. include/leveldb/db.h include/leveldb/merge_operator.h include/leveldb/options.h include/leveldb/write_batch.h Please go over local/my_test.cc carefully, as it is a concerete use case. Please also review the impelmentation files to see if the straw man implementation makes sense. Note that, the diff does pass all make check and truly supports forward iterator over db and a version of Get that's based on iterator. Future work: - Integration with compaction - A raw Get implementation I am working on a wiki that explains the design and implementation choices, but coding comes just naturally and I think it might be a good idea to share the code earlier. The code is heavily commented. Test Plan: run all local tests Reviewers: dhruba, heyongqiang Reviewed By: dhruba CC: leveldb, zshao, sheki, emayanke, MarkCallaghan Differential Revision: https://reviews.facebook.net/D9651 | 03 May 2013, 23:59:02 UTC |
37e97b1 | Mayank Agarwal | 03 May 2013, 21:25:12 UTC | Fix invalid-read to freed memory in ttl-iterator Summary: value function in ttl-iterator was returning string which would have been freed before its usage as a slice. Thanks valgrind! Test Plan: valgrind ./ttl_test Reviewers: dhruba, haobo, sheki, vamsi Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D10635 | 03 May 2013, 22:09:16 UTC |
d786b25 | Mayank Agarwal | 15 April 2013, 20:33:13 UTC | Timestamp and TTL Wrapper for rocksdb Summary: When opened with DBTimestamp::Open call, timestamps are prepended to and stripped from the value during subsequent Put and Get calls respectively. The Timestamp is used to discard values in Get and custom compaction filter which have exceeded their TTL which is specified during Open. Have made a temporary change to Makefile to let us test with the temporary file TestTime.cc. Have also changed the private members of db_impl.h to protected to let them be inherited by the new class DBTimestamp Test Plan: make db_timestamp; TestTime.cc(will not check it in) shows how to use the apis currently, but I will write unit-tests shortly Reviewers: dhruba, vamsi, haobo, sheki, heyongqiang, vkrest Reviewed By: vamsi CC: zshao, xjin, vkrest, MarkCallaghan Differential Revision: https://reviews.facebook.net/D10311 | 02 May 2013, 23:34:42 UTC |
41cb922 | Abhishek Kona | 29 April 2013, 20:19:24 UTC | Allocate the LogReporter from heap. Summary: Summary: The current code has a bug that take address of stack allocated LogReporter. It is causing SIGSEGV because the stack address is no longer valid when referenced. Test Plan: Tested on prod. Reviewers: haobo, dhruba, heyongqiang Reviewed By: heyongqiang Differential Revision: https://reviews.facebook.net/D10557 | 29 April 2013, 20:19:24 UTC |
49fbd55 | Haobo Xu | 23 April 2013, 06:47:56 UTC | [RocksDB] Refactor table.cc to reduce code duplication and improve readability. Summary: In table.cc, the code section that reads in BlockContent and then put it into a Block, appears at least 4 times. This is too much duplication. BlockReader is much shorter after the change and reads way better. D10077 attempted that for index block read. This is a complete cleanup. Test Plan: make check; ./db_stress Reviewers: dhruba, sheki Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10527 | 29 April 2013, 16:43:36 UTC |
fb96ec1 | Abhishek Kona | 25 April 2013, 20:36:47 UTC | [RocksDB] Print all internally collected histograms in db_bench. Also print p95 Summary: $title Test Plan: make db_bench . run db_bench and check for expected output Reviewers: haobo, dhruba Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D10521 | 25 April 2013, 20:36:47 UTC |
ae558b5 | Mayank Agarwal | 23 April 2013, 21:16:56 UTC | make clean in valgrind_test.sh first Summary: some changes require make clean to be done before make. auto_roll_Logger_test was failing on valgrind possibly due to this. Test Plan: valgrind ./auto_roll_logger_test Reviewers: sheki Reviewed By: sheki Differential Revision: https://reviews.facebook.net/D10509 | 23 April 2013, 21:25:19 UTC |
06d3487 | Haobo Xu | 22 April 2013, 17:14:54 UTC | [RocksDB] Print stack trace to stderr instead of stdio. Summary: Some scripts (like regression_build_test.sh) redirect stdio to a tmp file and delete it on exit. This would miss the stack trace output on segfault. Output to stderr would hopefully show us the stack trace in the continuous build output. Test Plan: ./signal_test, make check Reviewers: dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10485 | 23 April 2013, 03:38:02 UTC |
958b9c8 | Kai Liu | 23 April 2013, 01:10:28 UTC | Avoid global static initialization in Env::Default() Summary: Mark's task description from #2316777 Env::Default() comes from util/env_posix.cc This is a static global. static PosixEnv default_env; Env* Env::Default() { return &default_env; } ----- These globals assume default_env was initialized first. I don't think that is safe or correct to do (http://stackoverflow.com/questions/1005685/c-static-initialization-order) const string AutoRollLoggerTest::kTestDir( test::TmpDir() + "/db_log_test"); const string AutoRollLoggerTest::kLogFile( test::TmpDir() + "/db_log_test/LOG"); Env* AutoRollLoggerTest::env = Env::Default(); Test Plan: run make clean && make && make check But how can I know if it works in Ubuntu? Reviewers: MarkCallaghan, chip Reviewed By: chip CC: leveldb, dhruba, haobo Differential Revision: https://reviews.facebook.net/D10491 | 23 April 2013, 01:10:28 UTC |
eb6d139 | Haobo Xu | 22 April 2013, 22:20:20 UTC | [RocksDB] Move table.h to table/ Summary: - don't see a point exposing table.h to the public. - fixed make clean to remove also *.d files. Test Plan: make check; db_stress Reviewers: dhruba, heyongqiang Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10479 | 22 April 2013, 23:07:56 UTC |
344e832 | Abhishek Kona | 22 April 2013, 17:41:59 UTC | [RocksDB] Fix ReadMissing in db_bench Summary: D8943 Broke read_missing. Fix it by adding a "." at the end of the generated key Test Plan: generate, print and check the key has a "." Reviewers: dhruba, haobo Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10455 | 22 April 2013, 22:44:19 UTC |
3cb7bf8 | Dhruba Borthakur | 22 April 2013, 17:41:41 UTC | Initialize parameters in the constructor. Summary: RocksDB doesn't build on Ubuntu VM .. shoudl be fixed with this patch. g++ --version g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 util/env_posix.cc:68:24: sorry, unimplemented: non-static data member initializers util/env_posix.cc:68:24: error: ISO C++ forbids in-class initialization of non-const static member ‘use_os_buffer’ util/env_posix.cc:113:24: sorry, unimplemented: non-static data member initializers util/env_posix.cc:113:24: error: ISO C++ forbids in-class initialization of non-const static member ‘use_os_buffer Test Plan: make check Reviewers: sheki, leveldb Reviewed By: sheki Differential Revision: https://reviews.facebook.net/D10461 | 22 April 2013, 21:41:45 UTC |
b4243e5 | Haobo Xu | 18 April 2013, 04:30:21 UTC | [RocksDB] CompactionFilter cleanup Summary: - removed the compaction_filter_value from the callback interface. Restrict compaction filter to purging values. - modify some comments to reflect curent status. Test Plan: make check Reviewers: dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10335 | 20 April 2013, 17:26:51 UTC |
b1ff9ac | Mark Callaghan | 17 April 2013, 17:56:39 UTC | Add --writes_per_second rate limit, print p99.99 in histogram Summary: Adds the --writes_per_second rate limit for the readwhilewriting test. The purpose is to optionally avoid saturating storage with writes & compaction and test read response time when some writes are being done. Changes the histogram code to also print the p99.99 value Task ID: # Blame Rev: Test Plan: make check, ran db_bench with it Revert Plan: Database Impact: Memcache Impact: Other Notes: EImportant: - begin *PUBLIC* platform impact section - Bugzilla: # - end platform impact - Reviewers: haobo Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D10305 | 20 April 2013, 17:26:51 UTC |
e0b6092 | Haobo Xu | 16 April 2013, 21:20:05 UTC | [RocksDB] fix build Summary: forgot to include signal_test.cc Test Plan: make check Reviewers: sheki Reviewed By: sheki CC: leveldb Differential Revision: https://reviews.facebook.net/D10281 | 20 April 2013, 17:26:51 UTC |
1255dcd | Haobo Xu | 11 April 2013, 17:54:35 UTC | [RocksDB] Add stacktrace signal handler Summary: This diff provides the ability to print out a stacktrace when the process receives certain signals. Currently, we enable this for the following signals (program error related): SIGILL SIGSEGV SIGBUS SIGABRT Application simply #include "util/stack_trace.h" and call leveldb::InstallStackTraceHandler() during initialization, if signal handler is needed. It's not done automatically when openning db, because it's the application(process)'s responsibility to install signal handler and some applications might already have their own (like fbcode). Sample output: Received signal 11 (Segmentation fault) #0 0x408ff0 ./signal_test() [0x408ff0] /home/haobo/rocksdb/util/signal_test.cc:4 #1 0x40827d ./signal_test() [0x40827d] /home/haobo/rocksdb/util/signal_test.cc:24 #2 0x7f8bb183172e /usr/local/fbcode/gcc-4.7.1-glibc-2.14.1/lib/libc.so.6(__libc_start_main+0x10e) [0x7f8bb183172e] ??:0 #3 0x408ebc ./signal_test() [0x408ebc] /home/engshare/third-party/src/glibc/glibc-2.14.1/glibc-2.14.1/csu/../sysdeps/x86_64/elf/start.S:113 Segmentation fault (core dumped) For each frame, we print the raw pointer, the symbol provided by backtrace_symbols (still not good enough), and the source file/line. Note that address translation is done by directly shell out to addr2line. ??:0 means addr2line fails to do the translation. Hacky, but I think it's good for now. Test Plan: signal_test.cc Reviewers: dhruba, MarkCallaghan Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10173 | 20 April 2013, 17:26:50 UTC |
a29fc17 | Haobo Xu | 16 April 2013, 00:30:43 UTC | [RocksDB] posix_logger does not compile on non-linux platform Summary: As title. Found out this when testing stack_trace.cc portability. Test Plan: make check; manual test 'non-linux' build by forcing OS_LINUX2 Reviewers: dhruba, heyongqiang Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10263 | 16 April 2013, 02:18:51 UTC |
7c6c3c0 | Abhishek Kona | 15 April 2013, 22:27:15 UTC | [Rockdsdb] Better Error messages. Closing db instead of deleting db Summary: A better error message. A local change. Did not look at other places where this could be done. Test Plan: compile Reviewers: dhruba, MarkCallaghan Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10251 | 15 April 2013, 22:27:15 UTC |
9b81d3c | Dhruba Borthakur | 15 April 2013, 20:25:53 UTC | Simplified level_ptrs by using a std:vector Summary: Simplified level_ptrs by using a std:vector Test Plan: make check Reviewers: sheki, emayanke Reviewed By: emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D10245 | 15 April 2013, 20:52:51 UTC |
013e9eb | Haobo Xu | 11 April 2013, 23:49:53 UTC | [RocksDB] [Performance] Speed up FindObsoleteFiles Summary: FindObsoleteFiles was slow, holding the single big lock, resulted in bad p99 behavior. Didn't profile anything, but several things could be improved: 1. VersionSet::AddLiveFiles works with std::set, which is by itself slow (a tree). You also don't know how many dynamic allocations occur just for building up this tree. switched to std::vector, also added logic to pre-calculate total size and do just one allocation 2. Don't see why env_->GetChildren() needs to be mutex proteced, moved to PurgeObsoleteFiles where mutex could be unlocked. 3. switched std::set to std:unordered_set, the conversion from vector is also inside PurgeObsoleteFiles I have a feeling this should pretty much fix it. Test Plan: make check; db_stress Reviewers: dhruba, heyongqiang, MarkCallaghan Reviewed By: dhruba CC: leveldb, zshao Differential Revision: https://reviews.facebook.net/D10197 | 12 April 2013, 18:29:27 UTC |
dae7379 | Abhishek Kona | 12 April 2013, 03:21:49 UTC | [RocksDB] Expose LDB functioanality as a library call - clients can build their own LDB binary with additional options Summary: Primarily a refactor. Introduced LDBTool interface to which customers can plug in their options and this will create their own version of ldb tool. Test Plan: made ldb tool and tried it. Reviewers: dhruba, heyongqiang Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10191 | 12 April 2013, 03:21:49 UTC |
94d86b2 | Mayank Agarwal | 09 April 2013, 20:21:11 UTC | Fix memory leak for probableWALfiles in db_impl.cc Summary: using unique_ptr to have automatic delete for probableWALfiles in db_impl.cc Test Plan: make Reviewers: sheki, dhruba Reviewed By: sheki CC: leveldb Differential Revision: https://reviews.facebook.net/D10083 | 11 April 2013, 23:57:15 UTC |
db8b404 | Mayank Agarwal | 11 April 2013, 21:34:01 UTC | Fix off by one error in valgrind_test.sh Test Plan: make valgrind_check Reviewers: sheki Reviewed By: sheki Differential Revision: https://reviews.facebook.net/D10185 | 11 April 2013, 22:48:35 UTC |
6936f9b | Mayank Agarwal | 11 April 2013, 00:22:21 UTC | Release 1.5.9.fb to third party Summary: new release 1.5.9.fb Test Plan: release Reviewers: heyongqiang Reviewed By: heyongqiang Differential Revision: https://reviews.facebook.net/D10149 | 11 April 2013, 00:23:58 UTC |
6594fef | Mayank Agarwal | 19 March 2013, 21:39:28 UTC | Exit and Join the background compaction threads while running rocksdb tests Summary: The background compaction threads are never exitted and therefore caused memory-leaks while running rpcksdb tests. Have changed the PosixEnv destructor to exit and join them and changed the tests likewise The memory leaked has reduced from 320 bytes to 64 bytes in all the tests. The 64 bytes is relating to pthread_exit, but still have to figure out why. The stack-trace right now with table_test.cc = 64 bytes in 1 blocks are possibly lost in loss record 4 of 5 at 0x475D8C: malloc (jemalloc.c:914) by 0x400D69E: _dl_map_object_deps (dl-deps.c:505) by 0x4013393: dl_open_worker (dl-open.c:263) by 0x400F015: _dl_catch_error (dl-error.c:178) by 0x4013B2B: _dl_open (dl-open.c:569) by 0x5D3E913: do_dlopen (dl-libc.c:86) by 0x400F015: _dl_catch_error (dl-error.c:178) by 0x5D3E9D6: __libc_dlopen_mode (dl-libc.c:47) by 0x5048BF3: pthread_cancel_init (unwind-forcedunwind.c:53) by 0x5048DC9: _Unwind_ForcedUnwind (unwind-forcedunwind.c:126) by 0x5046D9F: __pthread_unwind (unwind.c:130) by 0x50413A4: pthread_exit (pthreadP.h:289) Test Plan: make all check Reviewers: dhruba, sheki, haobo Reviewed By: dhruba CC: leveldb, chip Differential Revision: https://reviews.facebook.net/D9573 | 10 April 2013, 21:50:25 UTC |
e21ba94 | heyongqiang | 10 April 2013, 02:42:07 UTC | Set FD_CLOEXEC after each file open Summary: as subject. This is causing problem in adsconv. Ideally, this flags should be set in open. But that is only supported in Linux kernel ≥2.6.23 and glibc ≥2.7. Test Plan: db_test run db_test Reviewers: dhruba, MarkCallaghan, haobo Reviewed By: dhruba CC: leveldb, chip Differential Revision: https://reviews.facebook.net/D10089 | 10 April 2013, 21:44:06 UTC |
f51b375 | Mayank Agarwal | 10 April 2013, 19:15:30 UTC | Printing the options that db_crashtest.py is run with Summary: To know which options the crashtest was run with. Also changed print to sys.stdout.write which is more standard. Test Plan: python tools/db_crashtest.py Reviewers: vamsi, akushner, dhruba Reviewed By: akushner Differential Revision: https://reviews.facebook.net/D10119 | 10 April 2013, 21:03:10 UTC |
7730587 | Dhruba Borthakur | 10 April 2013, 15:37:03 UTC | Prevent segfault in OpenCompactionOutputFile Summary: The segfault was happening because the program was unable to open a new sst file (as part of the compaction) because the process ran out of file descriptors. The fix is to check the return status of the file creation before taking any other action. Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fabf03f9700 (LWP 29904)] leveldb::DBImpl::OpenCompactionOutputFile (this=this@entry=0x7fabf9011400, compact=compact@entry=0x7fabf741a2b0) at db/db_impl.cc:1399 1399 db/db_impl.cc: No such file or directory. (gdb) where Test Plan: make check Reviewers: MarkCallaghan, sheki Reviewed By: MarkCallaghan CC: leveldb Differential Revision: https://reviews.facebook.net/D10101 | 10 April 2013, 16:59:48 UTC |
adb4e45 | Mayank Agarwal | 09 April 2013, 02:10:24 UTC | Fixing delete in env_posix.cc Summary: Was deleting incorrectly. Should delete the whole array. Test Plan: make;valgrind stops complaining about Mismatched free/delete Reviewers: dhruba, sheki Reviewed By: sheki CC: leveldb, haobo Differential Revision: https://reviews.facebook.net/D10059 | 09 April 2013, 18:49:35 UTC |
faa32a7 | Mayank Agarwal | 05 April 2013, 20:44:59 UTC | Invoke crash test from the Makefile Summary: make crash_test will now invoke the crash_test. Also some cleanup in the db_crashtest.py file Test Plan: make crash_test Reviewers: akushner, vamsi, sheki, dhruba Reviewed By: vamsi Differential Revision: https://reviews.facebook.net/D9987 | 09 April 2013, 01:11:11 UTC |
574b76f | Abhishek Kona | 08 April 2013, 23:28:09 UTC | [RocksDB][Bug] Look at all the files, not just the first file in TransactionLogIter as BatchWrites can leave it in Limbo Summary: Transaction Log Iterator did not move to the next file in the series if there was a write batch at the end of the currentFile. The solution is if the last seq no. of the current file is < RequestedSeqNo. Assume the first seqNo. of the next file has to satisfy the request. Also major refactoring around the code. Moved opening the logreader to a seperate function, got rid of goto. Test Plan: added a unit test for it. Reviewers: dhruba, heyongqiang Reviewed By: heyongqiang CC: leveldb, emayanke Differential Revision: https://reviews.facebook.net/D10029 | 08 April 2013, 23:28:09 UTC |
9b3134f | Mayank Agarwal | 08 April 2013, 19:35:40 UTC | Make provision for db_stress to work with a pre-existing dir Summary: The crash_test depends on db_stress to work with pre-existing dir Test Plan: make db_stress; Run db_stress with 'destroy_db_initially=0' Reviewers: vamsi, dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10041 | 08 April 2013, 20:12:27 UTC |
26f68d3 | Mayank Agarwal | 08 April 2013, 18:50:44 UTC | db_stress #reopens should be less than ops_per_thread Summary: For sanity w.r.t. the way we split up the reopens equally among the ops/thread Test Plan: make db_stress; db_stress --ops_per_thread=10 --reopens=10 => error Reviewers: vamsi, dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D10023 | 08 April 2013, 19:09:17 UTC |
6203e4c | Mayank Agarwal | 21 March 2013, 19:01:45 UTC | Renaming the built leveldb.a library to rocksdb Summary: Renames in the Makefile. It will be used like this in third-party. Test Plan: make Reviewers: dhruba, sheki, heyongqiang, haobo Reviewed By: heyongqiang CC: leveldb Differential Revision: https://reviews.facebook.net/D9633 | 05 April 2013, 21:10:03 UTC |
0e40185 | Abhishek Kona | 05 April 2013, 18:26:46 UTC | [Rocksdb] Remove useless struct TableAndFile Summary: TableAndFile was a struct used earlier to delete the file as we did not have std::unique_ptr in the codebase. With Chip introducing C++11 hotness like std::unique_ptr we can do away with the struct. Test Plan: make all check Reviewers: haobo, heyongqiang Reviewed By: heyongqiang CC: dhruba, leveldb Differential Revision: https://reviews.facebook.net/D9975 | 05 April 2013, 18:26:46 UTC |
a77bc3d | Haobo Xu | 04 April 2013, 01:53:42 UTC | [RocksDB] Fix LRUCache Eviction problem Summary: 1. The stock LRUCache nukes itself whenever the working set (the total number of entries not released by client at a certain time) is bigger than the cache capacity. See https://our.dev.facebook.com/intern/tasks/?t=2252281 2. There's a bug in shard calculation leading to segmentation fault when only one shard is needed. Test Plan: make check Reviewers: dhruba, heyongqiang Reviewed By: heyongqiang CC: leveldb, zshao, sheki Differential Revision: https://reviews.facebook.net/D9927 | 04 April 2013, 18:22:50 UTC |
2b9a360 | Vamsi Ponnekanti | 03 April 2013, 10:40:39 UTC | [Getting warning while running db_crashtest] Summary: When I run db_crashtest, I am seeing lot of warnings that say db_stress completed before it was killed. To fix that I made ops per thread a very large value so that it keeps running until it is killed. I also set #reopens to 0. Since we are killing the process anyway, the 'simulated crash' that happens during reopen may not add additional value. I usually see 10-25K ops happening before the kill. So I increased max_key from 100 to 1000 so that we use more distinct keys. Test Plan: Ran a few times. Revert Plan: OK Task ID: # Reviewers: emayanke Reviewed By: emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D9909 | 04 April 2013, 07:17:05 UTC |
d0c46a6 | Mayank Agarwal | 03 April 2013, 18:50:49 UTC | Release 1.5.8.2.fb Test Plan: make all check Reviewers: sheki Reviewed By: sheki Differential Revision: https://reviews.facebook.net/D9915 | 03 April 2013, 18:53:35 UTC |
ca789a1 | Abhishek Kona | 03 April 2013, 00:18:27 UTC | [Rocksdb] Recover last updated sequence number from manifest also. Summary: During recovery, last_updated_manifest number was not set if there were no records in the Write-ahead log. Now check for the recovered manifest also and set last_updated_manifest file to the max value. Test Plan: unit test Reviewers: heyongqiang Reviewed By: heyongqiang CC: leveldb Differential Revision: https://reviews.facebook.net/D9891 | 03 April 2013, 00:18:27 UTC |
6763110 | Haobo Xu | 29 March 2013, 01:01:06 UTC | [RocksDB] Replace iterator based loop with range based loop for stl containers Summary: As title. Code is shorter and cleaner See https://our.dev.facebook.com/intern/tasks/?t=2233981 Test Plan: make check Reviewers: dhruba, heyongqiang Reviewed By: dhruba CC: leveldb, zshao Differential Revision: https://reviews.facebook.net/D9789 | 02 April 2013, 18:46:45 UTC |
d815082 | Haobo Xu | 29 March 2013, 19:59:15 UTC | [RocksDB] env_posix cleanup Summary: 1. SetBackgroundThreads was not thread safe 2. queue_size_ does not seem necessary 3. moved condition signal after shared state change. Even though the original order is in practice ok (because the mutex is still held), it looks fishy and non-intuitive. Test Plan: make check Reviewers: dhruba Reviewed By: dhruba CC: leveldb, zshao Differential Revision: https://reviews.facebook.net/D9825 | 02 April 2013, 18:36:51 UTC |
e937d47 | Mayank Agarwal | 13 March 2013, 06:20:14 UTC | Python script to periodically run and kill the db_stress test Summary: The script runs and kills the stress test periodically. Default values have been used in the script now. Should I make this a part of the Makefile or automated rocksdb build? The values can be easily changed in the script right now, but should I add some support for variable values or input to the script? I believe the script achieves its objective of unsafe crashes and reopening to expect sanity in the database. Test Plan: python tools/db_crashtest.py Reviewers: dhruba, vamsi, MarkCallaghan Reviewed By: vamsi CC: leveldb Differential Revision: https://reviews.facebook.net/D9369 | 01 April 2013, 19:18:46 UTC |
645ff8f | Haobo Xu | 28 March 2013, 22:19:28 UTC | Let's get rid of delete as much as possible, here are some examples. Summary: If a class owns an object: - If the object can be null => use a unique_ptr. no delete - If the object can not be null => don't even need new, let alone delete - for runtime sized array => use vector, no delete. Test Plan: make check Reviewers: dhruba, heyongqiang Reviewed By: heyongqiang CC: leveldb, zshao, sheki, emayanke, MarkCallaghan Differential Revision: https://reviews.facebook.net/D9783 | 29 March 2013, 00:31:44 UTC |
3b51605 | Abhishek Kona | 28 March 2013, 20:37:15 UTC | [RocksDB] Fix binary search while finding probable wal files Summary: RocksDB does a binary search to look at the files which might contain the requested sequence number at the call GetUpdatesSince. There was a bug in the binary search => when the file pointed by the middle index of bsearch was empty/corrupt it needst to resize the vector and update indexes. This now fixes that. Test Plan: existing unit tests pass. Reviewers: heyongqiang, dhruba Reviewed By: heyongqiang CC: leveldb Differential Revision: https://reviews.facebook.net/D9777 | 28 March 2013, 20:37:15 UTC |
8e9c781 | Abhishek Kona | 28 March 2013, 20:19:07 UTC | [Rocksdb] Fix Crash on finding a db with no log files. Error out instead Summary: If the vector returned by GetUpdatesSince is empty, it is still returned to the user. This causes it throw an std::range error. The probable file list is checked and it returns an IOError status instead of OK now. Test Plan: added a unit test. Reviewers: dhruba, heyongqiang Reviewed By: heyongqiang CC: leveldb Differential Revision: https://reviews.facebook.net/D9771 | 28 March 2013, 20:19:07 UTC |
7fdd5f5 | Abhishek Kona | 28 March 2013, 20:13:35 UTC | Use non-mmapd files for Write-Ahead Files Summary: Use non mmapd files for Write-Ahead log. Earlier use of MMaped files. made the log iterator read ahead and miss records. Now the reader and writer will point to the same physical location. There is no perf regression : ./db_bench --benchmarks=fillseq --db=/dev/shm/mmap_test --num=$(million 20) --use_existing_db=0 --threads=2 with This diff : fillseq : 10.756 micros/op 185281 ops/sec; 20.5 MB/s without this dif : fillseq : 11.085 micros/op 179676 ops/sec; 19.9 MB/s Test Plan: unit test included Reviewers: dhruba, heyongqiang Reviewed By: heyongqiang CC: leveldb Differential Revision: https://reviews.facebook.net/D9741 | 28 March 2013, 20:13:35 UTC |
63f216e | Abhishek Kona | 27 March 2013, 18:27:39 UTC | memory manage statistics Summary: Earlier Statistics object was a raw pointer. This meant the user had to clear up the Statistics object after creating the database. In most use cases the database is created in a function and the statistics pointer is out of scope. Hence the statistics object would never be deleted. Now Using a shared_ptr to manage this. Want this in before the next release. Test Plan: make all check. Reviewers: dhruba, emayanke Reviewed By: emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D9735 | 27 March 2013, 18:27:39 UTC |
ecd8db0 | Haobo Xu | 26 March 2013, 01:01:47 UTC | [RocksDB] Minimize Mutex protected code section in the critical path Summary: rocksdb uses a single global lock to protect in memory metadata. We should minimize the mutex protected code section to increase the effective parallelism of the program. See https://our.intern.facebook.com/intern/tasks/?t=2218928 Test Plan: make check db_bench Reviewers: dhruba, heyongqiang CC: zshao, leveldb Differential Revision: https://reviews.facebook.net/D9705 | 27 March 2013, 05:42:26 UTC |
a8bf8fe | Simon Marlow | 22 March 2013, 16:17:30 UTC | Integrate the manifest_dump command with ldb Summary: Syntax: manifest_dump [--verbose] --num=<manifest_num> e.g. $ ./ldb --db=/home/smarlow/tmp/testdb manifest_dump --num=12 manifest_file_number 13 next_file_number 14 last_sequence 3 log_number 11 prev_log_number 0 --- level 0 --- version# 0 --- 6:116['a1' @ 1 : 1 .. 'a1' @ 1 : 1] 10:130['a3' @ 2 : 1 .. 'a4' @ 3 : 1] --- level 1 --- version# 0 --- --- level 2 --- version# 0 --- --- level 3 --- version# 0 --- --- level 4 --- version# 0 --- --- level 5 --- version# 0 --- --- level 6 --- version# 0 --- Test Plan: - Tested on an example DB (see output in summary) Reviewers: sheki, dhruba Reviewed By: sheki CC: leveldb, heyongqiang Differential Revision: https://reviews.facebook.net/D9609 | 22 March 2013, 16:17:30 UTC |
9b70529 | Abhishek Kona | 21 March 2013, 22:49:20 UTC | Disable Unit Test for TransactionLogIteratorStall Summary: The unit test fails as our solution does not work with MMap'd files. Disable the failing unit test. Put it back with the next diff which should fix the problem. Test Plan: db_test Reviewers: heyongqiang CC: dhruba Differential Revision: https://reviews.facebook.net/D9645 | 21 March 2013, 22:51:18 UTC |