blockstore: use u32 for fec_set_index in erasure set index store key (#34268)

* blockstore: use u32 for fec_set_index in erasure set index store key

* pr feedback u64::from
This commit is contained in:
Ashwin Sekar 2023-11-30 19:17:49 -05:00 committed by GitHub
parent 18309ba8da
commit d84dcd37bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 12 deletions

View File

@ -464,11 +464,12 @@ impl Blockstore {
}
fn erasure_meta(&self, erasure_set: ErasureSetId) -> Result<Option<ErasureMeta>> {
self.erasure_meta_cf.get(erasure_set.store_key())
let (slot, fec_set_index) = erasure_set.store_key();
self.erasure_meta_cf.get((slot, u64::from(fec_set_index)))
}
fn merkle_root_meta(&self, erasure_set: ErasureSetId) -> Result<Option<MerkleRootMeta>> {
self.merkle_root_meta_cf.get(erasure_set.key())
self.merkle_root_meta_cf.get(erasure_set.store_key())
}
/// Check whether the specified slot is an orphan slot which does not
@ -1018,11 +1019,12 @@ impl Blockstore {
)?;
for (erasure_set, erasure_meta) in erasure_metas {
write_batch.put::<cf::ErasureMeta>(erasure_set.store_key(), &erasure_meta)?;
let (slot, fec_set_index) = erasure_set.store_key();
write_batch.put::<cf::ErasureMeta>((slot, u64::from(fec_set_index)), &erasure_meta)?;
}
for (erasure_set, merkle_root_meta) in merkle_root_metas {
write_batch.put::<cf::MerkleRootMeta>(erasure_set.key(), &merkle_root_meta)?;
write_batch.put::<cf::MerkleRootMeta>(erasure_set.store_key(), &merkle_root_meta)?;
}
for (&slot, index_working_set_entry) in index_working_set.iter() {
@ -6828,7 +6830,7 @@ pub mod tests {
for (erasure_set, merkle_root_meta) in merkle_root_metas {
write_batch
.put::<cf::MerkleRootMeta>(erasure_set.key(), &merkle_root_meta)
.put::<cf::MerkleRootMeta>(erasure_set.store_key(), &merkle_root_meta)
.unwrap();
}
blockstore.db.write(write_batch).unwrap();
@ -7008,7 +7010,7 @@ pub mod tests {
for (erasure_set, merkle_root_meta) in merkle_root_metas {
write_batch
.put::<cf::MerkleRootMeta>(erasure_set.key(), &merkle_root_meta)
.put::<cf::MerkleRootMeta>(erasure_set.store_key(), &merkle_root_meta)
.unwrap();
}
blockstore.db.write(write_batch).unwrap();

View File

@ -283,12 +283,9 @@ impl ErasureSetId {
self.0
}
// Storage key for ErasureMeta in blockstore db.
pub(crate) fn store_key(&self) -> (Slot, /*fec_set_index:*/ u64) {
(self.0, u64::from(self.1))
}
pub(crate) fn key(&self) -> (Slot, /*fec_set_index:*/ u32) {
// Storage key for ErasureMeta and MerkleRootMeta in blockstore db.
// Note: ErasureMeta column uses u64 so this will need to be typecast
pub(crate) fn store_key(&self) -> (Slot, /*fec_set_index:*/ u32) {
(self.0, self.1)
}
}