diff --git a/lib/bolt/config/src/ns.rs b/lib/bolt/config/src/ns.rs index 9afb74e337..d291ba2acb 100644 --- a/lib/bolt/config/src/ns.rs +++ b/lib/bolt/config/src/ns.rs @@ -417,8 +417,8 @@ pub enum CockroachDBProvider { spend_limit: u32, /// CRDB Request Units. /// https://www.cockroachlabs.com/docs/cockroachcloud/architecture#request-unit-ru - request_unit_limit: u32, - /// Storage limit in MiB. + request_unit_limit: u64, + /// Storage limit in GiB. storage_limit: u32, }, } diff --git a/lib/chirp-workflow/core/src/error.rs b/lib/chirp-workflow/core/src/error.rs index 5d76383042..f3113e0f67 100644 --- a/lib/chirp-workflow/core/src/error.rs +++ b/lib/chirp-workflow/core/src/error.rs @@ -137,6 +137,7 @@ pub enum WorkflowError { } impl WorkflowError { + /// Returns the next deadline for a workflow to be woken up again based on the error. pub(crate) fn deadline_ts(&self) -> Option { match self { WorkflowError::ActivityFailure(_, error_count) => { @@ -156,6 +157,10 @@ impl WorkflowError { Some(deadline_ts) } + // TODO: Add backoff + WorkflowError::ActivityTimeout | WorkflowError::OperationTimeout => { + Some(rivet_util::timestamp::now() + RETRY_TIMEOUT_MS as i64) + } WorkflowError::Sleep(ts) => Some(*ts), _ => None, } diff --git a/svc/pkg/cluster/standalone/workflow-backfill/src/lib.rs b/svc/pkg/cluster/standalone/workflow-backfill/src/lib.rs index ea3b4b1e57..bb378da5f5 100644 --- a/svc/pkg/cluster/standalone/workflow-backfill/src/lib.rs +++ b/svc/pkg/cluster/standalone/workflow-backfill/src/lib.rs @@ -85,7 +85,7 @@ pub async fn run_from_env() -> GlobalResult<()> { )?; wf.message( - "cluster-create-complete", + "cluster_create_complete", json!({ "cluster_id": cluster.cluster_id, }), @@ -326,7 +326,7 @@ pub async fn run_from_env() -> GlobalResult<()> { } wf.message( - "cluster-datacenter-create-complete", + "cluster_datacenter_create_complete", json!({ "datacenter_id": dc.datacenter_id, }), @@ -357,7 +357,7 @@ pub async fn run_from_env() -> GlobalResult<()> { })?; } - #[derive(sqlx::FromRow)] + #[derive(Debug, sqlx::FromRow)] struct ServerRow { server_id: Uuid, datacenter_id: Uuid, @@ -371,7 +371,7 @@ pub async fn run_from_env() -> GlobalResult<()> { is_draining: bool, is_tainted: bool, } - #[derive(sqlx::FromRow)] + #[derive(Debug, sqlx::FromRow)] struct ServerLinodeRow { server_id: Uuid, ssh_key_id: i64, @@ -414,6 +414,7 @@ pub async fn run_from_env() -> GlobalResult<()> { linode_id, firewall_id FROM db_cluster.servers_linode + WHERE destroy_ts IS NULL ", ) .await?; @@ -815,7 +816,7 @@ pub async fn run_from_env() -> GlobalResult<()> { wf.listen( "linode_server_provision_complete", json!({ - "linode_id": unwrap!(unwrap!(linode).linode_id), + "linode_id": unwrap!(unwrap!(linode, "no linode row").linode_id, "no linode id"), "public_ip": public_ip, "boot_disk_id": 0, }), diff --git a/svc/pkg/linode/src/workflows/server/mod.rs b/svc/pkg/linode/src/workflows/server/mod.rs index aef25b7763..afc3be09c5 100644 --- a/svc/pkg/linode/src/workflows/server/mod.rs +++ b/svc/pkg/linode/src/workflows/server/mod.rs @@ -302,6 +302,7 @@ struct WaitInstanceReadyInput { } #[activity(WaitInstanceReady)] +#[timeout = 60] async fn wait_instance_ready( ctx: &ActivityCtx, input: &WaitInstanceReadyInput,