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

merge main to randomnet #12171

Merged
merged 40 commits into from
Feb 22, 2024
Merged
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0d29ccd
Fix `iss`-related bug in Groth16 path & refactor (#12017)
alinush Feb 19, 2024
f92a197
[aptosvm] Simplify VM flows (#11888)
georgemitenkov Feb 20, 2024
d4fdb8f
[Compiler V2] Critical edge elimination (#11894)
fEst1ck Feb 20, 2024
9d802b8
[consensus configs] reduce sending block size from 2500 to 1900 (#12091)
bchocho Feb 20, 2024
6b3219e
[Indexer-grpc] Add profiling support. (#12034)
grao1991 Feb 20, 2024
67f372a
Minor aggregator cleanup (#12013)
vusirikala Feb 20, 2024
d771cec
[move] rotate_authentication_key_call should not modify OriginatingAd…
davidiw Feb 21, 2024
6ce7638
[Data Streaming Service] Add dynamic prefetching support
JoshLind Feb 8, 2024
47a1f66
[Data Streaming Service] Add dynamic prefetching unit tests.
JoshLind Feb 8, 2024
ea17e7e
[Data Streaming Service] Update existing integration tests.
JoshLind Feb 8, 2024
8d24ec7
[State Sync] Add backpressure to fast sync receiver.
JoshLind Feb 8, 2024
bc50dae
Update perf baseline for gas charging coverage improvements (reducing…
igor-aptos Feb 21, 2024
9972ea0
Reduce latency of cloning network sender using Arc pointers (#12103)
vusirikala Feb 21, 2024
3bef23f
adopt AIP-61 terminology for consistency (#12123)
alinush Feb 21, 2024
055683a
[Consensus] Remove non-decoupled execution and refactor for cleaner i…
sitalkedia Feb 21, 2024
5256800
fix jwk key logging (#12090)
zjma Feb 21, 2024
122f51f
remove spurious error lines (#12137)
igor-aptos Feb 21, 2024
6c7e9d4
randomness #1: types update from randomnet (#12106)
zjma Feb 21, 2024
76d8532
All validators broadcast commit vote messages (#12059)
vusirikala Feb 21, 2024
f325f52
[vm] Resource access control: runtime engine (#10544)
wrwg Feb 21, 2024
e229929
ObjectCodeDeployment API cleanup update (#12133)
igor-aptos Feb 21, 2024
ff49622
ObjectCodeDeployment API cleanup update (#12141)
igor-aptos Feb 21, 2024
b934829
[Compiler-v2] porting more V1 unit tests to V2 (#12085)
rahxephon89 Feb 22, 2024
d69d3c1
Enable the max object nesting check (#12129)
junkil-park Feb 22, 2024
72906ab
Resolved the warning for unused variable (#12157)
junkil-park Feb 22, 2024
8d7b337
Merge remote-tracking branch 'origin/main' into randomnet
zjma Feb 22, 2024
108b54c
update
zjma Feb 22, 2024
2fb99db
update
zjma Feb 22, 2024
bb1ffbb
update
zjma Feb 22, 2024
e9d1f6c
update
zjma Feb 22, 2024
dc74bb7
update
zjma Feb 22, 2024
22761c5
update
zjma Feb 22, 2024
843d2bc
update
zjma Feb 22, 2024
761c983
update
zjma Feb 22, 2024
86db77f
update
zjma Feb 22, 2024
60aa5a1
update
zjma Feb 22, 2024
bd55100
update
zjma Feb 22, 2024
ae1a9d8
update
zjma Feb 22, 2024
bbed07c
update
zjma Feb 22, 2024
f677b1a
Squashed commit of the following:
zjma Feb 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Reduce latency of cloning network sender using Arc pointers (#12103)
* Avoid cloning network sender using Arc pointers

* Removing a clone

* 100 node sweep test

* Removing a few clone operations

* reset forge test

* Removing some clones

* Removing clones
  • Loading branch information
vusirikala authored Feb 21, 2024
commit 9972ea0c4554c3c0595bc007f37f2dae0fec2f1c
6 changes: 3 additions & 3 deletions consensus/src/block_storage/sync_manager.rs
Original file line number Diff line number Diff line change
@@ -346,7 +346,7 @@ impl BlockStore {
async fn sync_to_highest_commit_cert(
&self,
ledger_info: &LedgerInfoWithSignatures,
network: &NetworkSender,
network: &Arc<NetworkSender>,
) {
// if the block exists between commit root and ordered root
if self.commit_root().round() < ledger_info.commit_info().round()
@@ -404,15 +404,15 @@ impl BlockStore {

/// BlockRetriever is used internally to retrieve blocks
pub struct BlockRetriever {
network: NetworkSender,
network: Arc<NetworkSender>,
preferred_peer: Author,
validator_addresses: Vec<AccountAddress>,
max_blocks_to_request: u64,
}

impl BlockRetriever {
pub fn new(
network: NetworkSender,
network: Arc<NetworkSender>,
preferred_peer: Author,
validator_addresses: Vec<AccountAddress>,
max_blocks_to_request: u64,
10 changes: 5 additions & 5 deletions consensus/src/epoch_manager.rs
Original file line number Diff line number Diff line change
@@ -681,7 +681,7 @@ impl<P: OnChainConfigProvider> EpochManager<P> {
ledger_data: LedgerRecoveryData,
onchain_consensus_config: OnChainConsensusConfig,
epoch_state: Arc<EpochState>,
network_sender: NetworkSender,
network_sender: Arc<NetworkSender>,
) {
let (recovery_manager_tx, recovery_manager_rx) = aptos_channel::new(
QueueStyle::LIFO,
@@ -731,7 +731,7 @@ impl<P: OnChainConfigProvider> EpochManager<P> {
self.quorum_store_to_mempool_sender.clone(),
self.config.mempool_txn_pull_timeout_ms,
self.storage.aptos_db().clone(),
network_sender.clone(),
network_sender,
epoch_state.verifier.clone(),
self.config.safety_rules.backend.clone(),
self.quorum_store_storage.clone(),
@@ -827,7 +827,7 @@ impl<P: OnChainConfigProvider> EpochManager<P> {
recovery_data: RecoveryData,
epoch_state: Arc<EpochState>,
onchain_consensus_config: OnChainConsensusConfig,
network_sender: NetworkSender,
network_sender: Arc<NetworkSender>,
payload_client: Arc<dyn PayloadClient>,
payload_manager: Arc<PayloadManager>,
features: Features,
@@ -1085,7 +1085,7 @@ impl<P: OnChainConfigProvider> EpochManager<P> {
initial_data,
epoch_state,
consensus_config,
network_sender,
Arc::new(network_sender),
payload_client,
payload_manager,
features,
@@ -1098,7 +1098,7 @@ impl<P: OnChainConfigProvider> EpochManager<P> {
ledger_data,
consensus_config,
epoch_state,
network_sender,
Arc::new(network_sender),
)
.await
},
13 changes: 7 additions & 6 deletions consensus/src/network.rs
Original file line number Diff line number Diff line change
@@ -295,11 +295,12 @@ impl NetworkSender {
/// The future is fulfilled as soon as the message is put into the mpsc channel to network
/// internal (to provide back pressure), it does not indicate the message is delivered or sent
/// out.
async fn broadcast(&mut self, msg: ConsensusMsg) {
async fn broadcast(&self, msg: ConsensusMsg) {
fail_point!("consensus::send::any", |_| ());
// Directly send the message to ourself without going through network.
let self_msg = Event::Message(self.author, msg.clone());
if let Err(err) = self.self_sender.send(self_msg).await {
let mut self_sender = self.self_sender.clone();
if let Err(err) = self_sender.send(self_msg).await {
error!("Error broadcasting to self: {:?}", err);
}

@@ -369,25 +370,25 @@ impl NetworkSender {
}
}

pub async fn broadcast_proposal(&mut self, proposal_msg: ProposalMsg) {
pub async fn broadcast_proposal(&self, proposal_msg: ProposalMsg) {
fail_point!("consensus::send::broadcast_proposal", |_| ());
let msg = ConsensusMsg::ProposalMsg(Box::new(proposal_msg));
self.broadcast(msg).await
}

pub async fn broadcast_sync_info(&mut self, sync_info_msg: SyncInfo) {
pub async fn broadcast_sync_info(&self, sync_info_msg: SyncInfo) {
fail_point!("consensus::send::broadcast_sync_info", |_| ());
let msg = ConsensusMsg::SyncInfo(Box::new(sync_info_msg));
self.broadcast(msg).await
}

pub async fn broadcast_timeout_vote(&mut self, timeout_vote_msg: VoteMsg) {
pub async fn broadcast_timeout_vote(&self, timeout_vote_msg: VoteMsg) {
fail_point!("consensus::send::broadcast_timeout_vote", |_| ());
let msg = ConsensusMsg::VoteMsg(Box::new(timeout_vote_msg));
self.broadcast(msg).await
}

pub async fn broadcast_epoch_change(&mut self, epoch_change_proof: EpochChangeProof) {
pub async fn broadcast_epoch_change(&self, epoch_change_proof: EpochChangeProof) {
fail_point!("consensus::send::broadcast_epoch_change", |_| ());
let msg = ConsensusMsg::EpochChangeProof(Box::new(epoch_change_proof));
self.broadcast(msg).await
4 changes: 2 additions & 2 deletions consensus/src/quorum_store/batch_coordinator.rs
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ pub enum BatchCoordinatorCommand {

pub struct BatchCoordinator {
my_peer_id: PeerId,
network_sender: NetworkSender,
network_sender: Arc<NetworkSender>,
batch_store: Arc<BatchStore>,
max_batch_txns: u64,
max_batch_bytes: u64,
@@ -43,7 +43,7 @@ impl BatchCoordinator {
) -> Self {
Self {
my_peer_id,
network_sender,
network_sender: Arc::new(network_sender),
batch_store,
max_batch_txns,
max_batch_bytes,
4 changes: 2 additions & 2 deletions consensus/src/recovery_manager.rs
Original file line number Diff line number Diff line change
@@ -27,7 +27,7 @@ use std::{mem::Discriminant, process, sync::Arc};
/// for processing the events carrying sync info and use the info to retrieve blocks from peers
pub struct RecoveryManager {
epoch_state: Arc<EpochState>,
network: NetworkSender,
network: Arc<NetworkSender>,
storage: Arc<dyn PersistentLivenessStorage>,
state_computer: Arc<dyn StateComputer>,
last_committed_round: Round,
@@ -38,7 +38,7 @@ pub struct RecoveryManager {
impl RecoveryManager {
pub fn new(
epoch_state: Arc<EpochState>,
network: NetworkSender,
network: Arc<NetworkSender>,
storage: Arc<dyn PersistentLivenessStorage>,
state_computer: Arc<dyn StateComputer>,
last_committed_round: Round,
10 changes: 4 additions & 6 deletions consensus/src/round_manager.rs
Original file line number Diff line number Diff line change
@@ -188,7 +188,7 @@ pub struct RoundManager {
proposer_election: UnequivocalProposerElection,
proposal_generator: ProposalGenerator,
safety_rules: Arc<Mutex<MetricsSafetyRules>>,
network: NetworkSender,
network: Arc<NetworkSender>,
storage: Arc<dyn PersistentLivenessStorage>,
onchain_config: OnChainConsensusConfig,
vtxn_config: ValidatorTxnConfig,
@@ -205,7 +205,7 @@ impl RoundManager {
proposer_election: Arc<dyn ProposerElection + Send + Sync>,
proposal_generator: ProposalGenerator,
safety_rules: Arc<Mutex<MetricsSafetyRules>>,
network: NetworkSender,
network: Arc<NetworkSender>,
storage: Arc<dyn PersistentLivenessStorage>,
onchain_config: OnChainConsensusConfig,
buffered_proposal_tx: aptos_channel::Sender<Author, VerifiedEvent>,
@@ -295,15 +295,14 @@ impl RoundManager {
self.log_collected_vote_stats(&new_round_event);
self.round_state.setup_leader_timeout();
let proposal_msg = self.generate_proposal(new_round_event).await?;
let mut network = self.network.clone();
#[cfg(feature = "failpoints")]
{
if self.check_whether_to_inject_reconfiguration_error() {
self.attempt_to_inject_reconfiguration_error(&proposal_msg)
.await?;
}
}
network.broadcast_proposal(proposal_msg).await;
self.network.broadcast_proposal(proposal_msg).await;
counters::PROPOSALS_COUNT.inc();
}
Ok(())
@@ -384,7 +383,7 @@ impl RoundManager {
) -> anyhow::Result<ProposalMsg> {
// Proposal generator will ensure that at most one proposal is generated per round
let sync_info = self.block_store.sync_info();
let mut sender = self.network.clone();
let sender = self.network.clone();
let callback = async move {
sender.broadcast_sync_info(sync_info).await;
}
@@ -1168,7 +1167,6 @@ impl RoundManager {
.collect();
half_peers.truncate(half_peers.len() / 2);
self.network
.clone()
.send_proposal(proposal_msg.clone(), half_peers)
.await;
Err(anyhow::anyhow!("Injected error in reconfiguration suffix"))
4 changes: 2 additions & 2 deletions consensus/src/round_manager_fuzzing.rs
Original file line number Diff line number Diff line change
@@ -155,12 +155,12 @@ fn create_node_for_fuzzing() -> RoundManager {
epoch: 1,
verifier: storage.get_validator_set().into(),
});
let network = NetworkSender::new(
let network = Arc::new(NetworkSender::new(
signer.author(),
consensus_network_client,
self_sender,
epoch_state.verifier.clone(),
);
));

// TODO: mock
let block_store = build_empty_store(storage.clone(), initial_data);
7 changes: 6 additions & 1 deletion consensus/src/round_manager_test.rs
Original file line number Diff line number Diff line change
@@ -243,7 +243,12 @@ impl NodeSetup {
playground.add_node(twin_id, consensus_tx, network_reqs_rx, conn_mgr_reqs_rx);

let (self_sender, self_receiver) = aptos_channels::new_test(1000);
let network = NetworkSender::new(author, consensus_network_client, self_sender, validators);
let network = Arc::new(NetworkSender::new(
author,
consensus_network_client,
self_sender,
validators,
));

let all_network_events = Box::new(select(network_events, self_receiver));

Loading