mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-20 00:20:47 +00:00
Before updating the _last_[cp]key (for subsequent .fetch_page()) the pager checks is 'if the pager is not exhausted OR the result has data'. The check seems broken: if the pager is not exhausted, but the result is empty the call for keys will unconditionally try to reference the last element from empty vector. The not exhausted condition for empty result can happen if the short_read is set, which, in turn, unconditionally happens upon meeting partition end when visiting the partition with result builder. The correct check should be 'if the pager is not exhausted AND the result has data': the _last_[pc]key-s should be taken for continuation (not exhausted), but can be taken if the result is not empty (has data). fixes: #7263 tests: unit(dev), but tests don't trigger this corner case Signed-off-by: Pavel Emelyanov <xemul@scylladb.com> Message-Id: <20200921124329.21209-1-xemul@scylladb.com>