push
github
vinyl: fix crash when empty PK DDL races with DML Vinyl doesn't support altering the primary index of a non-empty space, but the check forbidding this isn't entirely reliable - the DDL function may yield to wait for pending WAL writes to finish after ensuring that the space doesn't contain any tuples. If a new tuples is inserted into the space in the meantime, the DDL operation will proceed rebuilding the primary index and trigger a crash because the code is written on the assumption that it's rebuilding a secondary index: ``` ./src/box/vinyl.c:1572: vy_check_is_unique_secondary_one: Assertion `lsm->index_id > 0' failed. ``` Let's fix this by moving the check after syncing on WAL. Closes #10603 NO_DOC=bug fix (cherry picked from commit 955537b57)
63052 of 114351 branches covered (55.14%)
3 of 3 new or added lines in 1 file covered. (100.0%)
16 existing lines in 8 files now uncovered.93919 of 109317 relevant lines covered (85.91%)
3304184.31 hits per line