feat: get BlockMeta table values from static file or database (#13844)

This commit is contained in:
joshieDo
2025-01-20 11:18:50 +00:00
committed by GitHub
parent f28c71c006
commit f527b5a60d
5 changed files with 70 additions and 30 deletions

View File

@ -562,14 +562,29 @@ impl<N: ProviderNodeTypes> BlockBodyIndicesProvider for ProviderFactory<N> {
&self,
number: BlockNumber,
) -> ProviderResult<Option<StoredBlockBodyIndices>> {
self.provider()?.block_body_indices(number)
self.static_file_provider.get_with_static_file_or_database(
StaticFileSegment::BlockMeta,
number,
|static_file| static_file.block_body_indices(number),
|| self.provider()?.block_body_indices(number),
)
}
fn block_body_indices_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<StoredBlockBodyIndices>> {
self.provider()?.block_body_indices_range(range)
self.static_file_provider.get_range_with_static_file_or_database(
StaticFileSegment::BlockMeta,
*range.start()..*range.end() + 1,
|static_file, range, _| {
static_file.block_body_indices_range(range.start..=range.end.saturating_sub(1))
},
|range, _| {
self.provider()?.block_body_indices_range(range.start..=range.end.saturating_sub(1))
},
|_| true,
)
}
}