Skip to content

Commit

Permalink
[stateless_validation] Rename StateWitnessActor to PartialWitnessActor (
Browse files Browse the repository at this point in the history
#11191)

Better organization of partial witness actor and actions. Renaming and
pushing to a new module.

Only refactoring changes.
  • Loading branch information
Shreyan Gupta committed Apr 30, 2024
1 parent 408bc00 commit 2feec32
Show file tree
Hide file tree
Showing 28 changed files with 175 additions and 166 deletions.
10 changes: 5 additions & 5 deletions chain/client/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use crate::debug::BlockProductionTracker;
use crate::debug::PRODUCTION_TIMES_CACHE_SIZE;
use crate::stateless_validation::chunk_endorsement_tracker::ChunkEndorsementTracker;
use crate::stateless_validation::chunk_validator::ChunkValidator;
use crate::stateless_validation::state_witness_actor::StateWitnessSenderForClient;
use crate::stateless_validation::partial_witness::partial_witness_actor::PartialWitnessSenderForClient;
use crate::sync::adapter::SyncShardInfo;
use crate::sync::block::BlockSync;
use crate::sync::epoch::EpochSync;
Expand Down Expand Up @@ -186,8 +186,8 @@ pub struct Client {
pub chunk_inclusion_tracker: ChunkInclusionTracker,
/// Tracks chunk endorsements received from chunk validators. Used to filter out chunks ready for inclusion
pub chunk_endorsement_tracker: Arc<ChunkEndorsementTracker>,
/// Adapter to send request to state_witness_actor to distribute state witness.
pub state_witness_adapter: StateWitnessSenderForClient,
/// Adapter to send request to partial_witness_actor to distribute state witness.
pub partial_witness_adapter: PartialWitnessSenderForClient,
// Optional value used for the Chunk Distribution Network Feature.
chunk_distribution_network: Option<ChunkDistributionNetwork>,
}
Expand Down Expand Up @@ -249,7 +249,7 @@ impl Client {
rng_seed: RngSeed,
snapshot_callbacks: Option<SnapshotCallbacks>,
async_computation_spawner: Arc<dyn AsyncComputationSpawner>,
state_witness_adapter: StateWitnessSenderForClient,
partial_witness_adapter: PartialWitnessSenderForClient,
) -> Result<Self, Error> {
let doomslug_threshold_mode = if enable_doomslug {
DoomslugThresholdMode::TwoThirds
Expand Down Expand Up @@ -404,7 +404,7 @@ impl Client {
chunk_validator,
chunk_inclusion_tracker: ChunkInclusionTracker::new(),
chunk_endorsement_tracker,
state_witness_adapter,
partial_witness_adapter,
chunk_distribution_network,
})
}
Expand Down
2 changes: 1 addition & 1 deletion chain/client/src/client_actions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ pub struct SyncJobsSenderForClient {

#[derive(Clone, MultiSend, MultiSenderFrom, MultiSendMessage)]
#[multi_send_message_derive(Debug)]
pub struct ClientSenderForStateWitness {
pub struct ClientSenderForPartialWitness {
pub receive_chunk_state_witness: Sender<ProcessChunkStateWitnessMessage>,
}

Expand Down
6 changes: 3 additions & 3 deletions chain/client/src/client_actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ use tokio::sync::broadcast;
use crate::client_actions::{ClientActionHandler, ClientActions, ClientSenderForClient};
use crate::gc_actor::GCActor;
use crate::start_gc_actor;
use crate::stateless_validation::state_witness_actor::StateWitnessSenderForClient;
use crate::stateless_validation::partial_witness::partial_witness_actor::PartialWitnessSenderForClient;
use crate::sync_jobs_actions::SyncJobsActions;
use crate::sync_jobs_actor::SyncJobsActor;
use crate::{metrics, Client, ConfigUpdater, SyncAdapter};
Expand Down Expand Up @@ -206,7 +206,7 @@ pub fn start_client(
sender: Option<broadcast::Sender<()>>,
adv: crate::adversarial::Controls,
config_updater: Option<ConfigUpdater>,
state_witness_adapter: StateWitnessSenderForClient,
partial_witness_adapter: PartialWitnessSenderForClient,
) -> StartClientResult {
let client_arbiter = Arbiter::new();
let client_arbiter_handle = client_arbiter.handle();
Expand All @@ -228,7 +228,7 @@ pub fn start_client(
random_seed_from_thread(),
snapshot_callbacks,
Arc::new(RayonAsyncComputationSpawner),
state_witness_adapter,
partial_witness_adapter,
)
.unwrap();
let resharding_handle = client.chain.resharding_handle.clone();
Expand Down
8 changes: 4 additions & 4 deletions chain/client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ pub use near_client_primitives::debug::DebugStatus;
pub use near_network::client::{
BlockApproval, BlockResponse, ProcessTxRequest, ProcessTxResponse, SetNetworkInfo,
};
pub use stateless_validation::processing_tracker::{ProcessingDoneTracker, ProcessingDoneWaiter};
pub use stateless_validation::state_witness_actions::StateWitnessActions;
pub use stateless_validation::state_witness_actor::{
DistributeStateWitnessRequest, StateWitnessActor, StateWitnessSenderForClientMessage,
pub use stateless_validation::partial_witness::partial_witness_actions::PartialWitnessActions;
pub use stateless_validation::partial_witness::partial_witness_actor::{
DistributeStateWitnessRequest, PartialWitnessActor, PartialWitnessSenderForClientMessage,
};
pub use stateless_validation::processing_tracker::{ProcessingDoneTracker, ProcessingDoneWaiter};

pub mod adapter;
pub mod adversarial;
Expand Down
4 changes: 1 addition & 3 deletions chain/client/src/stateless_validation/mod.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
pub mod chunk_endorsement_tracker;
pub mod chunk_validator;
mod partial_witness_tracker;
pub mod partial_witness;
pub mod processing_tracker;
mod shadow_validate;
pub mod state_witness_actions;
pub mod state_witness_actor;
mod state_witness_producer;
pub mod state_witness_tracker;
3 changes: 3 additions & 0 deletions chain/client/src/stateless_validation/partial_witness/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pub mod partial_witness_actions;
pub mod partial_witness_actor;
mod partial_witness_tracker;
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ use near_primitives::stateless_validation::{
use near_primitives::types::{AccountId, EpochId};
use near_primitives::validator_signer::ValidatorSigner;

use crate::client_actions::ClientSenderForStateWitness;
use crate::client_actions::ClientSenderForPartialWitness;
use crate::metrics;
use crate::stateless_validation::state_witness_tracker::ChunkStateWitnessTracker;

use super::partial_witness_actor::DistributeStateWitnessRequest;
use super::partial_witness_tracker::{PartialEncodedStateWitnessTracker, RsMap};
use super::state_witness_actor::DistributeStateWitnessRequest;
use super::state_witness_tracker::ChunkStateWitnessTracker;

pub struct StateWitnessActions {
pub struct PartialWitnessActions {
/// Adapter to send messages to the network.
network_adapter: PeerManagerAdapter,
/// Validator signer to sign the state witness.
Expand All @@ -39,11 +39,11 @@ pub struct StateWitnessActions {
rs_map: RsMap,
}

impl StateWitnessActions {
impl PartialWitnessActions {
pub fn new(
clock: Clock,
network_adapter: PeerManagerAdapter,
client_sender: ClientSenderForStateWitness,
client_sender: ClientSenderForPartialWitness,
my_signer: Arc<dyn ValidatorSigner>,
epoch_manager: Arc<dyn EpochManagerAdapter>,
) -> Self {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,25 @@ use near_primitives::stateless_validation::ChunkStateWitness;
use near_primitives::types::EpochId;
use near_primitives::validator_signer::ValidatorSigner;

use crate::client_actions::ClientSenderForStateWitness;
use crate::client_actions::ClientSenderForPartialWitness;

use super::state_witness_actions::StateWitnessActions;
use super::partial_witness_actions::PartialWitnessActions;

pub struct StateWitnessActor {
pub actions: StateWitnessActions,
pub struct PartialWitnessActor {
pub actions: PartialWitnessActions,
}

impl StateWitnessActor {
impl PartialWitnessActor {
pub fn spawn(
clock: Clock,
network_adapter: PeerManagerAdapter,
client_sender: ClientSenderForStateWitness,
client_sender: ClientSenderForPartialWitness,
my_signer: Arc<dyn ValidatorSigner>,
epoch_manager: Arc<dyn EpochManagerAdapter>,
) -> (actix::Addr<Self>, actix::ArbiterHandle) {
let arbiter = actix::Arbiter::new().handle();
let addr = Self::start_in_arbiter(&arbiter, |_ctx| Self {
actions: StateWitnessActions::new(
actions: PartialWitnessActions::new(
clock,
network_adapter,
client_sender,
Expand All @@ -47,7 +47,7 @@ impl StateWitnessActor {
}
}

impl actix::Actor for StateWitnessActor {
impl actix::Actor for PartialWitnessActor {
type Context = actix::Context<Self>;
}

Expand All @@ -61,11 +61,11 @@ pub struct DistributeStateWitnessRequest {

#[derive(Clone, MultiSend, MultiSenderFrom, MultiSendMessage)]
#[multi_send_message_derive(Debug)]
pub struct StateWitnessSenderForClient {
pub struct PartialWitnessSenderForClient {
pub distribute_chunk_state_witness: Sender<DistributeStateWitnessRequest>,
}

impl actix::Handler<WithSpanContext<DistributeStateWitnessRequest>> for StateWitnessActor {
impl actix::Handler<WithSpanContext<DistributeStateWitnessRequest>> for PartialWitnessActor {
type Result = ();

#[perf]
Expand All @@ -81,7 +81,7 @@ impl actix::Handler<WithSpanContext<DistributeStateWitnessRequest>> for StateWit
}
}

impl actix::Handler<WithSpanContext<ChunkStateWitnessAckMessage>> for StateWitnessActor {
impl actix::Handler<WithSpanContext<ChunkStateWitnessAckMessage>> for PartialWitnessActor {
type Result = ();

fn handle(
Expand All @@ -94,7 +94,7 @@ impl actix::Handler<WithSpanContext<ChunkStateWitnessAckMessage>> for StateWitne
}
}

impl actix::Handler<WithSpanContext<PartialEncodedStateWitnessMessage>> for StateWitnessActor {
impl actix::Handler<WithSpanContext<PartialEncodedStateWitnessMessage>> for PartialWitnessActor {
type Result = ();

fn handle(
Expand All @@ -110,7 +110,7 @@ impl actix::Handler<WithSpanContext<PartialEncodedStateWitnessMessage>> for Stat
}

impl actix::Handler<WithSpanContext<PartialEncodedStateWitnessForwardMessage>>
for StateWitnessActor
for PartialWitnessActor
{
type Result = ();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use near_primitives::stateless_validation::{EncodedChunkStateWitness, PartialEnc
use near_primitives::types::{BlockHeight, ShardId};
use reed_solomon_erasure::galois_8::ReedSolomon;

use crate::client_actions::ClientSenderForStateWitness;
use crate::client_actions::ClientSenderForPartialWitness;

/// Max number of chunks to keep in the witness tracker cache. We reach here only after validation
/// of the partial_witness so the LRU cache size need not be too large.
Expand Down Expand Up @@ -142,7 +142,7 @@ impl CacheEntry {
/// recreate the full state witness.
pub struct PartialEncodedStateWitnessTracker {
/// Sender to send the encoded state witness to the client actor.
client_sender: ClientSenderForStateWitness,
client_sender: ClientSenderForPartialWitness,
/// Epoch manager to get the set of chunk validators
epoch_manager: Arc<dyn EpochManagerAdapter>,
/// Keeps track of state witness parts received from chunk producers.
Expand All @@ -153,7 +153,7 @@ pub struct PartialEncodedStateWitnessTracker {

impl PartialEncodedStateWitnessTracker {
pub fn new(
client_sender: ClientSenderForStateWitness,
client_sender: ClientSenderForPartialWitness,
epoch_manager: Arc<dyn EpochManagerAdapter>,
) -> Self {
Self {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ use near_primitives::stateless_validation::{
use near_primitives::types::{AccountId, EpochId};

use crate::stateless_validation::chunk_validator::send_chunk_endorsement_to_block_producers;
use crate::stateless_validation::state_witness_actor::DistributeStateWitnessRequest;
use crate::Client;

use super::partial_witness::partial_witness_actor::DistributeStateWitnessRequest;

impl Client {
/// Distributes the chunk state witness to chunk validators that are
/// selected to validate this chunk.
Expand Down Expand Up @@ -65,7 +66,7 @@ impl Client {
);
}

self.state_witness_adapter.send(DistributeStateWitnessRequest {
self.partial_witness_adapter.send(DistributeStateWitnessRequest {
epoch_id: epoch_id.clone(),
chunk_header,
state_witness,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@ use std::sync::{Arc, RwLock};

use near_async::messaging::CanSend;

use crate::stateless_validation::state_witness_actor::DistributeStateWitnessRequest;
use crate::stateless_validation::partial_witness::partial_witness_actor::DistributeStateWitnessRequest;

#[derive(Clone, Default)]
pub struct MockStateWitnessAdapter {
pub struct MockPartialWitnessAdapter {
distribution_request: Arc<RwLock<VecDeque<DistributeStateWitnessRequest>>>,
}

impl CanSend<DistributeStateWitnessRequest> for MockStateWitnessAdapter {
impl CanSend<DistributeStateWitnessRequest> for MockPartialWitnessAdapter {
fn send(&self, msg: DistributeStateWitnessRequest) {
self.distribution_request.write().unwrap().push_back(msg);
}
}

impl MockStateWitnessAdapter {
impl MockPartialWitnessAdapter {
pub fn pop_distribution_request(&self) -> Option<DistributeStateWitnessRequest> {
self.distribution_request.write().unwrap().pop_front()
}
Expand Down
2 changes: 1 addition & 1 deletion chain/client/src/test_utils/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
pub mod block_stats;
pub mod client;
mod mock_state_witness_adapter;
mod mock_partial_witness_adapter;
pub mod peer_manager_mock;
pub mod setup;
pub mod test_env;
Expand Down
14 changes: 7 additions & 7 deletions chain/client/src/test_utils/setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

use super::block_stats::BlockStats;
use super::peer_manager_mock::PeerManagerMock;
use crate::stateless_validation::state_witness_actor::{
StateWitnessActor, StateWitnessSenderForClient,
use crate::stateless_validation::partial_witness::partial_witness_actor::{
PartialWitnessActor, PartialWitnessSenderForClient,
};
use crate::{start_view_client, Client, ClientActor, SyncAdapter, SyncStatus, ViewClientActor};
use actix::{Actor, Addr, AsyncContext, Context};
Expand Down Expand Up @@ -177,14 +177,14 @@ pub fn setup(
SyncAdapter::actix_actor_maker(),
)));

let (state_witness_addr, _) = StateWitnessActor::spawn(
let (partial_witness_addr, _) = PartialWitnessActor::spawn(
clock.clone(),
network_adapter.clone(),
noop().into_multi_sender(),
signer.clone(),
epoch_manager.clone(),
);
let state_witness_adapter = state_witness_addr.with_auto_span_context();
let partial_witness_adapter = partial_witness_addr.with_auto_span_context();
let client = Client::new(
clock.clone(),
config.clone(),
Expand All @@ -200,7 +200,7 @@ pub fn setup(
TEST_SEED,
None,
Arc::new(RayonAsyncComputationSpawner),
state_witness_adapter.into_multi_sender(),
partial_witness_adapter.into_multi_sender(),
)
.unwrap();
let client_actor = ClientActor::new(
Expand Down Expand Up @@ -974,7 +974,7 @@ pub fn setup_client_with_runtime(
archive: bool,
save_trie_changes: bool,
snapshot_callbacks: Option<SnapshotCallbacks>,
state_witness_adapter: StateWitnessSenderForClient,
partial_witness_adapter: PartialWitnessSenderForClient,
validator_signer: Arc<dyn ValidatorSigner>,
) -> Client {
let mut config = ClientConfig::test(
Expand Down Expand Up @@ -1008,7 +1008,7 @@ pub fn setup_client_with_runtime(
rng_seed,
snapshot_callbacks,
Arc::new(RayonAsyncComputationSpawner),
state_witness_adapter,
partial_witness_adapter,
)
.unwrap();
client.sync_status = SyncStatus::NoSync;
Expand Down
Loading

0 comments on commit 2feec32

Please sign in to comment.