refactor(tvix/castore/import): restructure error types
Have ingest_entries return an Error type with only three kinds: - Error while uploading a specific Directory - Error while finalizing the directory upload - Error from the producer Move all ingestion method-specific errors to the individual implementations. Change-Id: I2a015cb7ebc96d084cbe2b809f40d1b53a15daf3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11557 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: Connor Brewster <cbrewster@hey.com>
This commit is contained in:
parent
77546d734e
commit
c9d3946cb5
7 changed files with 126 additions and 72 deletions
|
|
@ -1,39 +1,20 @@
|
|||
use std::{fs::FileType, path::PathBuf};
|
||||
use std::path::PathBuf;
|
||||
|
||||
use crate::Error as CastoreError;
|
||||
|
||||
/// Represents all error types that emitted by ingest_entries.
|
||||
/// It can represent errors uploading individual Directories and finalizing
|
||||
/// the upload.
|
||||
/// It also contains a generic error kind that'll carry ingestion-method
|
||||
/// specific errors.
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum Error {
|
||||
pub enum IngestionError<E: std::fmt::Display> {
|
||||
#[error("error from producer: {0}")]
|
||||
Producer(#[from] E),
|
||||
|
||||
#[error("failed to upload directory at {0}: {1}")]
|
||||
UploadDirectoryError(PathBuf, CastoreError),
|
||||
|
||||
#[error("invalid encoding encountered for entry {0:?}")]
|
||||
InvalidEncoding(PathBuf),
|
||||
|
||||
#[error("unable to stat {0}: {1}")]
|
||||
UnableToStat(PathBuf, std::io::Error),
|
||||
|
||||
#[error("unable to open {0}: {1}")]
|
||||
UnableToOpen(PathBuf, std::io::Error),
|
||||
|
||||
#[error("unable to read {0}: {1}")]
|
||||
UnableToRead(PathBuf, std::io::Error),
|
||||
|
||||
#[error("unsupported file {0} type: {1:?}")]
|
||||
UnsupportedFileType(PathBuf, FileType),
|
||||
}
|
||||
|
||||
impl From<CastoreError> for Error {
|
||||
fn from(value: CastoreError) -> Self {
|
||||
match value {
|
||||
CastoreError::InvalidRequest(_) => panic!("tvix bug"),
|
||||
CastoreError::StorageError(_) => panic!("error"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Error> for std::io::Error {
|
||||
fn from(value: Error) -> Self {
|
||||
std::io::Error::new(std::io::ErrorKind::Other, value)
|
||||
}
|
||||
#[error("failed to finalize directory upload: {0}")]
|
||||
FinalizeDirectoryUpload(CastoreError),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue