Phase 2c (0.6.1-beta): route engagement diffs through file_holders
propagate_engagement_diff now targets the post's flat holder set (up to 5 most-recent) instead of the post_downstream directional tree. The holder set naturally subsumes the old upstream+downstream partition, so the separate "also send to upstreams" loops at each engagement call site are removed (reactions, comments, comment edit/delete, receipt slots, comment slots). handle_blob_header_diff on receive: - records the sending peer as a file holder (an engagement exchange is proof the peer holds the post) - re-propagates to the holder set minus the sender Writes to post_upstream / post_downstream still occur from Phase 2b (dual-write); those and the legacy tables will be removed in 2e. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0b2b4f5a68
commit
3a0d2e93ab
3 changed files with 28 additions and 77 deletions
|
|
@ -3585,15 +3585,9 @@ impl Node {
|
|||
ops: vec![crate::types::BlobHeaderDiffOp::AddReaction(reaction.clone())],
|
||||
timestamp_ms: now,
|
||||
};
|
||||
// propagate_engagement_diff targets all file_holders (flat set, max 5)
|
||||
// which already subsumes what used to be upstream + downstream.
|
||||
network.propagate_engagement_diff(&post_id, &diff, &our_node_id).await;
|
||||
// Also send to all upstreams (toward author) — Phase 6 multi-upstream
|
||||
let upstreams = {
|
||||
let storage = self.storage.get().await;
|
||||
storage.get_post_upstreams(&post_id).unwrap_or_default()
|
||||
};
|
||||
for (up, _prio) in upstreams {
|
||||
let _ = network.send_to_peer_uni(&up, crate::protocol::MessageType::BlobHeaderDiff, &diff).await;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(reaction)
|
||||
|
|
@ -3700,14 +3694,6 @@ impl Node {
|
|||
timestamp_ms: now,
|
||||
};
|
||||
network.propagate_engagement_diff(&post_id, &diff, &our_node_id).await;
|
||||
// Also send to all upstreams (toward author) — Phase 6 multi-upstream
|
||||
let upstreams = {
|
||||
let storage = self.storage.get().await;
|
||||
storage.get_post_upstreams(&post_id).unwrap_or_default()
|
||||
};
|
||||
for (up, _prio) in upstreams {
|
||||
let _ = network.send_to_peer_uni(&up, crate::protocol::MessageType::BlobHeaderDiff, &diff).await;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(comment)
|
||||
|
|
@ -3744,14 +3730,6 @@ impl Node {
|
|||
timestamp_ms: now,
|
||||
};
|
||||
network.propagate_engagement_diff(&post_id, &diff, &our_node_id).await;
|
||||
// Phase 6: send to all upstreams
|
||||
let upstreams = {
|
||||
let storage = self.storage.get().await;
|
||||
storage.get_post_upstreams(&post_id).unwrap_or_default()
|
||||
};
|
||||
for (up, _prio) in upstreams {
|
||||
let _ = network.send_to_peer_uni(&up, crate::protocol::MessageType::BlobHeaderDiff, &diff).await;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -3785,14 +3763,6 @@ impl Node {
|
|||
timestamp_ms: now,
|
||||
};
|
||||
network.propagate_engagement_diff(&post_id, &diff, &our_node_id).await;
|
||||
// Phase 6: send to all upstreams
|
||||
let upstreams = {
|
||||
let storage = self.storage.get().await;
|
||||
storage.get_post_upstreams(&post_id).unwrap_or_default()
|
||||
};
|
||||
for (up, _prio) in upstreams {
|
||||
let _ = network.send_to_peer_uni(&up, crate::protocol::MessageType::BlobHeaderDiff, &diff).await;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -4014,14 +3984,6 @@ impl Node {
|
|||
timestamp_ms: now,
|
||||
};
|
||||
self.network.propagate_engagement_diff(&post_id, &diff, &self.node_id).await;
|
||||
// Phase 6: send to all upstreams
|
||||
let upstreams = {
|
||||
let storage = self.storage.get().await;
|
||||
storage.get_post_upstreams(&post_id).unwrap_or_default()
|
||||
};
|
||||
for (up, _prio) in upstreams {
|
||||
let _ = self.network.send_to_peer_uni(&up, crate::protocol::MessageType::BlobHeaderDiff, &diff).await;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -4136,14 +4098,6 @@ impl Node {
|
|||
timestamp_ms: now,
|
||||
};
|
||||
self.network.propagate_engagement_diff(&post_id, &diff, &self.node_id).await;
|
||||
// Phase 6: send to all upstreams
|
||||
let upstreams = {
|
||||
let storage = self.storage.get().await;
|
||||
storage.get_post_upstreams(&post_id).unwrap_or_default()
|
||||
};
|
||||
for (up, _prio) in upstreams {
|
||||
let _ = self.network.send_to_peer_uni(&up, crate::protocol::MessageType::BlobHeaderDiff, &diff).await;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue