From b9dcd49b0cfacf64e198d4b35b209e34cd96db83 Mon Sep 17 00:00:00 2001 From: MasterPtato Date: Wed, 4 Jun 2025 00:34:30 +0000 Subject: [PATCH] fix: fix build cache key --- packages/core/services/build/Cargo.toml | 1 + .../build/src/ops/resolve_for_tags.rs | 24 +++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/core/services/build/Cargo.toml b/packages/core/services/build/Cargo.toml index 82a824a9b0..a9997d0387 100644 --- a/packages/core/services/build/Cargo.toml +++ b/packages/core/services/build/Cargo.toml @@ -9,6 +9,7 @@ edition.workspace = true acme-lib = "0.9" anyhow = "1.0" chirp-workflow.workspace = true +cjson = "0.1" cloudflare.workspace = true heck = "0.3" http = "0.2" diff --git a/packages/core/services/build/src/ops/resolve_for_tags.rs b/packages/core/services/build/src/ops/resolve_for_tags.rs index f8d1f673b4..2ea49b6121 100644 --- a/packages/core/services/build/src/ops/resolve_for_tags.rs +++ b/packages/core/services/build/src/ops/resolve_for_tags.rs @@ -19,7 +19,7 @@ pub struct Output { #[operation] pub async fn build_resolve_for_tags(ctx: &OperationCtx, input: &Input) -> GlobalResult { - let tags_str = serde_json::to_string(&input.tags)?; + let tags_str = unwrap!(cjson::to_string(&input.tags)); let builds = if input.bypass_cache { get_builds(&ctx, input.env_id, &tags_str).await? @@ -27,21 +27,25 @@ pub async fn build_resolve_for_tags(ctx: &OperationCtx, input: &Input) -> Global unwrap!( ctx.cache() .ttl(util::duration::seconds(15)) - .fetch_one_json("build", tags_str.as_str(), { - let ctx = ctx.clone(); - let tags_str = tags_str.clone(); - move |mut cache, key| { + .fetch_one_json( + "build", + format!("{}:{}", input.env_id, tags_str.as_str()), + { let ctx = ctx.clone(); let tags_str = tags_str.clone(); - async move { - let builds = get_builds(&ctx, input.env_id, &tags_str).await?; + move |mut cache, key| { + let ctx = ctx.clone(); + let tags_str = tags_str.clone(); + async move { + let builds = get_builds(&ctx, input.env_id, &tags_str).await?; - cache.resolve(&key, builds); + cache.resolve(&key, builds); - Ok(cache) + Ok(cache) + } } } - }) + ) .await? ) };