- #PXC-666: DDL operations protected via RSU can change the database during SST #90
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently DDL operations that are protected via the RSU can
be performed during SST. Thus, the database can be changed
during execution of the SST process.
Therefore, the SST process may transfer to another node
the incorrect snapshot. To avoid this problem, we should
pause new desynchronization requests (wsrep->desync() API
calls), which are intiated by the RSU, until completion
of the SST.
Unfortunately there are many options for implicit
completion of the SST, and Replicator layer does not
always receive clear notification about it. But it
always gets some kind of message, which changes
its state. Therefore, to track any exit from the
desynchronization mode, which was established for
the SST, and to continue execution of the thread
that wants to make a new desynchronization on behalf
of the RSU, I used the mechanism of action linked
to the finite state machine transitions, which is
already implemented in the Galera (but currently
not used in practice for other purposes).