Add new error type -- TieredStorageError (#31633)
#### Summary of Changes This PR adds a new error type for the tiered storage.
This commit is contained in:
parent
a474cb24b9
commit
174951478f
|
@ -5,6 +5,7 @@ use {
|
|||
},
|
||||
append_vec::{AppendVec, MatchAccountOwnerError},
|
||||
storable_accounts::StorableAccounts,
|
||||
tiered_storage::error::TieredStorageError,
|
||||
},
|
||||
solana_sdk::{account::ReadableAccount, clock::Slot, hash::Hash, pubkey::Pubkey},
|
||||
std::{
|
||||
|
@ -30,6 +31,9 @@ macro_rules! u64_align {
|
|||
pub enum AccountsFileError {
|
||||
#[error("I/O error: {0}")]
|
||||
Io(#[from] std::io::Error),
|
||||
|
||||
#[error("TieredStorageError: {0}")]
|
||||
TieredStorageError(#[from] TieredStorageError),
|
||||
}
|
||||
|
||||
pub type Result<T> = std::result::Result<T, AccountsFileError>;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
pub mod error;
|
||||
pub mod file;
|
||||
pub mod footer;
|
||||
pub mod mmap_utils;
|
||||
|
||||
use crate::tiered_storage::error::TieredStorageError;
|
||||
|
||||
pub type TieredStorageResult<T> = Result<T, TieredStorageError>;
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum TieredStorageError {
|
||||
#[error("I/O error: {0}")]
|
||||
Io(#[from] std::io::Error),
|
||||
|
||||
#[error("MagicNumberMismatch: expected {0}, found {1}")]
|
||||
MagicNumberMismatch(u64, u64),
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
use {
|
||||
crate::tiered_storage::{file::TieredStorageFile, mmap_utils::get_type},
|
||||
crate::tiered_storage::{
|
||||
error::TieredStorageError, file::TieredStorageFile, mmap_utils::get_type,
|
||||
TieredStorageResult as TsResult,
|
||||
},
|
||||
memmap2::Mmap,
|
||||
solana_sdk::{hash::Hash, pubkey::Pubkey},
|
||||
std::{mem, path::Path},
|
||||
|
@ -186,19 +189,19 @@ impl Default for TieredStorageFooter {
|
|||
}
|
||||
|
||||
impl TieredStorageFooter {
|
||||
pub fn new_from_path(path: impl AsRef<Path>) -> std::io::Result<Self> {
|
||||
pub fn new_from_path(path: impl AsRef<Path>) -> TsResult<Self> {
|
||||
let file = TieredStorageFile::new_readonly(path);
|
||||
Self::new_from_footer_block(&file)
|
||||
}
|
||||
|
||||
pub fn write_footer_block(&self, file: &TieredStorageFile) -> std::io::Result<()> {
|
||||
pub fn write_footer_block(&self, file: &TieredStorageFile) -> TsResult<()> {
|
||||
file.write_type(self)?;
|
||||
file.write_type(&TieredStorageMagicNumber::default())?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn new_from_footer_block(file: &TieredStorageFile) -> std::io::Result<Self> {
|
||||
pub fn new_from_footer_block(file: &TieredStorageFile) -> TsResult<Self> {
|
||||
let mut footer_size: u64 = 0;
|
||||
let mut footer_version: u64 = 0;
|
||||
let mut magic_number = TieredStorageMagicNumber(0);
|
||||
|
@ -209,9 +212,9 @@ impl TieredStorageFooter {
|
|||
file.read_type(&mut magic_number)?;
|
||||
|
||||
if magic_number != TieredStorageMagicNumber::default() {
|
||||
return Err(std::io::Error::new(
|
||||
std::io::ErrorKind::Other,
|
||||
"TieredStorageError: Magic mumber mismatch",
|
||||
return Err(TieredStorageError::MagicNumberMismatch(
|
||||
TieredStorageMagicNumber::default().0,
|
||||
magic_number.0,
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -222,16 +225,16 @@ impl TieredStorageFooter {
|
|||
Ok(footer)
|
||||
}
|
||||
|
||||
pub fn new_from_mmap(map: &Mmap) -> std::io::Result<&TieredStorageFooter> {
|
||||
pub fn new_from_mmap(map: &Mmap) -> TsResult<&TieredStorageFooter> {
|
||||
let offset = map.len().saturating_sub(FOOTER_TAIL_SIZE);
|
||||
let (footer_size, offset) = get_type::<u64>(map, offset)?;
|
||||
let (_footer_version, offset) = get_type::<u64>(map, offset)?;
|
||||
let (magic_number, _offset) = get_type::<TieredStorageMagicNumber>(map, offset)?;
|
||||
|
||||
if *magic_number != TieredStorageMagicNumber::default() {
|
||||
return Err(std::io::Error::new(
|
||||
std::io::ErrorKind::Other,
|
||||
"TieredStorageError: Magic mumber mismatch",
|
||||
return Err(TieredStorageError::MagicNumberMismatch(
|
||||
TieredStorageMagicNumber::default().0,
|
||||
magic_number.0,
|
||||
));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue