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

Allow Proposal requesting from any DA node #3619

Merged
merged 6 commits into from
Aug 29, 2024
Merged

Allow Proposal requesting from any DA node #3619

merged 6 commits into from
Aug 29, 2024

Conversation

jparr721
Copy link
Contributor

Closes #3603

This PR:

Lets the requester of a proposal broadcast to the entire DA committee to receive a proposal on a first-come, first-served basis.

This PR does not:

Key places to review:

@jparr721 jparr721 requested a review from ss-es as a code owner August 27, 2024 21:38
@@ -420,7 +420,7 @@ impl<TYPES: NodeType, I: NodeImplementation<TYPES>, V: Versions> ConsensusTaskSt
}

if let Err(e) = self.consensus.write().await.update_high_qc(qc.clone()) {
tracing::error!("{e:?}");
tracing::trace!("{e:?}");
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This was intentional. This is a useless log and noisy as heck.

)
.await;
}
{
Copy link
Contributor Author

@jparr721 jparr721 Aug 28, 2024

Choose a reason for hiding this comment

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

These dangling handles on the consensus type bit me while I was developing this. Multi-line accesses/mutations are in their own scope to ensure that lower calls do not block waiting for a lock that'll never be available. I just wrapped it so that way the consensus handles in this file go out of scope. It's on the roadmap to refactor a lot of this during the dependency refactor rollout.

Copy link
Collaborator

@rob-maron rob-maron left a comment

Choose a reason for hiding this comment

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

Looks good, one small question

Copy link
Collaborator

@bfish713 bfish713 left a comment

Choose a reason for hiding this comment

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

I think there is a critical missing piece, the leader is the only one that stores the proposal to disc. This means if all nodes were to restart and the high QC points to a proposal where the leader was not in DA we will be stuck permanently. We need the DA nodes to store (storage.append_proposal) the proposal message as well. Also the request should go to the leader of the view as well as the DA committee.

The restart tests work here because everyone is on the DA committee so the leader can always respond.

@jparr721 jparr721 requested review from bfish713 and rob-maron August 28, 2024 17:11
@jparr721 jparr721 merged commit 85e84e0 into main Aug 29, 2024
36 checks passed
@jparr721 jparr721 deleted the jp/3603 branch August 29, 2024 16:03
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.

[Libp2p] - Allow Proposal requesting from any DA node
4 participants