rocksdb/table
Tomislav Novak 0f9c43ea36 ForwardIterator: reset incomplete iterators on Seek()
Summary:
When reading from kBlockCacheTier, ForwardIterator's internal child iterators
may end up in the incomplete state (read was unable to complete without doing
disk I/O). `ForwardIterator::status()` will correctly report that; however, the
iterator may be stuck in that state until all sub-iterators are rebuilt:

  * `NeedToSeekImmutable()` may return false even if some sub-iterators are
    incomplete
  * one of the child iterators may be an empty iterator without any state other
    that the kIncomplete status (created using `NewErrorIterator()`); seeking on
    any such iterator has no effect -- we need to construct it again

Akin to rebuilding iterators after a superversion bump, this diff makes forward
iterator reset all incomplete child iterators when `Seek()` or `Next()` are
called.

Test Plan: TEST_TMPDIR=/dev/shm/rocksdbtest ROCKSDB_TESTS=TailingIterator ./db_test

Reviewers: igor, sdong, ljin

Reviewed By: ljin

Subscribers: lovro, march, leveldb

Differential Revision: https://reviews.facebook.net/D22575
2014-08-29 16:21:29 -07:00
..
adaptive_table_factory.cc print table options 2014-08-25 14:24:09 -07:00
adaptive_table_factory.h print table options 2014-08-25 14:24:09 -07:00
block_based_table_builder.cc remove_internal_filter_policy 2014-08-28 17:06:29 -07:00
block_based_table_builder.h Don't compress block bigger than 2GB 2014-06-09 12:26:09 -07:00
block_based_table_factory.cc remove_internal_filter_policy 2014-08-28 17:06:29 -07:00
block_based_table_factory.h print table options 2014-08-25 14:24:09 -07:00
block_based_table_reader.cc remove_internal_filter_policy 2014-08-28 17:06:29 -07:00
block_based_table_reader.h Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
block_builder.cc move block based table related options BlockBasedTableOptions 2014-08-25 14:22:05 -07:00
block_builder.h delete unused struct Options 2014-08-29 17:31:04 +08:00
block_hash_index_test.cc Materialize the hash index 2014-05-15 14:09:03 -07:00
block_hash_index.cc Materialize the hash index 2014-05-15 14:09:03 -07:00
block_hash_index.h Materialize the hash index 2014-05-15 14:09:03 -07:00
block_prefix_index.cc Changes to support unity build: 2014-08-11 13:22:47 -04:00
block_prefix_index.h [RocksDB] Reduce memory footprint of the blockbased table hash index. 2014-06-18 18:16:07 -07:00
block_test.cc ReadOptions.total_order_seek to allow total order seek for block-based table when hash index is enabled 2014-08-25 16:14:30 -07:00
block.cc ReadOptions.total_order_seek to allow total order seek for block-based table when hash index is enabled 2014-08-25 16:14:30 -07:00
block.h ReadOptions.total_order_seek to allow total order seek for block-based table when hash index is enabled 2014-08-25 16:14:30 -07:00
bloom_block.cc Adding option to save PlainTable index and bloom filter in SST file. 2014-07-18 16:58:13 -07:00
bloom_block.h Adding option to save PlainTable index and bloom filter in SST file. 2014-07-18 16:58:13 -07:00
cuckoo_table_builder_test.cc Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
cuckoo_table_builder.cc Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
cuckoo_table_builder.h Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
cuckoo_table_factory.cc Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
cuckoo_table_factory.h Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
cuckoo_table_reader_test.cc Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
cuckoo_table_reader.cc Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
cuckoo_table_reader.h Implementing a cache friendly version of Cuckoo Hash 2014-08-28 10:42:23 -07:00
filter_block_test.cc move block based table related options BlockBasedTableOptions 2014-08-25 14:22:05 -07:00
filter_block.cc remove_internal_filter_policy 2014-08-28 17:06:29 -07:00
filter_block.h move block based table related options BlockBasedTableOptions 2014-08-25 14:22:05 -07:00
flush_block_policy.cc move block based table related options BlockBasedTableOptions 2014-08-25 14:22:05 -07:00
format.cc logging_when_create_and_delete_manifest 2014-08-04 11:25:42 -07:00
format.h xxHash 2014-05-01 14:09:32 -04:00
iter_heap.h Turn on -Wmissing-prototypes 2014-04-09 21:17:14 -07:00
iterator_wrapper.h In DB::NewIterator(), try to allocate the whole iterator tree in an arena 2014-06-02 17:44:57 -07:00
iterator.cc In DB::NewIterator(), try to allocate the whole iterator tree in an arena 2014-06-02 17:44:57 -07:00
merger.cc Changes to support unity build: 2014-08-11 13:22:47 -04:00
merger.h In DB::NewIterator(), try to allocate the whole iterator tree in an arena 2014-06-02 17:44:57 -07:00
meta_blocks.cc Avoid retrying to read property block from a table when it does not exist. 2014-08-15 12:17:44 -07:00
meta_blocks.h Adding option to save PlainTable index and bloom filter in SST file. 2014-07-18 16:58:13 -07:00
plain_table_builder.cc Adding option to save PlainTable index and bloom filter in SST file. 2014-07-18 16:58:13 -07:00
plain_table_builder.h Adding option to save PlainTable index and bloom filter in SST file. 2014-07-18 16:58:13 -07:00
plain_table_factory.cc print table options 2014-08-25 14:24:09 -07:00
plain_table_factory.h print table options 2014-08-25 14:24:09 -07:00
plain_table_index.cc Fix db_bench 2014-07-21 10:31:33 -07:00
plain_table_index.h Fix db_bench 2014-07-21 10:31:33 -07:00
plain_table_key_coding.cc initialize decoded_internal_key_valid 2014-07-03 23:13:08 -07:00
plain_table_key_coding.h fix make shared_lib compilation error 2014-06-19 10:12:26 -07:00
plain_table_reader.cc ReadOptions.total_order_seek to allow total order seek for block-based table when hash index is enabled 2014-08-25 16:14:30 -07:00
plain_table_reader.h Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
table_builder.h First phase API clean up 2014-02-03 00:30:43 -08:00
table_properties.cc Fix SIGFAULT when running sst_dump on v2.6 db 2014-04-21 17:49:47 -07:00
table_reader_bench.cc Add CuckooHash table format to table_reader_bench 2014-08-19 14:58:15 -07:00
table_reader.h Add DB property "rocksdb.estimate-table-readers-mem" 2014-08-06 11:39:46 -07:00
table_test.cc ReadOptions.total_order_seek to allow total order seek for block-based table when hash index is enabled 2014-08-25 16:14:30 -07:00
two_level_iterator.cc ForwardIterator: reset incomplete iterators on Seek() 2014-08-29 16:21:29 -07:00
two_level_iterator.h In DB::NewIterator(), try to allocate the whole iterator tree in an arena 2014-06-02 17:44:57 -07:00