vinyl: yield while adding run slices to ranges on dump
The loop over all ranges can take long so we should yield once in a while in order not to stall the TX thread. The problem is we can't delete dumped in-memory trees until we've added a slice of the new run to each range, so if we yield while adding slices, a concurrent fiber will see a range with a slice containing statements present in in-memory trees, which breaks the assumption taken by merge iterator that its sources don't have duplicates. Handle this by filtering out newly dumped runs by LSN in vy_read_iterator_add_disk().
Loading
Please register or sign in to comment