removes wallclock from duplicate-shreds handler (#30187)
This commit is contained in:
parent
5cbd6b3a74
commit
544fbded07
|
@ -1203,7 +1203,6 @@ impl ClusterInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns duplicate-shreds inserted since the given cursor.
|
/// Returns duplicate-shreds inserted since the given cursor.
|
||||||
#[allow(dead_code)]
|
|
||||||
pub(crate) fn get_duplicate_shreds(&self, cursor: &mut Cursor) -> Vec<DuplicateShred> {
|
pub(crate) fn get_duplicate_shreds(&self, cursor: &mut Cursor) -> Vec<DuplicateShred> {
|
||||||
let gossip_crds = self.gossip.crds.read().unwrap();
|
let gossip_crds = self.gossip.crds.read().unwrap();
|
||||||
gossip_crds
|
gossip_crds
|
||||||
|
|
|
@ -43,9 +43,12 @@ pub struct DuplicateShred {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DuplicateShred {
|
impl DuplicateShred {
|
||||||
|
#[inline]
|
||||||
pub(crate) fn num_chunks(&self) -> u8 {
|
pub(crate) fn num_chunks(&self) -> u8 {
|
||||||
self.num_chunks
|
self.num_chunks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub(crate) fn chunk_index(&self) -> u8 {
|
pub(crate) fn chunk_index(&self) -> u8 {
|
||||||
self.chunk_index
|
self.chunk_index
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,16 +31,14 @@ const MAX_PUBKEY_PER_SLOT: usize = 300;
|
||||||
|
|
||||||
struct ProofChunkMap {
|
struct ProofChunkMap {
|
||||||
num_chunks: u8,
|
num_chunks: u8,
|
||||||
wallclock: u64,
|
|
||||||
chunks: [Option<DuplicateShred>; MAX_NUM_CHUNKS],
|
chunks: [Option<DuplicateShred>; MAX_NUM_CHUNKS],
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ProofChunkMap {
|
impl ProofChunkMap {
|
||||||
fn new(num_chunks: u8, wallclock: u64) -> Self {
|
fn new(num_chunks: u8) -> Self {
|
||||||
Self {
|
Self {
|
||||||
num_chunks,
|
num_chunks,
|
||||||
chunks: <[Option<DuplicateShred>; MAX_NUM_CHUNKS]>::default(),
|
chunks: <[Option<DuplicateShred>; MAX_NUM_CHUNKS]>::default(),
|
||||||
wallclock,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -171,10 +169,7 @@ impl DuplicateShredHandler {
|
||||||
// Also skip frozen slots or slots with a different proof than me.
|
// Also skip frozen slots or slots with a different proof than me.
|
||||||
match self.chunk_map.get(&slot) {
|
match self.chunk_map.get(&slot) {
|
||||||
Some(SlotStatus::Frozen) => false,
|
Some(SlotStatus::Frozen) => false,
|
||||||
Some(SlotStatus::UnfinishedProof(slot_map)) => match slot_map.get(&data.from) {
|
Some(SlotStatus::UnfinishedProof(_)) => true,
|
||||||
None => true,
|
|
||||||
Some(proof_chunkmap) => proof_chunkmap.wallclock == data.wallclock,
|
|
||||||
},
|
|
||||||
None => true,
|
None => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -211,7 +206,7 @@ impl DuplicateShredHandler {
|
||||||
};
|
};
|
||||||
let proof_chunk_map = slot_chunk_map
|
let proof_chunk_map = slot_chunk_map
|
||||||
.entry(data.from)
|
.entry(data.from)
|
||||||
.or_insert_with(|| ProofChunkMap::new(data.num_chunks(), data.wallclock));
|
.or_insert_with(|| ProofChunkMap::new(data.num_chunks()));
|
||||||
if data.num_chunks() != proof_chunk_map.num_chunks
|
if data.num_chunks() != proof_chunk_map.num_chunks
|
||||||
|| data.chunk_index() >= proof_chunk_map.num_chunks
|
|| data.chunk_index() >= proof_chunk_map.num_chunks
|
||||||
{
|
{
|
||||||
|
@ -468,7 +463,7 @@ mod tests {
|
||||||
None,
|
None,
|
||||||
start_slot,
|
start_slot,
|
||||||
None,
|
None,
|
||||||
DUPLICATE_SHRED_MAX_PAYLOAD_SIZE,
|
DUPLICATE_SHRED_MAX_PAYLOAD_SIZE * 2,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
for chunk in chunks1 {
|
for chunk in chunks1 {
|
||||||
|
|
Loading…
Reference in New Issue