Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
adds ShredId uniquely identifying each shred
Browse files Browse the repository at this point in the history
  • Loading branch information
behzadnouri committed Dec 14, 2021
1 parent 033106e commit 4b237bb
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 79 deletions.
6 changes: 3 additions & 3 deletions core/src/retransmit_stage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use {
solana_ledger::{
blockstore::Blockstore,
leader_schedule_cache::LeaderScheduleCache,
shred::{Shred, ShredType},
shred::{Shred, ShredId},
},
solana_measure::measure::Measure,
solana_perf::packet::PacketBatch,
Expand Down Expand Up @@ -145,13 +145,13 @@ impl RetransmitStats {
}

// Map of shred (slot, index, type) => list of hash values seen for that key.
type ShredFilter = LruCache<(Slot, u32, ShredType), Vec<u64>>;
type ShredFilter = LruCache<ShredId, Vec<u64>>;

type ShredFilterAndHasher = (ShredFilter, PacketHasher);

// Returns true if shred is already received and should skip retransmit.
fn should_skip_retransmit(shred: &Shred, shreds_received: &Mutex<ShredFilterAndHasher>) -> bool {
let key = (shred.slot(), shred.index(), shred.shred_type());
let key = shred.id();
let mut shreds_received = shreds_received.lock().unwrap();
let (cache, hasher) = shreds_received.deref_mut();
match cache.get_mut(&key) {
Expand Down
9 changes: 3 additions & 6 deletions core/src/window_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -217,12 +217,9 @@ fn run_check_duplicate(
let check_duplicate = |shred: Shred| -> Result<()> {
let shred_slot = shred.slot();
if !blockstore.has_duplicate_shreds_in_slot(shred_slot) {
if let Some(existing_shred_payload) = blockstore.is_shred_duplicate(
shred_slot,
shred.index(),
shred.payload.clone(),
shred.shred_type(),
) {
if let Some(existing_shred_payload) =
blockstore.is_shred_duplicate(shred.id(), shred.payload.clone())
{
cluster_info.push_duplicate_shred(&shred, &existing_shred_payload)?;
blockstore.store_duplicate_slot(
shred_slot,
Expand Down
Loading

0 comments on commit 4b237bb

Please sign in to comment.