Skip to content

Commit 47bf032

Browse files
committed
fix(pegboard): purge runner config cache on update
1 parent 2593d97 commit 47bf032

File tree

3 files changed

+37
-9
lines changed

3 files changed

+37
-9
lines changed

packages/core/api-public/src/runner_configs/delete.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,23 @@ async fn delete_inner(
6767
}
6868
}
6969

70+
// Resolve namespace
71+
let namespace = ctx
72+
.op(namespace::ops::resolve_for_name_global::Input {
73+
name: query.namespace.clone(),
74+
})
75+
.await?
76+
.ok_or_else(|| namespace::errors::Namespace::NotFound.build())?;
77+
78+
// Purge cache
79+
ctx.cache()
80+
.clone()
81+
.request()
82+
.purge(
83+
"namespace.runner_config.get",
84+
vec![(namespace.namespace_id, path.runner_name.clone())],
85+
)
86+
.await?;
87+
7088
Ok(DeleteResponse {})
7189
}

packages/core/api-public/src/runner_configs/upsert.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,18 @@ async fn upsert_inner(
125125
}
126126
}
127127

128+
// Resolve namespace
129+
let namespace = ctx
130+
.op(namespace::ops::resolve_for_name_global::Input {
131+
name: query.namespace.clone(),
132+
})
133+
.await?
134+
.ok_or_else(|| namespace::errors::Namespace::NotFound.build())?;
135+
128136
// Update runner metadata
129137
//
130138
// This allows us to populate the actor names immediately upon configuring a serverless runner
131139
if let Some((url, metadata_headers)) = serverless_config {
132-
// Resolve namespace
133-
let namespace = ctx
134-
.op(namespace::ops::resolve_for_name_global::Input {
135-
name: query.namespace.clone(),
136-
})
137-
.await?
138-
.ok_or_else(|| namespace::errors::Namespace::NotFound.build())?;
139-
140140
if let Err(err) = utils::refresh_runner_config_metadata(
141141
ctx.clone(),
142142
namespace.namespace_id,
@@ -150,5 +150,15 @@ async fn upsert_inner(
150150
}
151151
}
152152

153+
// Purge cache
154+
ctx.cache()
155+
.clone()
156+
.request()
157+
.purge(
158+
"namespace.runner_config.get",
159+
vec![(namespace.namespace_id, path.runner_name.clone())],
160+
)
161+
.await?;
162+
153163
Ok(UpsertResponse {})
154164
}

packages/core/guard/core/src/proxy_service.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,7 @@ impl ProxyService {
945945
if !err.is_connect() || attempts >= max_attempts {
946946
tracing::error!(?err, "Request error after {} attempts", attempts);
947947
return Err(errors::UpstreamError(
948-
"failed to connect to runner. Make sure your runners are healthy and the provided runner address is reachable by Rivet."
948+
"Failed to connect to runner. Make sure your runners are healthy and do not have any crash logs."
949949
.to_string(),
950950
)
951951
.build());

0 commit comments

Comments
 (0)