fix(db) ensure we reach schema consensus while bootstrapping #4233
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.
When bootstrapping, both
up
andteardown
phases of each migrationexecute subsequently. If the
teardown
step executed DML statements,such statements can span all peers (due to replication factors). If the
replica peers have not yet reached consensus for their schema, they will
provoke errors and make the bootstrapping fail.
This change ensures that we wait for schema consensus when:
teardown
ifup
was just ranteardown
ifup
was not just ran (see comment asfor why)
run_up
onlyFrom another perspective:
run_up == true
: wait for consensus at the very end (after executingall up steps)
run_teardown == true
: wait for consensus after each teardown steprun_up == true and run_teardown == true
: wait for consensus beforeeach
teardown
step, and once at the very end (after all up andteardown steps)
Fix #4229