vinyl: re-fix crash in read iterator on rollback due to WAL error
After scanning disk, the Vinyl read iterator checks if it should restore the iterator over the active memory tree, because new tuples could have been inserted into it while we yielded reading disk. We assume that existing tuples can't be deleted from the memory tree, but that's not always true - a tuple may actually be deleted by rollback after a failed WAL write. Let's reevaluate all scanned sources and reposition the read iterator to the next statement if this happens. Initially, the issue was fixed by commit 83462a5c ("vinyl: restart read iterator in case L0 is changed"), but it introduced a performance degradation and was reverted (see #5700). NO_DOC=bug fix NO_TEST=already there NO_CHANGELOG=already there
Loading
Please register or sign in to comment