Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

- #PXC-666: DDL operations protected via RSU can change the database during SST #90

Open
wants to merge 1 commit into
base: 3.x
Choose a base branch
from

Conversation

sysprg
Copy link

@sysprg sysprg commented Nov 10, 2016

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).

…during SST

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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant