summaryrefslogtreecommitdiffstats
path: root/src/swarm/peer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/swarm/peer.rs')
-rw-r--r--src/swarm/peer.rs63
1 files changed, 30 insertions, 33 deletions
diff --git a/src/swarm/peer.rs b/src/swarm/peer.rs
index 6184427..53a4731 100644
--- a/src/swarm/peer.rs
+++ b/src/swarm/peer.rs
@@ -1,5 +1,5 @@
//! Peers: handshake (HELLO / HELLO_REPLY), liveness and keepalives, self-healing,
-//! cluster-wide forget records, and dispatch of inbound messages.
+//! swarm-wide forget records, and dispatch of inbound messages.
use std::sync::Arc;
use std::time::Duration;
@@ -70,7 +70,7 @@ async fn apply_forget_records(state: &AppState) {
if alive {
cancel.push(pk);
} else if state.peer_states.write().await.remove(&pk).is_some() {
- info!(peer = %pk, "Forgetting peer per cluster-wide record");
+ info!(peer = %pk, "Forgetting peer per swarm-wide record");
}
}
@@ -84,7 +84,7 @@ async fn apply_forget_records(state: &AppState) {
.mutate_doc(move |doc| {
for pk in &cancel {
match store::delete_path(&mut *doc, &forgotten_path(pk), false) {
- Ok(()) => info!(peer = %pk, "Peer is alive; cancelling cluster-wide forget"),
+ Ok(()) => info!(peer = %pk, "Peer is alive; cancelling swarm-wide forget"),
Err(StoreError::NotFound) => {}
Err(error) => {
warn!(peer = %pk, error = %error, "Failed to cancel forget record")
@@ -267,10 +267,10 @@ async fn ensure_handshake(state: &AppState, peer: &str) {
}
}
-/// Sends a HELLO_REPLY if one is owed and our cluster ID is known.
+/// Sends a HELLO_REPLY if one is owed and our swarm ID is known.
/// Otherwise it stays owed and the peer worker tries again.
async fn send_owed_hello_reply(state: &AppState, peer: &str) {
- if state.cluster_id().await.is_none() {
+ if state.swarm_id().await.is_none() {
return;
}
@@ -297,10 +297,10 @@ async fn flush_owed_hello_replies(state: &AppState) {
}
async fn send_hello_reply(state: &AppState, peer: &str) -> Result<()> {
- let cluster_id = state
- .cluster_id()
+ let swarm_id = state
+ .swarm_id()
.await
- .ok_or_else(|| anyhow!("Cannot send HELLO_REPLY without an established cluster ID"))?;
+ .ok_or_else(|| anyhow!("Cannot send HELLO_REPLY without an established swarm ID"))?;
let candidates: Vec<(String, Arc<Mutex<PeerState>>)> = state
.peer_states
@@ -322,7 +322,7 @@ async fn send_hello_reply(state: &AppState, peer: &str) -> Result<()> {
}
let reply = transport::HelloReply {
- cluster_id,
+ swarm_id,
peers,
epoch: state.local_epoch(),
};
@@ -441,16 +441,16 @@ pub(crate) async fn run_peer_worker(state: AppState) {
async fn establish_peer(
state: &AppState,
peer: &str,
- cluster_id: String,
+ swarm_id: String,
) -> Result<Vec<transport::SyncEnvelope>> {
- let expected_cluster = state.cluster_id().await;
+ let expected_swarm = state.swarm_id().await;
- if let Some(expected) = &expected_cluster {
- if expected != &cluster_id {
+ if let Some(expected) = &expected_swarm {
+ if expected != &swarm_id {
bail!(
- "Incompatible cluster at {peer}: expected {}, received {}",
+ "Incompatible swarm at {peer}: expected {}, received {}",
expected,
- cluster_id
+ swarm_id
);
}
}
@@ -458,27 +458,24 @@ async fn establish_peer(
let peer_state_mutex = state.get_or_create_peer_state(peer).await;
let mut peer_state = peer_state_mutex.lock().await;
- if let PeerMembership::Member {
- cluster_id: existing,
- } = &peer_state.membership
- {
- if existing != &cluster_id {
+ if let PeerMembership::Member { swarm_id: existing } = &peer_state.membership {
+ if existing != &swarm_id {
bail!(
- "Peer {peer} changed cluster identity from {} to {}",
+ "Peer {peer} changed swarm identity from {} to {}",
existing,
- cluster_id
+ swarm_id
);
}
}
// Lock order: peer mutex -> lifecycle.
- if expected_cluster.is_none() {
- state.set_expected_cluster_id(cluster_id.clone()).await?;
+ if expected_swarm.is_none() {
+ state.set_expected_swarm_id(swarm_id.clone()).await?;
}
if matches!(peer_state.membership, PeerMembership::Unknown) {
peer_state.membership = PeerMembership::Member {
- cluster_id: cluster_id.clone(),
+ swarm_id: swarm_id.clone(),
};
}
@@ -492,17 +489,17 @@ async fn establish_peer(
let pending = std::mem::take(&mut peer_state.pending_inbound_sync);
- info!(peer = %peer, cluster_id = %cluster_id, pending_messages = pending.len(), "Peer membership established");
+ info!(peer = %peer, swarm_id = %swarm_id, pending_messages = pending.len(), "Peer membership established");
Ok(pending)
}
#[instrument(skip(state), fields(peer = %peer))]
-pub(crate) async fn peer_cluster(state: &AppState, peer: &str) -> Option<String> {
+pub(crate) async fn peer_swarm(state: &AppState, peer: &str) -> Option<String> {
let peer_state_mutex = state.get_peer_state(peer).await?;
let peer_state = peer_state_mutex.lock().await;
match &peer_state.membership {
PeerMembership::Unknown => None,
- PeerMembership::Member { cluster_id } => Some(cluster_id.clone()),
+ PeerMembership::Member { swarm_id } => Some(swarm_id.clone()),
}
}
@@ -607,7 +604,7 @@ pub(crate) async fn handle_message(
peer_state.reply_owed = true;
}
- // Sends now if we know our cluster ID; otherwise stays owed.
+ // Sends now if we know our swarm ID; otherwise stays owed.
send_owed_hello_reply(state, &peer).await;
// Our own HELLO goes out regardless of whether the reply could be sent.
@@ -621,11 +618,11 @@ pub(crate) async fn handle_message(
.send(SyncEvent::PeerNeedsSync(peer.clone()));
}
transport::ParsedMessage::HelloReply(reply) => {
- let pending = establish_peer(state, &peer, reply.cluster_id.clone()).await?;
+ let pending = establish_peer(state, &peer, reply.swarm_id.clone()).await?;
discover_peers(state, &peer, &reply.peers).await;
- // Our cluster ID may have just become known: pay any replies we owe.
+ // Our swarm ID may have just become known: pay any replies we owe.
flush_owed_hello_replies(state).await;
if !pending.is_empty() {
@@ -657,7 +654,7 @@ pub(crate) async fn handle_message(
handle_sync(state, &peer, envelope).await?;
}
transport::ParsedMessage::Ping(remote) => {
- if reactivated || peer_cluster(state, &peer).await.is_none() {
+ if reactivated || peer_swarm(state, &peer).await.is_none() {
ensure_handshake(state, &peer).await;
}
let local = local_keepalive(state).await;
@@ -671,7 +668,7 @@ pub(crate) async fn handle_message(
}
}
transport::ParsedMessage::Pong(remote) => {
- if reactivated || peer_cluster(state, &peer).await.is_none() {
+ if reactivated || peer_swarm(state, &peer).await.is_none() {
ensure_handshake(state, &peer).await;
}
let local = local_keepalive(state).await;