Skip to content

Commit 0450e30

Browse files
committed
feat(pegboard): move pegboard serverless to wf (#3416)
Fixes RVT-5269
1 parent 5f541af commit 0450e30

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1252
-907
lines changed

Cargo.lock

Lines changed: 3 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
[workspace]
33
resolver = "2"
4-
members = ["engine/packages/actor-kv","engine/packages/api-builder","engine/packages/api-peer","engine/packages/api-public","engine/packages/api-types","engine/packages/api-util","engine/packages/bootstrap","engine/packages/cache","engine/packages/cache-purge","engine/packages/cache-result","engine/packages/clickhouse-inserter","engine/packages/clickhouse-user-query","engine/packages/config","engine/packages/dump-openapi","engine/packages/engine","engine/packages/env","engine/packages/epoxy","engine/packages/error","engine/packages/error-macros","engine/packages/gasoline","engine/packages/gasoline-macros","engine/packages/guard","engine/packages/guard-core","engine/packages/internal","engine/packages/logs","engine/packages/metrics","engine/packages/namespace","engine/packages/pegboard","engine/packages/pegboard-gateway","engine/packages/pegboard-runner","engine/packages/pegboard-serverless","engine/packages/pools","engine/packages/runtime","engine/packages/service-manager","engine/packages/telemetry","engine/packages/test-deps","engine/packages/test-deps-docker","engine/packages/tracing-reconfigure","engine/packages/types","engine/packages/universaldb","engine/packages/universalpubsub","engine/packages/util","engine/packages/util-id","engine/packages/workflow-worker","engine/sdks/rust/api-full","engine/sdks/rust/data","engine/sdks/rust/epoxy-protocol","engine/sdks/rust/runner-protocol","engine/sdks/rust/ups-protocol"]
4+
members = ["engine/packages/actor-kv","engine/packages/api-builder","engine/packages/api-peer","engine/packages/api-public","engine/packages/api-types","engine/packages/api-util","engine/packages/bootstrap","engine/packages/cache","engine/packages/cache-purge","engine/packages/cache-result","engine/packages/clickhouse-inserter","engine/packages/clickhouse-user-query","engine/packages/config","engine/packages/dump-openapi","engine/packages/engine","engine/packages/env","engine/packages/epoxy","engine/packages/error","engine/packages/error-macros","engine/packages/gasoline","engine/packages/gasoline-macros","engine/packages/guard","engine/packages/guard-core","engine/packages/logs","engine/packages/metrics","engine/packages/namespace","engine/packages/pegboard","engine/packages/pegboard-gateway","engine/packages/pegboard-runner","engine/packages/pools","engine/packages/runtime","engine/packages/service-manager","engine/packages/telemetry","engine/packages/test-deps","engine/packages/test-deps-docker","engine/packages/tracing-reconfigure","engine/packages/types","engine/packages/universaldb","engine/packages/universalpubsub","engine/packages/util","engine/packages/util-id","engine/packages/workflow-worker","engine/sdks/rust/api-full","engine/sdks/rust/data","engine/sdks/rust/epoxy-protocol","engine/sdks/rust/runner-protocol","engine/sdks/rust/ups-protocol"]
55

66
[workspace.package]
77
version = "2.0.25"
@@ -333,9 +333,6 @@ path = "engine/packages/guard"
333333
[workspace.dependencies.rivet-guard-core]
334334
path = "engine/packages/guard-core"
335335

336-
[workspace.dependencies.internal]
337-
path = "engine/packages/internal"
338-
339336
[workspace.dependencies.rivet-logs]
340337
path = "engine/packages/logs"
341338

@@ -354,9 +351,6 @@ path = "engine/packages/pegboard-gateway"
354351
[workspace.dependencies.pegboard-runner]
355352
path = "engine/packages/pegboard-runner"
356353

357-
[workspace.dependencies.pegboard-serverless]
358-
path = "engine/packages/pegboard-serverless"
359-
360354
[workspace.dependencies.rivet-pools]
361355
path = "engine/packages/pools"
362356

engine/artifacts/errors/serverless_runner_pool.not_found.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/artifacts/openapi.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/packages/api-peer/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ serde.workspace = true
2424
serde_json.workspace = true
2525
indexmap.workspace = true
2626

27-
tokio.workspace = true
28-
tracing.workspace = true
2927
namespace.workspace = true
3028
pegboard.workspace = true
3129
pegboard-actor-kv.workspace = true
30+
tokio.workspace = true
31+
tracing.workspace = true
3232
universalpubsub.workspace = true
3333
uuid.workspace = true
3434
utoipa.workspace = true

engine/packages/api-peer/src/internal.rs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,6 @@ pub async fn cache_purge(
2929
Ok(CachePurgeResponse {})
3030
}
3131

32-
#[derive(Serialize)]
33-
#[serde(deny_unknown_fields)]
34-
pub struct BumpServerlessAutoscalerResponse {}
35-
36-
pub async fn bump_serverless_autoscaler(
37-
ctx: ApiCtx,
38-
_path: (),
39-
_query: (),
40-
_body: (),
41-
) -> Result<BumpServerlessAutoscalerResponse> {
42-
ctx.msg(rivet_types::msgs::pegboard::BumpServerlessAutoscaler {})
43-
.send()
44-
.await?;
45-
46-
Ok(BumpServerlessAutoscalerResponse {})
47-
}
48-
4932
#[derive(Serialize, Deserialize)]
5033
#[serde(deny_unknown_fields)]
5134
pub struct SetTracingConfigRequest {

engine/packages/api-peer/src/router.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ pub async fn router(
3535
.route("/runners/names", get(runners::list_names))
3636
// MARK: Internal
3737
.route("/cache/purge", post(internal::cache_purge))
38-
.route(
39-
"/bump-serverless-autoscaler",
40-
post(internal::bump_serverless_autoscaler),
41-
)
4238
.route(
4339
"/epoxy/coordinator/replica-reconfigure",
4440
post(internal::epoxy_replica_reconfigure),

engine/packages/api-peer/src/runner_configs.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pub async fn list(ctx: ApiCtx, _path: ListPath, query: ListQuery) -> Result<List
2626

2727
if !runner_names.is_empty() {
2828
let runner_configs = ctx
29-
.op(namespace::ops::runner_config::get::Input {
29+
.op(pegboard::ops::runner_config::get::Input {
3030
runners: runner_names
3131
.into_iter()
3232
.map(|name| (namespace.namespace_id, name))
@@ -63,7 +63,7 @@ pub async fn list(ctx: ApiCtx, _path: ListPath, query: ListQuery) -> Result<List
6363
};
6464

6565
let runner_configs = ctx
66-
.op(namespace::ops::runner_config::list::Input {
66+
.op(pegboard::ops::runner_config::list::Input {
6767
namespace_id: namespace.namespace_id,
6868
variant,
6969
after_name,
@@ -121,7 +121,7 @@ pub async fn upsert(
121121
.ok_or_else(|| namespace::errors::Namespace::NotFound.build())?;
122122

123123
let endpoint_config_changed = ctx
124-
.op(namespace::ops::runner_config::upsert::Input {
124+
.op(pegboard::ops::runner_config::upsert::Input {
125125
namespace_id: namespace.namespace_id,
126126
name: path.runner_name,
127127
config: body.0.into(),
@@ -159,7 +159,7 @@ pub async fn delete(ctx: ApiCtx, path: DeletePath, query: DeleteQuery) -> Result
159159
.await?
160160
.ok_or_else(|| namespace::errors::Namespace::NotFound.build())?;
161161

162-
ctx.op(namespace::ops::runner_config::delete::Input {
162+
ctx.op(pegboard::ops::runner_config::delete::Input {
163163
namespace_id: namespace.namespace_id,
164164
name: path.runner_name,
165165
})

engine/packages/api-public/src/runner_configs/refresh_metadata.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ async fn refresh_metadata_inner(
8888
.collect();
8989

9090
let runner_configs = ctx
91-
.op(namespace::ops::runner_config::get::Input {
91+
.op(pegboard::ops::runner_config::get::Input {
9292
runners,
9393
bypass_cache: true,
9494
})

engine/packages/config/src/config/pegboard.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,25 @@ pub struct Pegboard {
5656
///
5757
/// **Experimental**
5858
pub hibernating_request_eligible_threshold: Option<i64>,
59+
/// Time to delay a serverless runner from attempting a new outbound connection after a connection failure.
60+
///
61+
/// Unit is in milliseconds.
62+
///
63+
/// **Experimental**
64+
pub serverless_base_retry_timeout: Option<usize>,
65+
/// How long a serverless runner goes without connection failures before it's retry count is reset to 0,
66+
/// effectively resetting its backoff to 0.
67+
///
68+
/// Unit is in milliseconds.
69+
///
70+
/// **Experimental**
71+
pub serverless_retry_reset_duration: Option<i64>,
72+
/// Maximum exponent for the serverless backoff calculation.
73+
///
74+
/// This controls the maximum backoff duration when serverlessly connecting to runners.
75+
///
76+
/// **Experimental**
77+
pub serverless_backoff_max_exponent: Option<usize>,
5978
}
6079

6180
impl Pegboard {
@@ -91,4 +110,17 @@ impl Pegboard {
91110
self.hibernating_request_eligible_threshold
92111
.unwrap_or(90_000)
93112
}
113+
114+
pub fn serverless_base_retry_timeout(&self) -> usize {
115+
self.serverless_base_retry_timeout.unwrap_or(2000)
116+
}
117+
118+
pub fn serverless_retry_reset_duration(&self) -> i64 {
119+
self.serverless_retry_reset_duration
120+
.unwrap_or(10 * 60 * 1000)
121+
}
122+
123+
pub fn serverless_backoff_max_exponent(&self) -> usize {
124+
self.serverless_backoff_max_exponent.unwrap_or(8)
125+
}
94126
}

0 commit comments

Comments
 (0)