box: fix yielding DDL ordering on WAL failure#12007
Conversation
83db5d0 to
9cedd19
Compare
3f60744 to
3edae3e
Compare
3edae3e to
28f0e77
Compare
before_replace triggersc604fa0 to
2740e9f
Compare
drewdzzz
left a comment
There was a problem hiding this comment.
I don't like that now we can rollback a transaction when it executes a statement. Also, we have to patch more places to handle already rolled back transactions (applier, for example).
19da1a9 to
89ad3a2
Compare
51e5cbc to
f31d86f
Compare
test/box-luatest/gh_11833_two_ddl_of_the_same_space_in_a_row_rollback_test.lua
Outdated
Show resolved
Hide resolved
test/box-luatest/gh_11833_two_ddl_of_the_same_space_in_a_row_rollback_test.lua
Outdated
Show resolved
Hide resolved
test/box-luatest/gh_11833_two_ddl_of_the_same_space_in_a_row_rollback_test.lua
Show resolved
Hide resolved
test/box-luatest/gh_11833_two_ddl_of_the_same_space_in_a_row_rollback_test.lua
Outdated
Show resolved
Hide resolved
3fe14be to
ae1dda4
Compare
|
Removed the checks for whether it's a yielding DDL or not from the before_replace triggers. That is, Now we need to make a final decision: do we keep these checks or not? @nshy @drewdzzz WDYT? |
|
OK, let's drop them. |
Serialize yielding DDL operations on the same space to avoid reordering of data dictionary updates when the first DDL updated _space/_index in-memory and then failed to write to WAL. To do so, add internal before_replace triggers for _space and _index that wait for completion of previous yielding alters on the same space before applying the next change. Closes tarantool#11833 NO_DOC=bugfix
|
Backport failed for Please cherry-pick the changes locally and resolve any conflicts. git fetch origin release/3.2
git worktree add -d .worktree/backport/release/3.2/12007 origin/release/3.2
cd .worktree/backport/release/3.2/12007
git switch --create backport/release/3.2/12007
git cherry-pick -x 6e5a97c04913a9e1ec03ff40b2080380f445d15f |
|
Backport failed for Please cherry-pick the changes locally and resolve any conflicts. git fetch origin release/3.3
git worktree add -d .worktree/backport/release/3.3/12007 origin/release/3.3
cd .worktree/backport/release/3.3/12007
git switch --create backport/release/3.3/12007
git cherry-pick -x 6e5a97c04913a9e1ec03ff40b2080380f445d15f |
|
Successfully created backport PR for |
|
Successfully created backport PR for |
Backport summary
|
Serialize yielding DDL operations on the same space to avoid reordering of data dictionary updates when the first DDL updated _space/_index in-memory and then failed to write to WAL.
To do so, add internal before_replace triggers for _space and _index that wait for completion of previous yielding alters on the same space before applying the next change.
Closes #11833
NO_DOC=bugfix