rocksdb/db
Igor Canadi 3d9e6f7759 Push model for flushing memtables
Summary:
When memtable is full it calls the registered callback. That callback then registers column family as needing the flush. Every write checks if there are some column families that need to be flushed. This completely eliminates the need for MakeRoomForWrite() function and simplifies our Write code-path.

There is some complexity with the concurrency when the column family is dropped. I made it a bit less complex by dropping the column family from the write thread in https://reviews.facebook.net/D22965. Let me know if you want to discuss this.

Test Plan: make check works. I'll also run db_stress with creating and dropping column families for a while.

Reviewers: yhchiang, sdong, ljin

Reviewed By: ljin

Subscribers: leveldb

Differential Revision: https://reviews.facebook.net/D23067
2014-09-10 18:46:09 -07:00
..
builder.cc introduce ImmutableOptions 2014-09-04 16:18:36 -07:00
builder.h introduce ImmutableOptions 2014-09-04 16:18:36 -07:00
c_test.c fix valgrind error in c_test caused by BlockBasedTableOptions 2014-08-26 09:57:25 -07:00
c.cc Implement full filter for block based table. 2014-09-08 10:37:05 -07:00
column_family_test.cc Ignore missing column families 2014-09-02 13:29:05 -07:00
column_family.cc Push model for flushing memtables 2014-09-10 18:46:09 -07:00
column_family.h Push model for flushing memtables 2014-09-10 18:46:09 -07:00
compaction_picker.cc Fix comments and typos 2014-09-09 15:20:49 -07:00
compaction_picker.h Changes to support unity build: 2014-08-11 13:22:47 -04:00
compaction.cc reduce references to cfd->options() in DBImpl 2014-09-08 15:04:34 -07:00
compaction.h Changes to support unity build: 2014-08-11 13:22:47 -04:00
corruption_test.cc move block based table related options BlockBasedTableOptions 2014-08-25 14:22:05 -07:00
cuckoo_table_db_test.cc Fix compaction bug in Cuckoo Table Builder. Use kvs_.size() instead of num_entries in FileSize() method. 2014-09-05 11:18:01 -07:00
db_bench.cc Implement full filter for block based table. 2014-09-08 10:37:05 -07:00
db_filesnapshot.cc rename options_ to db_options_ in DBImpl to avoid confusion 2014-09-05 11:48:17 -07:00
db_impl_debug.cc Fix valgrind issue 2014-09-08 08:01:25 -07:00
db_impl_readonly.cc Always pass MergeContext as pointer, not reference 2014-09-09 11:37:32 -07:00
db_impl_readonly.h Fix ios compile 2014-08-28 12:46:05 -04:00
db_impl.cc Push model for flushing memtables 2014-09-10 18:46:09 -07:00
db_impl.h Push model for flushing memtables 2014-09-10 18:46:09 -07:00
db_iter_test.cc reduce references to cfd->options() in DBImpl 2014-09-08 15:04:34 -07:00
db_iter.cc reduce references to cfd->options() in DBImpl 2014-09-08 15:04:34 -07:00
db_iter.h reduce references to cfd->options() in DBImpl 2014-09-08 15:04:34 -07:00
db_test.cc Push model for flushing memtables 2014-09-10 18:46:09 -07:00
dbformat_test.cc Use IterKey instead of string in Block::Iter to reduce malloc 2014-07-23 12:31:11 -07:00
dbformat.cc remove_internal_filter_policy 2014-08-28 17:06:29 -07:00
dbformat.h fix a few compile warnings 2014-09-04 23:06:23 +08:00
deletefile_test.cc Start DeleteFileTest with clean plate 2013-11-15 16:30:23 -08:00
file_indexer_test.cc Allow user to specify DB path of output file of manual compaction 2014-07-21 19:06:00 -07:00
file_indexer.cc Allow user to specify DB path of output file of manual compaction 2014-07-21 19:06:00 -07:00
file_indexer.h Allow user to specify DB path of output file of manual compaction 2014-07-21 19:06:00 -07:00
filename_test.cc Support purging logs from separate log directory 2014-08-14 13:22:50 -07:00
filename.cc fix more compile warnings 2014-09-05 14:14:37 +08:00
filename.h Support purging logs from separate log directory 2014-08-14 13:22:50 -07:00
flush_scheduler.cc Push model for flushing memtables 2014-09-10 18:46:09 -07:00
flush_scheduler.h Push model for flushing memtables 2014-09-10 18:46:09 -07:00
forward_iterator.cc Remove path with arena==nullptr from NewInternalIterator 2014-09-04 17:40:41 -07:00
forward_iterator.h Remove path with arena==nullptr from NewInternalIterator 2014-09-04 17:40:41 -07:00
internal_stats.cc fix more compile warnings 2014-09-05 14:14:37 +08:00
internal_stats.h Add is-file-deletions-enabled property 2014-08-26 16:26:29 -07:00
log_and_apply_bench.cc Push model for flushing memtables 2014-09-10 18:46:09 -07:00
log_format.h Some minor refactoring on the code 2014-01-02 16:32:31 -08:00
log_reader.cc Make Log::Reader more robust 2014-02-28 13:19:47 -08:00
log_reader.h Fix UnmarkEOF for partial blocks 2014-01-27 14:49:10 -08:00
log_test.cc Make it compile on Debian/GCC 4.7 2014-03-14 22:44:35 +00:00
log_writer.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_writer.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
memtable_list.cc Always pass MergeContext as pointer, not reference 2014-09-09 11:37:32 -07:00
memtable_list.h Always pass MergeContext as pointer, not reference 2014-09-09 11:37:32 -07:00
memtable.cc Push model for flushing memtables 2014-09-10 18:46:09 -07:00
memtable.h Push model for flushing memtables 2014-09-10 18:46:09 -07:00
merge_context.h Enhance partial merge to support multiple arguments 2014-03-24 17:57:13 -07:00
merge_helper.cc Fixed the crash when merge_operator is not properly set after reopen. 2014-07-30 17:24:36 -07:00
merge_helper.h Fixed the crash when merge_operator is not properly set after reopen. 2014-07-30 17:24:36 -07:00
merge_operator.cc Some small cleaning up to make some compiling environment happy 2014-03-26 18:11:41 -07:00
merge_test.cc Temporary remove the last test in merge_test 2014-07-31 11:20:49 -07:00
perf_context_test.cc Missing includes 2014-03-14 13:02:20 -07:00
plain_table_db_test.cc introduce ImmutableOptions 2014-09-04 16:18:36 -07:00
prefix_test.cc HashLinkList memtable switches a bucket to a skip list to reduce performance outliers 2014-07-01 17:14:15 -07:00
repair.cc MemTableOptions 2014-09-08 18:46:52 -07:00
simple_table_db_test.cc introduce ImmutableOptions 2014-09-04 16:18:36 -07:00
skiplist_test.cc Clean up arena API 2014-01-30 22:10:10 -08:00
skiplist.h Consolidate SliceTransform object ownership 2014-03-10 12:56:46 -07:00
snapshot.h fix a few compile warnings 2014-09-04 23:06:23 +08:00
table_cache.cc introduce ImmutableOptions 2014-09-04 16:18:36 -07:00
table_cache.h introduce ImmutableOptions 2014-09-04 16:18:36 -07:00
table_properties_collector_test.cc fix asan check 2014-09-05 09:53:04 -07:00
table_properties_collector.cc Extract metaindex block from block-based table 2013-12-05 16:34:16 -08:00
table_properties_collector.h TablePropertiesCollectorFactory 2014-05-13 12:30:55 -07:00
transaction_log_impl.cc Fixed a file-not-found issue when a log file is moved to archive. 2014-05-12 17:50:21 -07:00
transaction_log_impl.h RocksDBLite 2014-04-15 13:39:26 -07:00
version_edit_test.cc Support Multiple DB paths (without having an interface to expose to users) 2014-07-02 21:14:44 -07:00
version_edit.cc Support Multiple DB paths (without having an interface to expose to users) 2014-07-02 21:14:44 -07:00
version_edit.h Fix swapped variable names to accurately reflect usage 2014-09-04 20:09:45 -07:00
version_set_test.cc Fix clang compiler warnings 2014-07-20 22:57:20 +08:00
version_set.cc rename version_set options_ to db_options_ to avoid confusion 2014-09-08 15:25:01 -07:00
version_set.h rename version_set options_ to db_options_ to avoid confusion 2014-09-08 15:25:01 -07:00
write_batch_internal.h Push model for flushing memtables 2014-09-10 18:46:09 -07:00
write_batch_test.cc MemTableOptions 2014-09-08 18:46:52 -07:00
write_batch.cc Push model for flushing memtables 2014-09-10 18:46:09 -07:00
write_controller_test.cc Push- instead of pull-model for managing Write stalls 2014-09-08 11:20:25 -07:00
write_controller.cc Push- instead of pull-model for managing Write stalls 2014-09-08 11:20:25 -07:00
write_controller.h Push- instead of pull-model for managing Write stalls 2014-09-08 11:20:25 -07:00