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-08-25 14:24:09 -07:00
2014-08-25 14:24:09 -07:00
2014-08-29 17:31:04 +08:00
2014-05-15 14:09:03 -07:00
2014-05-15 14:09:03 -07:00
2014-08-28 17:06:29 -07:00
2014-05-01 14:09:32 -04:00
2014-04-09 21:17:14 -07:00
2014-08-11 13:22:47 -04:00
2014-08-25 14:24:09 -07:00
2014-08-25 14:24:09 -07:00
2014-07-21 10:31:33 -07:00
2014-07-21 10:31:33 -07:00
2014-02-03 00:30:43 -08:00