Skip to content

Fix no-op pre prepare #1085

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

Merged
merged 5 commits into from
Apr 21, 2020
Merged

Fix no-op pre prepare #1085

merged 5 commits into from
Apr 21, 2020

Conversation

olgavrou
Copy link
Contributor

Resolves problem described in #839

The problem here is that the no-op pre-prepare digests were not being calculated consistently during view changes (no-op pre-prepares are created per-replica vs created by one replica and broadcasted to other replicas as is done in normal execution) and so the no-op pre-prepares would never complete.

This fixes that and also puts the no-op pre-prepares into the ledger during view changes. In order for the no-op pp's to go into the ledger, we need them to not be signed, as each no-op pre-prepare will be signed by the replica that created it, leading eventually to an inconsistent merkle tree.

These pre-prepares will be signed eventually as part of the next pre-prepare.

@olgavrou olgavrou requested a review from a team as a code owner April 20, 2020 17:31
@ghost
Copy link

ghost commented Apr 20, 2020

fix_noop_pre_prepare@7482 aka 20200421.5 vs master ewma over 50 builds from 7108 to 7476
images

Copy link
Member

@achamayou achamayou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, could this maybe be captured in a unit test?

@olgavrou
Copy link
Contributor Author

@achamayou that is not a bad idea, I'll see how easy/hard it is to add that. In any case when the view change test is enabled this code path should be crossed in every view change.

@olgavrou
Copy link
Contributor Author

Adding unit test in separate PR

@olgavrou olgavrou merged commit 2ea194e into master Apr 21, 2020
@olgavrou olgavrou deleted the fix_noop_pre_prepare branch April 21, 2020 11:42
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.

3 participants