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
..
2014-07-08 12:31:49 -07:00
2014-08-26 14:15:00 -07:00
2014-08-11 13:22:47 -04:00
2014-08-11 13:22:47 -04:00
2014-08-28 12:46:05 -04:00
2014-07-20 22:57:20 +08:00
2014-08-13 15:56:37 -07:00
2014-08-28 17:06:29 -07:00
2014-08-28 17:06:29 -07:00
2014-07-30 10:17:48 -07:00
2014-02-28 13:19:47 -08:00
2014-01-27 14:49:10 -08:00
2014-03-14 22:44:35 +00:00
2014-03-14 13:02:20 -07:00
2014-08-25 14:24:09 -07:00
2014-01-30 22:10:10 -08:00
2014-04-15 13:39:26 -07:00