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)
68452 of 121721 branches covered (56.24%)
3 of 3 new or added lines in 1 file covered. (100.0%)
30 existing lines in 15 files now uncovered.101059 of 115832 relevant lines covered (87.25%)
2485488.53 hits per line