Error handling

This commit is contained in:
Eelco Dolstra 2023-12-14 21:35:50 +01:00
parent 08cc0812bf
commit f757190c3b
5 changed files with 11 additions and 8 deletions

1
Cargo.lock generated
View file

@ -1314,6 +1314,7 @@ dependencies = [
name = "magic-nix-cache" name = "magic-nix-cache"
version = "0.1.1" version = "0.1.1"
dependencies = [ dependencies = [
"anyhow",
"attic", "attic",
"attic-client", "attic-client",
"axum", "axum",

View file

@ -29,6 +29,7 @@ attic = { git = "ssh://git@github.com/DeterminateSystems/attic-priv", branch = "
attic-client = { git = "ssh://git@github.com/DeterminateSystems/attic-priv", branch = "main" } attic-client = { git = "ssh://git@github.com/DeterminateSystems/attic-priv", branch = "main" }
#attic-client = { path = "../../attic-priv/client" } #attic-client = { path = "../../attic-priv/client" }
indicatif = "0.17" indicatif = "0.17"
anyhow = "1.0.71"
[dependencies.tokio] [dependencies.tokio]
version = "1.28.0" version = "1.28.0"

View file

@ -119,9 +119,7 @@ async fn enqueue_paths(
.collect(); .collect();
if let Some(flakehub_state) = &*state.flakehub_state.read().await { if let Some(flakehub_state) = &*state.flakehub_state.read().await {
crate::flakehub::enqueue_paths(flakehub_state, store_paths) crate::flakehub::enqueue_paths(flakehub_state, store_paths).await?;
.await
.unwrap();
} }
Ok(Json(EnqueuePathsResponse {})) Ok(Json(EnqueuePathsResponse {}))

View file

@ -27,6 +27,9 @@ pub enum Error {
#[error("GHA cache is disabled")] #[error("GHA cache is disabled")]
GHADisabled, GHADisabled,
#[error("FlakeHub cache error: {0}")]
FlakeHub(anyhow::Error),
} }
impl IntoResponse for Error { impl IntoResponse for Error {

View file

@ -1,4 +1,4 @@
use crate::error::Result; use crate::error::{Error, Result};
use attic::api::v1::cache_config::{CreateCacheRequest, KeypairConfig}; use attic::api::v1::cache_config::{CreateCacheRequest, KeypairConfig};
use attic::cache::CacheSliceIdentifier; use attic::cache::CacheSliceIdentifier;
use attic::nix_store::{NixStore, StorePath}; use attic::nix_store::{NixStore, StorePath};
@ -20,8 +20,6 @@ const JWT_PREFIX: &str = "flakehub1_";
const USER_AGENT: &str = "magic-nix-cache"; const USER_AGENT: &str = "magic-nix-cache";
pub struct State { pub struct State {
cache: CacheSliceIdentifier,
pub substituter: String, pub substituter: String,
pub push_session: PushSession, pub push_session: PushSession,
@ -250,14 +248,16 @@ pub async fn init_cache(
}); });
Ok(State { Ok(State {
cache,
substituter: flakehub_cache_server.to_owned(), substituter: flakehub_cache_server.to_owned(),
push_session, push_session,
}) })
} }
pub async fn enqueue_paths(state: &State, store_paths: Vec<StorePath>) -> Result<()> { pub async fn enqueue_paths(state: &State, store_paths: Vec<StorePath>) -> Result<()> {
state.push_session.queue_many(store_paths).unwrap(); state
.push_session
.queue_many(store_paths)
.map_err(Error::FlakeHub)?;
Ok(()) Ok(())
} }