@rivetkit/engine 1.0.0 → 2.2.1-pr.4600.b74ff3b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +38 -0
- package/artifacts/config-schema.json +1140 -0
- package/artifacts/errors/actor.kv_storage_quota_exceeded.json +5 -0
- package/artifacts/errors/actor.no_runner_config_configured.json +5 -0
- package/artifacts/errors/guard.actor_runner_failed.json +5 -0
- package/artifacts/errors/guard.invalid_request.json +5 -0
- package/artifacts/errors/guard.invalid_request_body.json +5 -0
- package/artifacts/errors/guard.invalid_response_body.json +5 -0
- package/artifacts/errors/guard.missing_query_parameter.json +5 -0
- package/artifacts/errors/guard.query_ambiguous_runner_configs.json +5 -0
- package/artifacts/errors/guard.query_duplicate_param.json +5 -0
- package/artifacts/errors/guard.query_empty_actor_name.json +5 -0
- package/artifacts/errors/guard.query_get_disallowed_params.json +5 -0
- package/artifacts/errors/guard.query_invalid_base64_input.json +5 -0
- package/artifacts/errors/guard.query_invalid_cbor_input.json +5 -0
- package/artifacts/errors/guard.query_invalid_params.json +5 -0
- package/artifacts/errors/guard.query_invalid_percent_encoding.json +5 -0
- package/artifacts/errors/guard.query_missing_runner_name.json +5 -0
- package/artifacts/errors/guard.query_no_runner_configs.json +5 -0
- package/artifacts/errors/guard.query_param_missing_equals.json +5 -0
- package/artifacts/errors/guard.query_path_token_syntax.json +5 -0
- package/artifacts/errors/guard.query_unknown_param.json +5 -0
- package/artifacts/errors/guard.request_body_too_large.json +5 -0
- package/artifacts/errors/guard.response_body_too_large.json +5 -0
- package/artifacts/errors/serverless_runner_pool.failed_to_fetch_metadata.json +5 -0
- package/artifacts/errors/serverless_runner_pool.not_found.json +5 -0
- package/artifacts/errors/{api.rate_limited.json → test.api_rate_limited.json} +2 -2
- package/artifacts/errors/{namespace.invalid_name.json → test.namespace_invalid_name.json} +2 -2
- package/artifacts/errors/ws.going_away.json +5 -0
- package/artifacts/openapi.json +458 -6
- package/docker/builder-base/linux-gnu.Dockerfile +21 -0
- package/docker/builder-base/linux-musl.Dockerfile +53 -0
- package/docker/builder-base/osxcross.Dockerfile +42 -0
- package/docker/builder-base/windows-mingw.Dockerfile +41 -0
- package/docker/builder-base/windows-msvc.Dockerfile +25 -0
- package/docker/dev/docker-compose.yml +43 -18
- package/docker/dev/grafana/dashboards/api.json +1077 -1239
- package/docker/dev/grafana/dashboards/cache.json +911 -1074
- package/docker/dev/grafana/dashboards/epoxy.json +1606 -0
- package/docker/dev/grafana/dashboards/futures.json +242 -229
- package/docker/dev/grafana/dashboards/gasoline.json +2663 -2476
- package/docker/dev/grafana/dashboards/guard.json +1433 -1273
- package/docker/dev/grafana/dashboards/operation.json +871 -0
- package/docker/dev/grafana/dashboards/pegboard.json +1274 -0
- package/docker/dev/grafana/dashboards/tokio.json +930 -1004
- package/docker/dev/grafana/dashboards/traces.json +35 -13
- package/docker/dev/grafana/provisioning/datasources/datasources.yaml +8 -0
- package/docker/{dev-multinode/otel-collector-server → dev/otel-collector}/config.yaml +18 -13
- package/docker/dev/prometheus/prometheus.yml +4 -0
- package/docker/dev/rivet-engine/config.jsonc +9 -16
- package/docker/dev-host/docker-compose.yml +38 -16
- package/docker/dev-host/grafana/dashboards/api.json +1077 -1239
- package/docker/dev-host/grafana/dashboards/cache.json +911 -1074
- package/docker/dev-host/grafana/dashboards/epoxy.json +1606 -0
- package/docker/dev-host/grafana/dashboards/futures.json +242 -229
- package/docker/dev-host/grafana/dashboards/gasoline.json +2663 -2476
- package/docker/dev-host/grafana/dashboards/guard.json +1433 -1273
- package/docker/dev-host/grafana/dashboards/operation.json +871 -0
- package/docker/dev-host/grafana/dashboards/pegboard.json +1274 -0
- package/docker/dev-host/grafana/dashboards/tokio.json +930 -1004
- package/docker/dev-host/grafana/dashboards/traces.json +35 -13
- package/docker/dev-host/grafana/provisioning/datasources/datasources.yaml +8 -0
- package/docker/dev-host/{otel-collector-server → otel-collector}/config.yaml +18 -13
- package/docker/dev-host/prometheus/prometheus.yml +4 -0
- package/docker/dev-host/rivet-engine/config.jsonc +9 -16
- package/docker/dev-multidc/core/grafana/dashboards/api.json +1077 -1239
- package/docker/dev-multidc/core/grafana/dashboards/cache.json +911 -1074
- package/docker/dev-multidc/core/grafana/dashboards/epoxy.json +1606 -0
- package/docker/dev-multidc/core/grafana/dashboards/futures.json +242 -229
- package/docker/dev-multidc/core/grafana/dashboards/gasoline.json +2663 -2476
- package/docker/dev-multidc/core/grafana/dashboards/guard.json +1433 -1273
- package/docker/dev-multidc/core/grafana/dashboards/operation.json +871 -0
- package/docker/dev-multidc/core/grafana/dashboards/pegboard.json +1274 -0
- package/docker/dev-multidc/core/grafana/dashboards/tokio.json +930 -1004
- package/docker/dev-multidc/core/grafana/dashboards/traces.json +35 -13
- package/docker/dev-multidc/core/grafana/provisioning/datasources/datasources.yaml +8 -0
- package/docker/dev-multidc/core/prometheus/prometheus.yml +4 -0
- package/docker/dev-multidc/datacenters/dc-a/{otel-collector-server → otel-collector}/config.yaml +18 -13
- package/docker/dev-multidc/datacenters/dc-a/rivet-engine/config.jsonc +23 -22
- package/docker/{dev-multidc-multinode/datacenters/dc-b/otel-collector-server → dev-multidc/datacenters/dc-b/otel-collector}/config.yaml +18 -13
- package/docker/dev-multidc/datacenters/dc-b/rivet-engine/config.jsonc +23 -22
- package/docker/dev-multidc/datacenters/dc-c/{otel-collector-server → otel-collector}/config.yaml +18 -13
- package/docker/dev-multidc/datacenters/dc-c/rivet-engine/config.jsonc +23 -22
- package/docker/dev-multidc/docker-compose.yml +71 -64
- package/docker/dev-multidc-multinode/core/grafana/dashboards/api.json +1077 -1239
- package/docker/dev-multidc-multinode/core/grafana/dashboards/cache.json +911 -1074
- package/docker/dev-multidc-multinode/core/grafana/dashboards/epoxy.json +1606 -0
- package/docker/dev-multidc-multinode/core/grafana/dashboards/futures.json +242 -229
- package/docker/dev-multidc-multinode/core/grafana/dashboards/gasoline.json +2663 -2476
- package/docker/dev-multidc-multinode/core/grafana/dashboards/guard.json +1433 -1273
- package/docker/dev-multidc-multinode/core/grafana/dashboards/operation.json +871 -0
- package/docker/dev-multidc-multinode/core/grafana/dashboards/pegboard.json +1274 -0
- package/docker/dev-multidc-multinode/core/grafana/dashboards/tokio.json +930 -1004
- package/docker/dev-multidc-multinode/core/grafana/dashboards/traces.json +35 -13
- package/docker/dev-multidc-multinode/core/grafana/provisioning/datasources/datasources.yaml +8 -0
- package/docker/dev-multidc-multinode/core/prometheus/prometheus.yml +4 -0
- package/docker/dev-multidc-multinode/datacenters/dc-a/{otel-collector-server → otel-collector}/config.yaml +28 -13
- package/docker/dev-multidc-multinode/datacenters/dc-a/rivet-engine/0/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/datacenters/dc-a/rivet-engine/1/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/datacenters/dc-a/rivet-engine/2/config.jsonc +23 -22
- package/docker/{dev-multidc/datacenters/dc-b/otel-collector-server → dev-multidc-multinode/datacenters/dc-b/otel-collector}/config.yaml +28 -13
- package/docker/dev-multidc-multinode/datacenters/dc-b/rivet-engine/0/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/datacenters/dc-b/rivet-engine/1/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/datacenters/dc-b/rivet-engine/2/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/datacenters/dc-c/{otel-collector-server → otel-collector}/config.yaml +28 -13
- package/docker/dev-multidc-multinode/datacenters/dc-c/rivet-engine/0/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/datacenters/dc-c/rivet-engine/1/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/datacenters/dc-c/rivet-engine/2/config.jsonc +23 -22
- package/docker/dev-multidc-multinode/docker-compose.yml +113 -88
- package/docker/dev-multinode/docker-compose.yml +57 -26
- package/docker/dev-multinode/grafana/dashboards/api.json +1077 -1239
- package/docker/dev-multinode/grafana/dashboards/cache.json +911 -1074
- package/docker/dev-multinode/grafana/dashboards/epoxy.json +1606 -0
- package/docker/dev-multinode/grafana/dashboards/futures.json +242 -229
- package/docker/dev-multinode/grafana/dashboards/gasoline.json +2663 -2476
- package/docker/dev-multinode/grafana/dashboards/guard.json +1433 -1273
- package/docker/dev-multinode/grafana/dashboards/operation.json +871 -0
- package/docker/dev-multinode/grafana/dashboards/pegboard.json +1274 -0
- package/docker/dev-multinode/grafana/dashboards/tokio.json +930 -1004
- package/docker/dev-multinode/grafana/dashboards/traces.json +35 -13
- package/docker/dev-multinode/grafana/provisioning/datasources/datasources.yaml +8 -0
- package/docker/{dev/otel-collector-server → dev-multinode/otel-collector}/config.yaml +28 -13
- package/docker/dev-multinode/prometheus/prometheus.yml +4 -0
- package/docker/dev-multinode/rivet-engine/0/config.jsonc +9 -16
- package/docker/dev-multinode/rivet-engine/1/config.jsonc +9 -16
- package/docker/dev-multinode/rivet-engine/2/config.jsonc +9 -16
- package/docker/engine/linux-aarch64.Dockerfile +9 -49
- package/docker/engine/linux-x86_64.Dockerfile +7 -57
- package/docker/engine/macos-aarch64.Dockerfile +8 -54
- package/docker/engine/macos-x86_64.Dockerfile +9 -55
- package/docker/engine/windows.Dockerfile +5 -53
- package/docker/template/grafana-dashboards/api.json +1077 -1239
- package/docker/template/grafana-dashboards/cache.json +911 -1074
- package/docker/template/grafana-dashboards/epoxy.json +1606 -0
- package/docker/template/grafana-dashboards/futures.json +242 -229
- package/docker/template/grafana-dashboards/gasoline.json +2663 -2476
- package/docker/template/grafana-dashboards/guard.json +1433 -1273
- package/docker/template/grafana-dashboards/operation.json +871 -0
- package/docker/template/grafana-dashboards/pegboard.json +1274 -0
- package/docker/template/grafana-dashboards/tokio.json +930 -1004
- package/docker/template/grafana-dashboards/traces.json +35 -13
- package/docker/template/node_modules/.bin/js-yaml +4 -4
- package/docker/template/node_modules/.bin/tsc +4 -4
- package/docker/template/node_modules/.bin/tsserver +4 -4
- package/docker/template/node_modules/.bin/tsx +4 -4
- package/docker/template/src/docker-compose.ts +42 -29
- package/docker/template/src/main.ts +4 -4
- package/docker/template/src/services/core/grafana.ts +14 -1
- package/docker/template/src/services/core/prometheus.ts +20 -0
- package/docker/template/src/services/edge/{otel-collector-server.ts → otel-collector.ts} +55 -24
- package/docker/template/src/services/edge/rivet-engine.ts +4 -16
- package/docker/template/src/services/edge/runner.ts +2 -3
- package/docker/universal/Dockerfile +5 -3
- package/package.json +2 -5
- package/packages/api-builder/src/global_context.rs +1 -1
- package/packages/api-builder/src/metrics.rs +28 -24
- package/packages/api-builder/src/middleware.rs +30 -48
- package/packages/api-builder/src/router.rs +13 -1
- package/packages/api-peer/Cargo.toml +7 -9
- package/packages/api-peer/src/actors/delete.rs +56 -57
- package/packages/api-peer/src/actors/get_or_create.rs +139 -0
- package/packages/api-peer/src/actors/kv_get.rs +40 -28
- package/packages/api-peer/src/actors/list.rs +31 -14
- package/packages/api-peer/src/actors/list_names.rs +6 -6
- package/packages/api-peer/src/actors/mod.rs +3 -0
- package/packages/api-peer/src/actors/reschedule.rs +55 -0
- package/packages/api-peer/src/actors/sleep.rs +55 -0
- package/packages/api-peer/src/envoys.rs +57 -0
- package/packages/api-peer/src/internal.rs +441 -24
- package/packages/api-peer/src/lib.rs +2 -1
- package/packages/api-peer/src/namespaces.rs +24 -9
- package/packages/api-peer/src/router.rs +31 -7
- package/packages/api-peer/src/runner_configs.rs +66 -19
- package/packages/api-peer/src/runners.rs +30 -32
- package/packages/api-public/Cargo.toml +2 -0
- package/packages/api-public/src/actors/create.rs +8 -17
- package/packages/api-public/src/actors/delete.rs +11 -35
- package/packages/api-public/src/actors/get_or_create.rs +23 -95
- package/packages/api-public/src/actors/kv_get.rs +12 -29
- package/packages/api-public/src/actors/list.rs +56 -78
- package/packages/api-public/src/actors/list_names.rs +15 -14
- package/packages/api-public/src/actors/mod.rs +2 -0
- package/packages/api-public/src/actors/reschedule.rs +65 -0
- package/packages/api-public/src/actors/sleep.rs +64 -0
- package/packages/api-public/src/actors/utils.rs +12 -60
- package/packages/api-public/src/ctx.rs +14 -6
- package/packages/api-public/src/datacenters.rs +5 -5
- package/packages/api-public/src/envoys.rs +57 -0
- package/packages/api-public/src/errors.rs +0 -7
- package/packages/api-public/src/health.rs +51 -44
- package/packages/api-public/src/lib.rs +2 -1
- package/packages/api-public/src/metadata.rs +44 -14
- package/packages/api-public/src/namespaces.rs +11 -11
- package/packages/api-public/src/router.rs +22 -5
- package/packages/api-public/src/runner_configs/delete.rs +13 -10
- package/packages/api-public/src/runner_configs/list.rs +5 -2
- package/packages/api-public/src/runner_configs/refresh_metadata.rs +1 -1
- package/packages/api-public/src/runner_configs/serverless_health_check.rs +2 -2
- package/packages/api-public/src/runner_configs/upsert.rs +12 -9
- package/packages/api-public/src/runner_configs/utils.rs +35 -175
- package/packages/api-public/src/runners.rs +17 -45
- package/packages/{dump-openapi → api-public-openapi-gen}/Cargo.toml +1 -1
- package/packages/api-types/src/actors/create.rs +1 -0
- package/packages/api-types/src/actors/delete.rs +20 -0
- package/packages/api-types/src/actors/get_or_create.rs +30 -0
- package/packages/api-types/src/actors/kv_get.rs +25 -0
- package/packages/api-types/src/actors/list.rs +8 -1
- package/packages/api-types/src/actors/mod.rs +5 -0
- package/packages/api-types/src/actors/reschedule.rs +26 -0
- package/packages/api-types/src/actors/sleep.rs +26 -0
- package/packages/api-types/src/datacenters/list.rs +2 -2
- package/packages/api-types/src/envoys/list.rs +24 -0
- package/packages/api-types/src/envoys/mod.rs +1 -0
- package/packages/api-types/src/lib.rs +1 -0
- package/packages/api-types/src/namespaces/list.rs +4 -0
- package/packages/api-types/src/namespaces/runner_configs.rs +23 -2
- package/packages/api-types/src/runner_configs/list.rs +6 -1
- package/packages/api-types/src/runner_configs/mod.rs +12 -0
- package/packages/api-types/src/runners/list.rs +4 -0
- package/packages/api-types/src/runners/list_names.rs +21 -0
- package/packages/api-types/src/runners/mod.rs +1 -0
- package/packages/api-util/src/lib.rs +44 -21
- package/packages/bootstrap/Cargo.toml +7 -4
- package/packages/bootstrap/src/backfill.rs +53 -0
- package/packages/bootstrap/src/lib.rs +43 -7
- package/packages/cache/Cargo.toml +3 -1
- package/packages/cache/src/driver.rs +43 -151
- package/packages/cache/src/getter_ctx.rs +48 -70
- package/packages/cache/src/inner.rs +28 -18
- package/packages/cache/src/key.rs +17 -3
- package/packages/cache/src/lib.rs +0 -2
- package/packages/cache/src/metrics.rs +43 -31
- package/packages/cache/src/req_config.rs +219 -156
- package/packages/cache/tests/fetch.rs +91 -0
- package/packages/cache/tests/in_flight.rs +361 -0
- package/packages/cache/tests/ttl.rs +314 -0
- package/packages/cache-purge/src/lib.rs +1 -1
- package/packages/config/Cargo.toml +1 -0
- package/packages/config/src/config/cache.rs +10 -3
- package/packages/config/src/config/clickhouse.rs +0 -30
- package/packages/config/src/config/{db.rs → db/mod.rs} +3 -18
- package/packages/config/src/config/db/postgres.rs +59 -0
- package/packages/config/src/config/guard.rs +19 -0
- package/packages/config/src/config/metrics.rs +22 -0
- package/packages/config/src/config/mod.rs +44 -10
- package/packages/config/src/config/pegboard.rs +242 -16
- package/packages/config/src/config/pubsub.rs +11 -0
- package/packages/config/src/config/runtime.rs +58 -0
- package/packages/config/src/config/telemetry.rs +1 -0
- package/packages/config/src/config/topology.rs +78 -19
- package/packages/config/src/defaults.rs +3 -0
- package/packages/config/src/lib.rs +10 -1
- package/packages/config-schema-gen/Cargo.toml +11 -0
- package/packages/config-schema-gen/build.rs +26 -0
- package/packages/config-schema-gen/src/lib.rs +2 -0
- package/packages/engine/Cargo.toml +11 -2
- package/packages/engine/src/commands/db/mod.rs +0 -10
- package/packages/engine/src/commands/epoxy.rs +395 -0
- package/packages/engine/src/commands/mod.rs +1 -1
- package/packages/engine/src/commands/start.rs +43 -63
- package/packages/engine/src/commands/udb/cli.rs +148 -4
- package/packages/engine/src/commands/wf/mod.rs +83 -12
- package/packages/engine/src/commands/wf/signal.rs +38 -0
- package/packages/engine/src/lib.rs +6 -3
- package/packages/engine/src/main.rs +1 -1
- package/packages/engine/src/run_config.rs +6 -7
- package/packages/engine/src/util/db.rs +1 -25
- package/packages/engine/src/util/wf/mod.rs +39 -5
- package/packages/engine/tests/common/actors.rs +50 -332
- package/packages/engine/tests/common/api/mod.rs +7 -0
- package/packages/engine/tests/common/api/peer.rs +364 -0
- package/packages/engine/tests/common/api/public.rs +473 -0
- package/packages/engine/tests/common/ctx.rs +15 -3
- package/packages/engine/tests/common/mod.rs +8 -5
- package/packages/engine/tests/common/test_envoy.rs +87 -0
- package/packages/engine/tests/common/test_helpers.rs +218 -130
- package/packages/engine/tests/common/test_runner.rs +273 -0
- package/packages/engine/tests/envoy/actors_lifecycle.rs +1277 -0
- package/packages/engine/tests/envoy/mod.rs +1 -0
- package/packages/engine/tests/mod.rs +3 -0
- package/packages/engine/tests/runner/actors_alarm.rs +1453 -0
- package/packages/engine/tests/runner/actors_kv_crud.rs +996 -0
- package/packages/engine/tests/runner/actors_kv_delete_range.rs +126 -0
- package/packages/engine/tests/runner/actors_kv_drop.rs +255 -0
- package/packages/engine/tests/runner/actors_kv_list.rs +1061 -0
- package/packages/engine/tests/runner/actors_kv_misc.rs +882 -0
- package/packages/engine/tests/runner/actors_lifecycle.rs +1284 -0
- package/packages/engine/tests/runner/actors_scheduling_errors.rs +1005 -0
- package/packages/engine/tests/runner/api_actors_create.rs +422 -0
- package/packages/engine/tests/runner/api_actors_delete.rs +487 -0
- package/packages/engine/tests/runner/api_actors_get_or_create.rs +634 -0
- package/packages/engine/tests/runner/api_actors_list.rs +1771 -0
- package/packages/engine/tests/runner/api_actors_list_names.rs +691 -0
- package/packages/engine/tests/runner/api_namespaces_create.rs +428 -0
- package/packages/engine/tests/runner/api_namespaces_list.rs +760 -0
- package/packages/engine/tests/runner/api_runner_configs_list.rs +646 -0
- package/packages/engine/tests/runner/api_runner_configs_upsert.rs +651 -0
- package/packages/engine/tests/runner/api_runners_list.rs +166 -0
- package/packages/engine/tests/runner/api_runners_list_names.rs +386 -0
- package/packages/engine/tests/runner/mod.rs +20 -0
- package/packages/engine/tests/runner/runner_drain_on_version.rs +620 -0
- package/packages/env/Cargo.toml +0 -4
- package/packages/env/src/lib.rs +0 -18
- package/packages/epoxy/Cargo.toml +3 -2
- package/packages/epoxy/README.md +554 -93
- package/packages/epoxy/src/consts.rs +4 -36
- package/packages/epoxy/src/http_client.rs +59 -26
- package/packages/epoxy/src/http_routes.rs +73 -10
- package/packages/epoxy/src/keys/keys.rs +260 -11
- package/packages/epoxy/src/keys/mod.rs +11 -1
- package/packages/epoxy/src/keys/replica.rs +5 -260
- package/packages/epoxy/src/lib.rs +2 -1
- package/packages/epoxy/src/metrics.rs +118 -0
- package/packages/epoxy/src/ops/kv/get_local.rs +15 -24
- package/packages/epoxy/src/ops/kv/get_optimistic.rs +102 -64
- package/packages/epoxy/src/ops/kv/mod.rs +1 -0
- package/packages/epoxy/src/ops/kv/purge_local.rs +18 -9
- package/packages/epoxy/src/ops/kv/read_value.rs +92 -0
- package/packages/epoxy/src/ops/mod.rs +0 -1
- package/packages/epoxy/src/ops/propose.rs +1079 -194
- package/packages/epoxy/src/replica/ballot.rs +162 -102
- package/packages/epoxy/src/replica/changelog.rs +147 -0
- package/packages/epoxy/src/replica/commit_kv.rs +69 -66
- package/packages/epoxy/src/replica/message_request.rs +33 -48
- package/packages/epoxy/src/replica/messages/accept.rs +82 -41
- package/packages/epoxy/src/replica/messages/commit.rs +21 -33
- package/packages/epoxy/src/replica/messages/mod.rs +0 -8
- package/packages/epoxy/src/replica/messages/prepare.rs +68 -69
- package/packages/epoxy/src/replica/mod.rs +1 -6
- package/packages/epoxy/src/replica/update_config.rs +3 -1
- package/packages/epoxy/src/types.rs +30 -54
- package/packages/epoxy/src/utils.rs +149 -16
- package/packages/epoxy/src/workflows/backfill.rs +233 -0
- package/packages/epoxy/src/workflows/coordinator/mod.rs +33 -7
- package/packages/epoxy/src/workflows/coordinator/reconfigure.rs +44 -0
- package/packages/epoxy/src/workflows/coordinator/replica_status_change.rs +4 -3
- package/packages/epoxy/src/workflows/mod.rs +1 -1
- package/packages/epoxy/src/workflows/replica/mod.rs +4 -6
- package/packages/epoxy/src/workflows/replica/setup.rs +130 -771
- package/packages/epoxy/tests/backfill.rs +65 -0
- package/packages/epoxy/tests/backfill_snapshot.rs +233 -0
- package/packages/epoxy/tests/common/mod.rs +77 -21
- package/packages/epoxy/tests/common/utils.rs +366 -10
- package/packages/epoxy/tests/consensus_regressions.rs +285 -0
- package/packages/epoxy/tests/kv.rs +128 -167
- package/packages/epoxy/tests/kv_get_optimistic.rs +257 -157
- package/packages/epoxy/tests/migration.rs +75 -0
- package/packages/epoxy/tests/proposal.rs +133 -28
- package/packages/epoxy/tests/reconfigure.rs +92 -474
- package/packages/error/tests/basic.rs +8 -8
- package/packages/gasoline/Cargo.toml +1 -0
- package/packages/gasoline/src/builder/common/message.rs +19 -47
- package/packages/gasoline/src/builder/common/signal.rs +37 -21
- package/packages/gasoline/src/builder/common/workflow.rs +19 -15
- package/packages/gasoline/src/builder/workflow/lupe.rs +295 -0
- package/packages/gasoline/src/builder/workflow/message.rs +24 -47
- package/packages/gasoline/src/builder/workflow/mod.rs +1 -0
- package/packages/gasoline/src/builder/workflow/signal.rs +68 -22
- package/packages/gasoline/src/builder/workflow/sub_workflow.rs +6 -15
- package/packages/gasoline/src/ctx/activity.rs +46 -6
- package/packages/gasoline/src/ctx/common.rs +26 -23
- package/packages/gasoline/src/ctx/listen.rs +33 -50
- package/packages/gasoline/src/ctx/message.rs +76 -64
- package/packages/gasoline/src/ctx/operation.rs +15 -5
- package/packages/gasoline/src/ctx/standalone.rs +32 -4
- package/packages/gasoline/src/ctx/test.rs +31 -6
- package/packages/gasoline/src/ctx/versioned_workflow.rs +33 -7
- package/packages/gasoline/src/ctx/workflow.rs +194 -384
- package/packages/gasoline/src/db/debug.rs +49 -9
- package/packages/gasoline/src/db/kv/debug.rs +905 -15
- package/packages/gasoline/src/db/kv/keys/history.rs +434 -9
- package/packages/gasoline/src/db/kv/keys/metric.rs +70 -47
- package/packages/gasoline/src/db/kv/keys/signal.rs +19 -3
- package/packages/gasoline/src/db/kv/keys/workflow.rs +349 -3
- package/packages/gasoline/src/db/kv/mod.rs +975 -514
- package/packages/gasoline/src/db/kv/system.rs +155 -18
- package/packages/gasoline/src/db/mod.rs +29 -7
- package/packages/gasoline/src/error.rs +26 -21
- package/packages/gasoline/src/executable.rs +3 -1
- package/packages/gasoline/src/history/cursor.rs +436 -336
- package/packages/gasoline/src/history/event.rs +24 -15
- package/packages/gasoline/src/listen.rs +2 -14
- package/packages/gasoline/src/message.rs +1 -1
- package/packages/gasoline/src/metrics.rs +260 -143
- package/packages/gasoline/src/prelude.rs +1 -1
- package/packages/gasoline/src/registry.rs +6 -2
- package/packages/gasoline/src/signal.rs +34 -31
- package/packages/gasoline/src/utils/mod.rs +1 -18
- package/packages/gasoline/src/utils/topic.rs +35 -0
- package/packages/gasoline/src/worker.rs +71 -14
- package/packages/gasoline/src/workflow.rs +13 -0
- package/packages/gasoline/tests/workflows/eviction_test.rs +2 -2
- package/packages/gasoline-macros/src/lib.rs +74 -12
- package/packages/gasoline-runtime/Cargo.toml +18 -0
- package/packages/gasoline-runtime/src/lib.rs +12 -0
- package/packages/gasoline-runtime/src/workflows/mod.rs +1 -0
- package/packages/gasoline-runtime/src/workflows/pruner.rs +55 -0
- package/packages/guard/Cargo.toml +16 -8
- package/packages/guard/src/cache/mod.rs +63 -43
- package/packages/guard/src/cache/pegboard_gateway.rs +144 -0
- package/packages/guard/src/errors.rs +105 -0
- package/packages/guard/src/lib.rs +5 -15
- package/packages/guard/src/metrics.rs +12 -0
- package/packages/guard/src/routing/actor_path.rs +409 -0
- package/packages/guard/src/routing/api_public.rs +6 -14
- package/packages/guard/src/routing/envoy.rs +98 -0
- package/packages/guard/src/routing/mod.rs +152 -206
- package/packages/guard/src/routing/pegboard_gateway/mod.rs +572 -0
- package/packages/guard/src/routing/pegboard_gateway/resolve_actor_query.rs +236 -0
- package/packages/guard/src/routing/runner.rs +24 -54
- package/packages/guard/src/routing/ws_health.rs +61 -0
- package/packages/guard/src/shared_state.rs +11 -2
- package/packages/guard/tests/parse_actor_path.rs +418 -165
- package/packages/guard-core/Cargo.toml +3 -10
- package/packages/guard-core/src/custom_serve.rs +4 -10
- package/packages/guard-core/src/errors.rs +20 -4
- package/packages/guard-core/src/lib.rs +6 -4
- package/packages/guard-core/src/metrics.rs +66 -53
- package/packages/guard-core/src/proxy_service.rs +618 -1520
- package/packages/guard-core/src/request_context.rs +149 -169
- package/packages/guard-core/src/response_body.rs +65 -0
- package/packages/guard-core/src/route.rs +76 -0
- package/packages/guard-core/src/server.rs +60 -26
- package/packages/guard-core/src/task_group.rs +4 -0
- package/packages/guard-core/src/utils.rs +296 -0
- package/packages/guard-core/src/websocket_handle.rs +3 -3
- package/packages/guard-core/tests/common/mod.rs +0 -1
- package/packages/guard-core/tests/custom_serve.rs +4 -6
- package/packages/guard-core/tests/simple_websocket.rs +19 -19
- package/packages/guard-core/tests/streaming_response.rs +4 -9
- package/packages/metrics/Cargo.toml +3 -2
- package/packages/metrics/src/buckets.rs +5 -11
- package/packages/metrics/src/lib.rs +6 -3
- package/packages/metrics/src/providers.rs +2 -42
- package/packages/metrics/src/registry.rs +7 -0
- package/packages/metrics/src/server.rs +57 -0
- package/packages/namespace/Cargo.toml +0 -3
- package/packages/namespace/src/keys/metric.rs +301 -0
- package/packages/namespace/src/keys/mod.rs +1 -1
- package/packages/namespace/src/ops/get_global.rs +7 -4
- package/packages/namespace/src/ops/get_local.rs +32 -16
- package/packages/namespace/src/ops/mod.rs +0 -1
- package/packages/namespace/src/ops/resolve_for_name_global.rs +7 -4
- package/packages/namespace/src/ops/resolve_for_name_local.rs +39 -19
- package/packages/namespace/src/workflows/namespace.rs +3 -3
- package/packages/pegboard/Cargo.toml +22 -0
- package/packages/pegboard/src/actor_kv/entry.rs +47 -0
- package/packages/pegboard/src/actor_kv/metrics.rs +19 -0
- package/packages/pegboard/src/actor_kv/mod.rs +530 -0
- package/packages/pegboard/src/actor_kv/preload.rs +363 -0
- package/packages/{actor-kv/src → pegboard/src/actor_kv}/utils.rs +36 -35
- package/packages/pegboard/src/errors.rs +39 -5
- package/packages/pegboard/src/keys/actor.rs +285 -2
- package/packages/{actor-kv/src/entry.rs → pegboard/src/keys/actor_kv.rs} +73 -39
- package/packages/pegboard/src/keys/backfill.rs +49 -0
- package/packages/pegboard/src/keys/envoy.rs +1070 -0
- package/packages/pegboard/src/keys/epoxy/ns.rs +1 -1
- package/packages/pegboard/src/keys/mod.rs +4 -6
- package/packages/pegboard/src/keys/ns.rs +493 -14
- package/packages/pegboard/src/keys/runner.rs +281 -0
- package/packages/{namespace → pegboard}/src/keys/runner_config.rs +53 -0
- package/packages/pegboard/src/lib.rs +15 -2
- package/packages/pegboard/src/metrics.rs +57 -16
- package/packages/pegboard/src/ops/actor/create.rs +123 -53
- package/packages/pegboard/src/ops/actor/get.rs +14 -45
- package/packages/pegboard/src/ops/actor/get_for_gateway.rs +16 -0
- package/packages/pegboard/src/ops/actor/get_for_key.rs +3 -0
- package/packages/pegboard/src/ops/actor/get_for_kv.rs +43 -0
- package/packages/pegboard/src/ops/actor/get_for_runner.rs +99 -0
- package/packages/pegboard/src/ops/actor/get_reservation_for_key.rs +1 -0
- package/packages/pegboard/src/ops/actor/list_for_ns.rs +10 -38
- package/packages/pegboard/src/ops/actor/list_names.rs +3 -3
- package/packages/pegboard/src/ops/actor/mod.rs +3 -1
- package/packages/pegboard/src/ops/actor/util.rs +263 -0
- package/packages/pegboard/src/ops/envoy/drain.rs +101 -0
- package/packages/pegboard/src/ops/envoy/evict_actors.rs +54 -0
- package/packages/pegboard/src/ops/envoy/expire.rs +92 -0
- package/packages/pegboard/src/ops/envoy/get.rs +135 -0
- package/packages/pegboard/src/ops/envoy/list.rs +131 -0
- package/packages/pegboard/src/ops/envoy/mod.rs +6 -0
- package/packages/pegboard/src/ops/envoy/update_ping.rs +92 -0
- package/packages/pegboard/src/ops/mod.rs +3 -0
- package/packages/pegboard/src/ops/runner/drain.rs +110 -0
- package/packages/pegboard/src/ops/runner/list_names.rs +3 -3
- package/packages/pegboard/src/ops/runner/list_runner_config_enabled_dcs.rs +199 -0
- package/packages/pegboard/src/ops/runner/list_runner_config_epoxy_replica_ids.rs +51 -0
- package/packages/pegboard/src/ops/runner/mod.rs +3 -1
- package/packages/pegboard/src/ops/runner/update_alloc_idx.rs +17 -5
- package/packages/{namespace → pegboard}/src/ops/runner_config/delete.rs +18 -9
- package/packages/pegboard/src/ops/runner_config/ensure_normal_if_missing.rs +62 -0
- package/packages/{namespace → pegboard}/src/ops/runner_config/get.rs +15 -5
- package/packages/pegboard/src/ops/runner_config/get_error.rs +146 -0
- package/packages/{namespace → pegboard}/src/ops/runner_config/list.rs +13 -12
- package/packages/pegboard/src/ops/runner_config/mod.rs +7 -0
- package/packages/pegboard/src/ops/runner_config/refresh_metadata.rs +124 -0
- package/packages/pegboard/src/ops/runner_config/upsert.rs +206 -0
- package/packages/pegboard/src/ops/serverless_metadata/fetch.rs +223 -0
- package/packages/pegboard/src/ops/serverless_metadata/mod.rs +1 -0
- package/packages/pegboard/src/pubsub_subjects.rs +52 -0
- package/packages/pegboard/src/utils.rs +36 -2
- package/packages/pegboard/src/workflows/actor/destroy.rs +135 -99
- package/packages/pegboard/src/workflows/actor/keys.rs +59 -5
- package/packages/pegboard/src/workflows/actor/metrics.rs +345 -0
- package/packages/pegboard/src/workflows/actor/mod.rs +848 -204
- package/packages/pegboard/src/workflows/actor/runtime.rs +785 -212
- package/packages/pegboard/src/workflows/actor/setup.rs +61 -0
- package/packages/pegboard/src/workflows/actor2/keys.rs +337 -0
- package/packages/pegboard/src/workflows/actor2/metrics.rs +334 -0
- package/packages/pegboard/src/workflows/actor2/mod.rs +1251 -0
- package/packages/pegboard/src/workflows/actor2/runtime.rs +1005 -0
- package/packages/pegboard/src/workflows/actor_runner_name_selector_backfill.rs +266 -0
- package/packages/pegboard/src/workflows/metrics_aggregator.rs +282 -0
- package/packages/pegboard/src/workflows/mod.rs +8 -0
- package/packages/pegboard/src/workflows/runner.rs +62 -56
- package/packages/pegboard/src/workflows/runner2.rs +978 -0
- package/packages/pegboard/src/workflows/runner_pool.rs +298 -0
- package/packages/pegboard/src/workflows/runner_pool_error_tracker.rs +173 -0
- package/packages/pegboard/src/workflows/runner_pool_metadata_poller.rs +237 -0
- package/packages/pegboard/src/workflows/serverless/backfill.rs +120 -0
- package/packages/pegboard/src/workflows/serverless/conn.rs +702 -0
- package/packages/pegboard/src/workflows/serverless/mod.rs +3 -0
- package/packages/pegboard/src/workflows/serverless/receiver.rs +87 -0
- package/packages/pegboard/tests/actor_v1_pre_migration.rs +77 -0
- package/packages/{actor-kv/tests/list_edge_cases.rs → pegboard/tests/kv_list_edge_cases.rs} +74 -59
- package/packages/{actor-kv → pegboard}/tests/kv_operations.rs +77 -48
- package/packages/pegboard-envoy/Cargo.toml +43 -0
- package/packages/pegboard-envoy/src/actor_event_demuxer.rs +165 -0
- package/packages/pegboard-envoy/src/conn.rs +417 -0
- package/packages/pegboard-envoy/src/errors.rs +38 -0
- package/packages/pegboard-envoy/src/lib.rs +250 -0
- package/packages/pegboard-envoy/src/metrics.rs +44 -0
- package/packages/pegboard-envoy/src/ping_task.rs +61 -0
- package/packages/pegboard-envoy/src/tunnel_to_ws_task.rs +183 -0
- package/packages/pegboard-envoy/src/utils.rs +68 -0
- package/packages/pegboard-envoy/src/ws_to_tunnel_task.rs +536 -0
- package/packages/pegboard-envoy/tests/support/ws_to_tunnel_task.rs +82 -0
- package/packages/pegboard-gateway/Cargo.toml +2 -0
- package/packages/pegboard-gateway/src/keepalive_task.rs +1 -1
- package/packages/pegboard-gateway/src/lib.rs +506 -128
- package/packages/pegboard-gateway/src/metrics.rs +7 -11
- package/packages/pegboard-gateway/src/metrics_task.rs +80 -0
- package/packages/pegboard-gateway/src/ping_task.rs +9 -2
- package/packages/pegboard-gateway/src/shared_state.rs +110 -74
- package/packages/pegboard-gateway/src/tunnel_to_ws_task.rs +21 -7
- package/packages/pegboard-gateway/src/ws_to_tunnel_task.rs +12 -6
- package/packages/pegboard-gateway2/Cargo.toml +37 -0
- package/packages/pegboard-gateway2/src/keepalive_task.rs +61 -0
- package/packages/pegboard-gateway2/src/lib.rs +1044 -0
- package/packages/pegboard-gateway2/src/metrics.rs +10 -0
- package/packages/pegboard-gateway2/src/metrics_task.rs +80 -0
- package/packages/pegboard-gateway2/src/ping_task.rs +30 -0
- package/packages/pegboard-gateway2/src/shared_state.rs +601 -0
- package/packages/pegboard-gateway2/src/tunnel_to_ws_task.rs +99 -0
- package/packages/pegboard-gateway2/src/ws_to_tunnel_task.rs +71 -0
- package/packages/{pegboard-serverless → pegboard-outbound}/Cargo.toml +9 -9
- package/packages/pegboard-outbound/src/lib.rs +487 -0
- package/packages/pegboard-outbound/src/metrics.rs +17 -0
- package/packages/pegboard-runner/Cargo.toml +11 -5
- package/packages/pegboard-runner/src/actor_event_demuxer.rs +163 -0
- package/packages/pegboard-runner/src/conn.rs +358 -122
- package/packages/pegboard-runner/src/errors.rs +5 -0
- package/packages/pegboard-runner/src/lib.rs +62 -36
- package/packages/pegboard-runner/src/metrics.rs +44 -0
- package/packages/pegboard-runner/src/ping_task.rs +60 -13
- package/packages/pegboard-runner/src/tunnel_to_ws_task.rs +249 -110
- package/packages/pegboard-runner/src/ws_to_tunnel_task.rs +738 -113
- package/packages/pegboard-runner/tests/support/ws_to_tunnel_task.rs +150 -0
- package/packages/pools/Cargo.toml +1 -2
- package/packages/pools/src/db/clickhouse.rs +7 -6
- package/packages/pools/src/db/udb.rs +16 -3
- package/packages/pools/src/db/ups.rs +27 -5
- package/packages/pools/src/error.rs +0 -3
- package/packages/pools/src/lib.rs +0 -2
- package/packages/pools/src/metrics.rs +33 -28
- package/packages/pools/src/pools.rs +15 -39
- package/packages/pools/src/prelude.rs +1 -1
- package/packages/postgres-util/Cargo.toml +13 -0
- package/packages/postgres-util/src/lib.rs +84 -0
- package/packages/runner-protocol/build.rs +157 -0
- package/packages/runner-protocol/src/lib.rs +16 -0
- package/packages/runner-protocol/src/util.rs +14 -0
- package/packages/runner-protocol/src/versioned.rs +4345 -0
- package/packages/runtime/src/lib.rs +46 -46
- package/packages/runtime/src/metrics.rs +39 -30
- package/packages/runtime/src/term_signal.rs +25 -12
- package/packages/runtime/src/traces.rs +5 -8
- package/packages/service-manager/src/lib.rs +66 -15
- package/packages/test-deps/src/datacenter.rs +22 -8
- package/packages/test-deps/src/lib.rs +47 -25
- package/packages/test-deps-docker/src/database.rs +45 -36
- package/packages/test-snapshot-gen/Cargo.toml +39 -0
- package/packages/test-snapshot-gen/snapshots/.gitkeep +0 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/metadata.json +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/000008.log +0 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/000009.sst +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/CURRENT +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/MANIFEST-000005 +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-1/OPTIONS-000007 +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/000008.log +0 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/000009.sst +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/CURRENT +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/MANIFEST-000005 +3 -0
- package/packages/test-snapshot-gen/snapshots/epoxy-v1/replica-2/OPTIONS-000007 +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/metadata.json +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/000008.log +0 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/000009.sst +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/CURRENT +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/MANIFEST-000005 +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-1/OPTIONS-000007 +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/000008.log +0 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/000009.sst +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/CURRENT +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/MANIFEST-000005 +3 -0
- package/packages/test-snapshot-gen/snapshots/pb-actor-v1-pre-migration/replica-2/OPTIONS-000007 +3 -0
- package/packages/test-snapshot-gen/src/lib.rs +328 -0
- package/packages/test-snapshot-gen/src/main.rs +145 -0
- package/packages/test-snapshot-gen/src/scenarios/epoxy_keys.rs +60 -0
- package/packages/test-snapshot-gen/src/scenarios/mod.rs +27 -0
- package/packages/test-snapshot-gen/src/scenarios/pb_actor_v1_pre_migration.rs +56 -0
- package/packages/test-snapshot-gen/src/test_cluster.rs +234 -0
- package/packages/tracing-reconfigure/src/lib.rs +1 -1
- package/packages/tracing-utils/src/lib.rs +12 -20
- package/packages/types/src/actor/error.rs +59 -0
- package/packages/types/src/actor/mod.rs +2 -0
- package/packages/types/src/actors.rs +5 -0
- package/packages/types/src/envoys.rs +21 -0
- package/packages/types/src/keys/backfill.rs +5 -0
- package/packages/types/src/keys/mod.rs +1 -0
- package/packages/types/src/lib.rs +2 -1
- package/packages/types/src/runner_configs.rs +43 -14
- package/packages/universaldb/Cargo.toml +4 -0
- package/packages/universaldb/src/database.rs +50 -5
- package/packages/universaldb/src/driver/mod.rs +12 -2
- package/packages/universaldb/src/driver/postgres/database.rs +88 -27
- package/packages/universaldb/src/driver/postgres/mod.rs +1 -1
- package/packages/universaldb/src/driver/postgres/transaction.rs +4 -7
- package/packages/universaldb/src/driver/postgres/transaction_task.rs +30 -52
- package/packages/universaldb/src/driver/rocksdb/database.rs +13 -7
- package/packages/universaldb/src/driver/rocksdb/transaction_conflict_tracker.rs +5 -5
- package/packages/universaldb/src/driver/rocksdb/transaction_task.rs +2 -1
- package/packages/universaldb/src/metrics.rs +39 -23
- package/packages/universaldb/src/prelude.rs +1 -1
- package/packages/universaldb/src/transaction.rs +9 -2
- package/packages/universaldb/src/utils/cherry_pick.rs +46 -46
- package/packages/universaldb/src/utils/keys.rs +21 -2
- package/packages/universaldb/src/utils/mod.rs +8 -0
- package/packages/universaldb/src/utils/subspace.rs +9 -4
- package/packages/universaldb/tests/integration.rs +5 -3
- package/packages/universaldb/tests/integration_gas.rs +5 -3
- package/packages/universaldb/tests/rocksdb.rs +152 -19
- package/packages/universalpubsub/Cargo.toml +8 -2
- package/packages/universalpubsub/benches/simple.rs +28 -8
- package/packages/universalpubsub/src/chunking.rs +27 -5
- package/packages/universalpubsub/src/driver/memory/mod.rs +131 -20
- package/packages/universalpubsub/src/driver/mod.rs +5 -0
- package/packages/universalpubsub/src/driver/nats/mod.rs +8 -0
- package/packages/universalpubsub/src/driver/postgres/mod.rs +505 -96
- package/packages/universalpubsub/src/lib.rs +3 -0
- package/packages/universalpubsub/src/metrics.rs +60 -0
- package/packages/universalpubsub/src/pubsub.rs +227 -87
- package/packages/universalpubsub/src/subject.rs +32 -0
- package/packages/universalpubsub/tests/chunking.rs +298 -0
- package/packages/universalpubsub/tests/integration.rs +148 -7
- package/packages/universalpubsub/tests/reconnect.rs +8 -6
- package/packages/util/Cargo.toml +1 -3
- package/packages/util/build.rs +6 -0
- package/packages/util/src/lib.rs +7 -2
- package/packages/util/src/metric.rs +1 -0
- package/packages/util/src/serde.rs +1 -516
- package/packages/{internal → util-serde}/Cargo.toml +4 -5
- package/packages/util-serde/src/lib.rs +517 -0
- package/packages/workflow-worker/Cargo.toml +4 -4
- package/packages/workflow-worker/src/lib.rs +3 -2
- package/sdks/go/api-full/client/client.go +17 -4
- package/sdks/go/api-full/metadata/client.go +50 -0
- package/sdks/go/api-full/namespaces/client.go +3 -0
- package/sdks/go/api-full/namespaces.go +6 -4
- package/sdks/go/api-full/runners/client.go +3 -0
- package/sdks/go/api-full/runners.go +8 -6
- package/sdks/go/api-full/types.go +107 -23
- package/sdks/rust/api-full/rust/.openapi-generator/FILES +6 -0
- package/sdks/rust/api-full/rust/Cargo.toml +1 -1
- package/sdks/rust/api-full/rust/README.md +5 -2
- package/sdks/rust/api-full/rust/docs/Actor.md +1 -0
- package/sdks/rust/api-full/rust/docs/ActorsDeleteApi.md +1 -1
- package/sdks/rust/api-full/rust/docs/ActorsKvGetApi.md +2 -1
- package/sdks/rust/api-full/rust/docs/ActorsListApi.md +3 -2
- package/sdks/rust/api-full/rust/docs/MetadataApi.md +34 -0
- package/sdks/rust/api-full/rust/docs/MetadataGetResponse.md +18 -0
- package/sdks/rust/api-full/rust/docs/NamespacesApi.md +3 -2
- package/sdks/rust/api-full/rust/docs/RunnerConfig.md +1 -0
- package/sdks/rust/api-full/rust/docs/RunnerConfigKindOneOf1Serverless.md +1 -0
- package/sdks/rust/api-full/rust/docs/RunnerConfigResponse.md +15 -0
- package/sdks/rust/api-full/rust/docs/RunnerConfigsListApi.md +3 -2
- package/sdks/rust/api-full/rust/docs/RunnerConfigsListResponseRunnerConfigsValue.md +1 -1
- package/sdks/rust/api-full/rust/docs/RunnersApi.md +3 -2
- package/sdks/rust/api-full/rust/src/apis/actors_create_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/actors_delete_api.rs +3 -5
- package/sdks/rust/api-full/rust/src/apis/actors_get_or_create_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/actors_kv_get_api.rs +4 -2
- package/sdks/rust/api-full/rust/src/apis/actors_list_api.rs +9 -2
- package/sdks/rust/api-full/rust/src/apis/actors_list_names_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/configuration.rs +2 -2
- package/sdks/rust/api-full/rust/src/apis/datacenters_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/health_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/metadata_api.rs +62 -0
- package/sdks/rust/api-full/rust/src/apis/mod.rs +1 -0
- package/sdks/rust/api-full/rust/src/apis/namespaces_api.rs +9 -2
- package/sdks/rust/api-full/rust/src/apis/runner_configs_delete_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/runner_configs_list_api.rs +9 -2
- package/sdks/rust/api-full/rust/src/apis/runner_configs_refresh_metadata_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/runner_configs_serverless_health_check_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/runner_configs_upsert_api.rs +1 -1
- package/sdks/rust/api-full/rust/src/apis/runners_api.rs +9 -2
- package/sdks/rust/api-full/rust/src/models/actor.rs +5 -1
- package/sdks/rust/api-full/rust/src/models/actor_name.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/actors_create_request.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/actors_create_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/actors_get_or_create_request.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/actors_get_or_create_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/actors_kv_get_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/actors_list_names_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/actors_list_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/crash_policy.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/datacenter.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/datacenter_health.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/datacenters_list_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/health_fanout_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/health_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/health_status.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/metadata_get_response.rs +48 -0
- package/sdks/rust/api-full/rust/src/models/mod.rs +4 -0
- package/sdks/rust/api-full/rust/src/models/namespace.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/namespace_list_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/namespaces_create_request.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/namespaces_create_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/pagination.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_config.rs +4 -1
- package/sdks/rust/api-full/rust/src/models/runner_config_kind.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_config_kind_one_of.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_config_kind_one_of_1.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_config_kind_one_of_1_serverless.rs +5 -1
- package/sdks/rust/api-full/rust/src/models/runner_config_response.rs +39 -0
- package/sdks/rust/api-full/rust/src/models/runner_config_variant.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_list_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_list_response_runner_configs_value.rs +3 -3
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_request.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of_1.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of_1_failure.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_health_check_response_one_of_success.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_1.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_2.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_3.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_3_non_success_status.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_4.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_4_invalid_response_json.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_5.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_serverless_metadata_error_one_of_5_invalid_response_schema.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_upsert_request_body.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runner_configs_upsert_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runners_list_names_response.rs +1 -1
- package/sdks/rust/api-full/rust/src/models/runners_list_response.rs +1 -1
- package/sdks/rust/api-full/src/apis/actors_api.rs +8 -4
- package/sdks/rust/api-full/src/apis/ns_api.rs +8 -4
- package/sdks/rust/data/src/converted.rs +7 -4
- package/sdks/rust/data/src/lib.rs +2 -2
- package/sdks/rust/data/src/versioned/mod.rs +47 -4
- package/sdks/rust/data/src/versioned/namespace_runner_config.rs +256 -6
- package/sdks/rust/envoy-client/Cargo.toml +25 -0
- package/sdks/rust/envoy-client/src/actor.rs +992 -0
- package/sdks/rust/envoy-client/src/commands.rs +88 -0
- package/sdks/rust/envoy-client/src/config.rs +159 -0
- package/sdks/rust/envoy-client/src/connection.rs +288 -0
- package/sdks/rust/envoy-client/src/context.rs +24 -0
- package/sdks/rust/envoy-client/src/envoy.rs +432 -0
- package/sdks/rust/envoy-client/src/events.rs +62 -0
- package/sdks/rust/envoy-client/src/handle.rs +355 -0
- package/sdks/rust/envoy-client/src/kv.rs +132 -0
- package/sdks/rust/envoy-client/src/latency_channel.rs +27 -0
- package/sdks/rust/envoy-client/src/lib.rs +15 -0
- package/sdks/rust/envoy-client/src/stringify.rs +322 -0
- package/sdks/rust/envoy-client/src/tunnel.rs +265 -0
- package/sdks/rust/envoy-client/src/utils.rs +172 -0
- package/sdks/rust/envoy-protocol/Cargo.toml +22 -0
- package/sdks/rust/envoy-protocol/build.rs +200 -0
- package/sdks/rust/envoy-protocol/src/generated.rs +1 -0
- package/sdks/rust/envoy-protocol/src/lib.rs +8 -0
- package/sdks/rust/envoy-protocol/src/versioned.rs +208 -0
- package/sdks/rust/epoxy-protocol/Cargo.toml +0 -2
- package/sdks/rust/epoxy-protocol/build.rs +7 -0
- package/sdks/rust/epoxy-protocol/src/lib.rs +2 -5
- package/sdks/rust/epoxy-protocol/src/protocol.rs +128 -0
- package/sdks/rust/test-envoy/Cargo.toml +23 -0
- package/sdks/rust/test-envoy/Dockerfile +22 -0
- package/sdks/rust/test-envoy/src/behaviors.rs +141 -0
- package/sdks/rust/test-envoy/src/lib.rs +11 -0
- package/sdks/rust/test-envoy/src/main.rs +4 -0
- package/sdks/rust/test-envoy/src/server.rs +269 -0
- package/sdks/schemas/README.md +1 -2
- package/sdks/schemas/data/namespace.runner_config.v3.bare +24 -0
- package/sdks/schemas/data/namespace.runner_config.v4.bare +25 -0
- package/sdks/schemas/data/namespace.runner_config.v5.bare +26 -0
- package/sdks/schemas/data/pegboard.namespace.runner_alloc_idx.v2.bare +8 -0
- package/sdks/schemas/envoy-protocol/v1.bare +459 -0
- package/sdks/schemas/epoxy-protocol/v2.bare +220 -0
- package/sdks/schemas/runner-protocol/v4.bare +438 -0
- package/sdks/schemas/runner-protocol/v5.bare +430 -0
- package/sdks/schemas/runner-protocol/v6.bare +432 -0
- package/sdks/schemas/runner-protocol/v7.bare +438 -0
- package/sdks/typescript/api-full/.turbo/turbo-build.log +28 -27
- package/sdks/typescript/api-full/build.js +7 -1
- package/sdks/typescript/api-full/package.json +66 -57
- package/sdks/typescript/api-full/rivetkit-engine-api-full-25.5.3.tgz +0 -0
- package/sdks/typescript/api-full/src/Client.ts +41 -10
- package/sdks/typescript/api-full/src/api/client/requests/ActorsDeleteRequest.ts +4 -2
- package/sdks/typescript/api-full/src/api/client/requests/ActorsKvGetRequest.ts +13 -0
- package/sdks/typescript/api-full/src/api/client/requests/ActorsListRequest.ts +6 -0
- package/sdks/typescript/api-full/src/api/client/requests/RunnerConfigsListRequest.ts +4 -0
- package/sdks/typescript/api-full/src/api/client/requests/index.ts +1 -0
- package/sdks/typescript/api-full/src/api/resources/index.ts +1 -0
- package/sdks/typescript/api-full/src/api/resources/metadata/client/Client.ts +97 -0
- package/sdks/typescript/api-full/src/api/resources/metadata/client/index.ts +1 -0
- package/sdks/typescript/api-full/src/api/resources/metadata/index.ts +1 -0
- package/sdks/typescript/api-full/src/api/resources/namespaces/client/Client.ts +12 -2
- package/sdks/typescript/api-full/src/api/resources/namespaces/client/requests/NamespacesListRequest.ts +6 -0
- package/sdks/typescript/api-full/src/api/resources/runners/client/Client.ts +12 -2
- package/sdks/typescript/api-full/src/api/resources/runners/client/requests/RunnersListRequest.ts +6 -0
- package/sdks/typescript/api-full/src/api/types/Actor.ts +2 -0
- package/sdks/typescript/api-full/src/api/types/MetadataGetResponse.ts +14 -0
- package/sdks/typescript/api-full/src/api/types/RunnerConfig.ts +1 -0
- package/sdks/typescript/api-full/src/api/types/RunnerConfigKindServerlessServerless.ts +2 -0
- package/sdks/typescript/api-full/src/api/types/RunnerConfigResponse.ts +9 -0
- package/sdks/typescript/api-full/src/api/types/RunnerConfigServerless.ts +2 -0
- package/sdks/typescript/api-full/src/api/types/RunnerConfigsListResponseRunnerConfigsValue.ts +1 -1
- package/sdks/typescript/api-full/src/api/types/index.ts +2 -0
- package/sdks/typescript/api-full/src/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.ts +6 -4
- package/sdks/typescript/api-full/src/core/fetcher/stream-wrappers/UndiciStreamWrapper.ts +4 -3
- package/sdks/typescript/api-full/src/serialization/types/Actor.ts +2 -0
- package/sdks/typescript/api-full/src/serialization/types/MetadataGetResponse.ts +34 -0
- package/sdks/typescript/api-full/src/serialization/types/RunnerConfig.ts +5 -0
- package/sdks/typescript/api-full/src/serialization/types/RunnerConfigKindServerlessServerless.ts +2 -0
- package/sdks/typescript/api-full/src/serialization/types/RunnerConfigResponse.ts +26 -0
- package/sdks/typescript/api-full/src/serialization/types/RunnerConfigServerless.ts +2 -0
- package/sdks/typescript/api-full/src/serialization/types/RunnerConfigsListResponseRunnerConfigsValue.ts +3 -3
- package/sdks/typescript/api-full/src/serialization/types/index.ts +2 -0
- package/sdks/typescript/api-full/turbo.json +9 -0
- package/sdks/typescript/envoy-protocol/.turbo/turbo-build.log +23 -0
- package/sdks/typescript/{runner-protocol → envoy-protocol}/dist/index.cjs +466 -281
- package/sdks/typescript/envoy-protocol/dist/index.cjs.map +1 -0
- package/sdks/typescript/envoy-protocol/dist/index.d.cts +699 -0
- package/sdks/typescript/envoy-protocol/dist/index.d.ts +699 -0
- package/sdks/typescript/{runner-protocol → envoy-protocol}/dist/index.js +530 -345
- package/sdks/typescript/envoy-protocol/dist/index.js.map +1 -0
- package/sdks/typescript/{runner-protocol → envoy-protocol}/node_modules/.bin/tsc +4 -4
- package/{tests/load → sdks/typescript/envoy-protocol}/node_modules/.bin/tsserver +4 -4
- package/sdks/typescript/envoy-protocol/node_modules/.bin/tsup +21 -0
- package/sdks/typescript/envoy-protocol/node_modules/.bin/tsup-node +21 -0
- package/sdks/typescript/envoy-protocol/package.json +36 -0
- package/sdks/typescript/envoy-protocol/src/index.ts +2331 -0
- package/sdks/typescript/envoy-protocol/tsconfig.json +9 -0
- package/sdks/typescript/envoy-protocol/tsup.config.ts +4 -0
- package/sdks/typescript/runner/package.json +8 -2
- package/sdks/typescript/runner/src/actor.ts +38 -0
- package/sdks/typescript/runner/src/mod.ts +435 -229
- package/sdks/typescript/runner/src/stringify.ts +36 -33
- package/sdks/typescript/runner/src/tunnel.ts +52 -56
- package/sdks/typescript/runner/src/utils.ts +19 -0
- package/sdks/typescript/runner/src/websocket-tunnel-adapter.ts +98 -435
- package/sdks/typescript/runner-protocol/package.json +11 -9
- package/sdks/typescript/runner-protocol/src/index.ts +224 -156
- package/sdks/typescript/runner-protocol/tsconfig.json +1 -9
- package/sdks/typescript/test-runner/.turbo/turbo-build.log +5 -5
- package/sdks/typescript/test-runner/dist/index.js +53 -44
- package/sdks/typescript/test-runner/dist/index.js.map +1 -1
- package/sdks/typescript/test-runner/node_modules/.bin/pino +2 -2
- package/sdks/typescript/test-runner/node_modules/.bin/tsc +4 -4
- package/sdks/typescript/test-runner/node_modules/.bin/tsserver +4 -4
- package/sdks/typescript/test-runner/node_modules/.bin/tsup +4 -4
- package/sdks/typescript/test-runner/node_modules/.bin/tsup-node +4 -4
- package/sdks/typescript/test-runner/node_modules/.bin/tsx +4 -4
- package/sdks/typescript/test-runner/node_modules/.bin/vitest +4 -4
- package/sdks/typescript/test-runner/package.json +3 -3
- package/sdks/typescript/test-runner/src/index.ts +65 -42
- package/sdks/typescript/test-runner/src/log.ts +4 -18
- package/artifacts/errors/actor.no_runners_available.json +0 -5
- package/artifacts/errors/guard.actor_destroyed.json +0 -5
- package/artifacts/errors/guard.actor_not_found.json +0 -5
- package/contrib-docs/ACTOR_KEY_RESERVATION.md +0 -101
- package/contrib-docs/API.md +0 -11
- package/contrib-docs/DOCKER.md +0 -5
- package/contrib-docs/ERRORS.md +0 -13
- package/contrib-docs/GUARD.md +0 -76
- package/contrib-docs/PEGBOARD_TUNNEL_RETRIES.md +0 -83
- package/contrib-docs/RUNNER_LIFECYCLE.md +0 -172
- package/contrib-docs/SDKS.md +0 -9
- package/contrib-docs/TEST_DEPENDENCIES.md +0 -43
- package/contrib-docs/design-choicse/EMBEDDED_KV.md +0 -80
- package/contrib-docs/operate/TRACING_RECONFIGURE.md +0 -78
- package/docker/dev/otel-collector-client/config.yaml +0 -39
- package/docker/dev-host/otel-collector-client/config.yaml +0 -39
- package/docker/dev-multidc/datacenters/dc-a/otel-collector-client/config.yaml +0 -39
- package/docker/dev-multidc/datacenters/dc-b/otel-collector-client/config.yaml +0 -39
- package/docker/dev-multidc/datacenters/dc-c/otel-collector-client/config.yaml +0 -39
- package/docker/dev-multidc-multinode/datacenters/dc-a/otel-collector-client/config.yaml +0 -39
- package/docker/dev-multidc-multinode/datacenters/dc-b/otel-collector-client/config.yaml +0 -39
- package/docker/dev-multidc-multinode/datacenters/dc-c/otel-collector-client/config.yaml +0 -39
- package/docker/dev-multinode/otel-collector-client/config.yaml +0 -39
- package/docker/template/src/services/edge/otel-collector-client.ts +0 -64
- package/packages/actor-kv/Cargo.toml +0 -31
- package/packages/actor-kv/src/key.rs +0 -81
- package/packages/actor-kv/src/lib.rs +0 -357
- package/packages/cache/src/rate_limit.rs +0 -109
- package/packages/cache/tests/integration.rs +0 -582
- package/packages/clickhouse-inserter/Cargo.toml +0 -17
- package/packages/clickhouse-inserter/src/error.rs +0 -16
- package/packages/clickhouse-inserter/src/lib.rs +0 -179
- package/packages/clickhouse-user-query/Cargo.toml +0 -16
- package/packages/clickhouse-user-query/examples/case_sensitivity_demo.rs +0 -100
- package/packages/clickhouse-user-query/examples/group_by_example.rs +0 -53
- package/packages/clickhouse-user-query/examples/string_contains_demo.rs +0 -96
- package/packages/clickhouse-user-query/src/builder.rs +0 -445
- package/packages/clickhouse-user-query/src/error.rs +0 -37
- package/packages/clickhouse-user-query/src/lib.rs +0 -61
- package/packages/clickhouse-user-query/src/query.rs +0 -143
- package/packages/clickhouse-user-query/src/schema.rs +0 -78
- package/packages/clickhouse-user-query/tests/builder_tests.rs +0 -619
- package/packages/clickhouse-user-query/tests/case_sensitivity_tests.rs +0 -307
- package/packages/clickhouse-user-query/tests/integration_tests.rs +0 -540
- package/packages/clickhouse-user-query/tests/query_tests.rs +0 -263
- package/packages/clickhouse-user-query/tests/schema_tests.rs +0 -44
- package/packages/config/src/config/vector.rs +0 -18
- package/packages/engine/src/commands/udb_keys.rs +0 -200
- package/packages/engine/tests/actors_create.rs +0 -524
- package/packages/engine/tests/actors_delete.rs +0 -243
- package/packages/engine/tests/actors_general.rs +0 -191
- package/packages/engine/tests/actors_get.rs +0 -230
- package/packages/engine/tests/actors_get_by_id.rs +0 -170
- package/packages/engine/tests/actors_get_or_create.rs +0 -294
- package/packages/engine/tests/actors_get_or_create_by_id.rs +0 -147
- package/packages/engine/tests/actors_lifecycle.rs +0 -165
- package/packages/engine/tests/actors_list.rs +0 -798
- package/packages/engine/tests/actors_list_names.rs +0 -353
- package/packages/engine/tests/common/ns.rs +0 -36
- package/packages/engine/tests/common/runner.rs +0 -134
- package/packages/engine/tests/runners_dupe_key.rs +0 -27
- package/packages/engine/tests/runners_version.rs +0 -50
- package/packages/env/build.rs +0 -8
- package/packages/epoxy/spec/KEYS.md +0 -33
- package/packages/epoxy/spec/PROPOSAL.md +0 -125
- package/packages/epoxy/spec/RECONFIGURE.md +0 -40
- package/packages/epoxy/src/ops/explicit_prepare.rs +0 -342
- package/packages/epoxy/src/replica/decide_path.rs +0 -51
- package/packages/epoxy/src/replica/lead_consensus.rs +0 -65
- package/packages/epoxy/src/replica/log.rs +0 -84
- package/packages/epoxy/src/replica/messages/accepted.rs +0 -35
- package/packages/epoxy/src/replica/messages/committed.rs +0 -41
- package/packages/epoxy/src/replica/messages/download_instances.rs +0 -69
- package/packages/epoxy/src/replica/messages/pre_accept.rs +0 -69
- package/packages/epoxy/src/replica/utils.rs +0 -111
- package/packages/epoxy/src/workflows/purger.rs +0 -81
- package/packages/guard/src/cache/actor.rs +0 -43
- package/packages/guard/src/middleware.rs +0 -42
- package/packages/guard/src/routing/pegboard_gateway.rs +0 -260
- package/packages/guard-core/src/analytics.rs +0 -46
- package/packages/internal/README.md +0 -1
- package/packages/internal/src/lib.rs +0 -1
- package/packages/internal/src/ops/bump_serverless_autoscaler_global.rs +0 -64
- package/packages/internal/src/ops/cache/mod.rs +0 -1
- package/packages/internal/src/ops/cache/purge_global.rs +0 -81
- package/packages/internal/src/ops/mod.rs +0 -2
- package/packages/namespace/src/ops/runner_config/mod.rs +0 -4
- package/packages/namespace/src/ops/runner_config/upsert.rs +0 -148
- package/packages/pegboard/src/ops/actor/get_runner.rs +0 -64
- package/packages/pegboard/src/ops/runner/find_dc_with_runner.rs +0 -222
- package/packages/pegboard-serverless/src/lib.rs +0 -523
- package/packages/types/src/msgs/mod.rs +0 -1
- package/packages/types/src/msgs/pegboard.rs +0 -5
- package/sdks/rust/epoxy-protocol/src/versioned.rs +0 -206
- package/sdks/rust/runner-protocol/build.rs +0 -115
- package/sdks/rust/runner-protocol/src/lib.rs +0 -10
- package/sdks/rust/runner-protocol/src/versioned.rs +0 -1734
- package/sdks/schemas/epoxy-protocol/v1.bare +0 -260
- package/sdks/typescript/runner/.turbo/turbo-build.log +0 -22
- package/sdks/typescript/runner/dist/mod.cjs +0 -2951
- package/sdks/typescript/runner/dist/mod.cjs.map +0 -1
- package/sdks/typescript/runner/dist/mod.d.cts +0 -326
- package/sdks/typescript/runner/dist/mod.d.ts +0 -326
- package/sdks/typescript/runner/dist/mod.js +0 -2951
- package/sdks/typescript/runner/dist/mod.js.map +0 -1
- package/sdks/typescript/runner/node_modules/.bin/pino +0 -21
- package/sdks/typescript/runner/node_modules/.bin/tsc +0 -21
- package/sdks/typescript/runner/node_modules/.bin/tsserver +0 -21
- package/sdks/typescript/runner/node_modules/.bin/tsup +0 -21
- package/sdks/typescript/runner/node_modules/.bin/tsup-node +0 -21
- package/sdks/typescript/runner/node_modules/.bin/tsx +0 -21
- package/sdks/typescript/runner/node_modules/.bin/uuid +0 -21
- package/sdks/typescript/runner/node_modules/.bin/vitest +0 -21
- package/sdks/typescript/runner-protocol/.turbo/turbo-build.log +0 -22
- package/sdks/typescript/runner-protocol/dist/index.cjs.map +0 -1
- package/sdks/typescript/runner-protocol/dist/index.d.cts +0 -666
- package/sdks/typescript/runner-protocol/dist/index.d.ts +0 -666
- package/sdks/typescript/runner-protocol/dist/index.js.map +0 -1
- package/sdks/typescript/runner-protocol/node_modules/.bin/tsserver +0 -21
- package/sdks/typescript/runner-protocol/node_modules/.bin/tsup +0 -21
- package/sdks/typescript/runner-protocol/node_modules/.bin/tsup-node +0 -21
- package/sdks/typescript/test-runner/Dockerfile +0 -26
- package/tests/load/README.md +0 -28
- package/tests/load/actor-lifecycle/README.md +0 -26
- package/tests/load/actor-lifecycle/actor.ts +0 -41
- package/tests/load/actor-lifecycle/config.ts +0 -14
- package/tests/load/actor-lifecycle/index.ts +0 -62
- package/tests/load/actor-lifecycle/rivet_api.ts +0 -140
- package/tests/load/actor-lifecycle/types.ts +0 -17
- package/tests/load/node_modules/.bin/biome +0 -21
- package/tests/load/node_modules/.bin/tsc +0 -21
- package/tests/load/package.json +0 -15
- package/tests/load/tsconfig.json +0 -20
- package/tests/smoke/README.md +0 -32
- package/tests/smoke/package.json +0 -19
- package/tests/smoke/scripts/connect.ts +0 -41
- package/tests/smoke/src/server/registry.ts +0 -32
- package/tests/smoke/src/server/server.ts +0 -7
- package/tests/smoke/src/smoke-test/index.ts +0 -161
- package/tests/smoke/src/smoke-test/spawn-actor.ts +0 -109
- package/tests/smoke/tsconfig.json +0 -43
- /package/packages/{dump-openapi → api-public-openapi-gen}/build.rs +0 -0
- /package/packages/{dump-openapi → api-public-openapi-gen}/src/lib.rs +0 -0
- /package/{sdks/rust → packages}/runner-protocol/Cargo.toml +0 -0
- /package/{sdks/rust → packages}/runner-protocol/src/compat.rs +0 -0
- /package/{sdks/rust → packages}/runner-protocol/src/generated.rs +0 -0
- /package/{sdks/rust → packages}/runner-protocol/src/uuid_compat.rs +0 -0
- /package/sdks/rust/{runner-protocol → envoy-protocol}/src/util.rs +0 -0
- /package/{tests/smoke → sdks/typescript/envoy-protocol}/turbo.json +0 -0
|
@@ -7,39 +7,35 @@ pub struct Pegboard {
|
|
|
7
7
|
/// Time to delay an actor from rescheduling after a rescheduling failure.
|
|
8
8
|
///
|
|
9
9
|
/// Unit is in milliseconds.
|
|
10
|
-
///
|
|
11
|
-
/// **Experimental**
|
|
12
10
|
pub base_retry_timeout: Option<usize>,
|
|
13
|
-
/// How long to wait
|
|
11
|
+
/// How long to wait for an ack response from the outbound request layer before setting actor as lost.
|
|
14
12
|
///
|
|
15
13
|
/// Unit is in milliseconds.
|
|
14
|
+
pub actor_allocation_threshold: Option<i64>,
|
|
15
|
+
/// How long to wait after creating and not receiving a starting state before setting actor as lost.
|
|
16
16
|
///
|
|
17
|
-
///
|
|
17
|
+
/// Unit is in milliseconds.
|
|
18
18
|
pub actor_start_threshold: Option<i64>,
|
|
19
19
|
/// How long to wait after stopping and not receiving a stop state before setting actor as lost.
|
|
20
20
|
///
|
|
21
21
|
/// Unit is in milliseconds.
|
|
22
|
-
///
|
|
23
|
-
/// **Experimental**
|
|
24
22
|
pub actor_stop_threshold: Option<i64>,
|
|
23
|
+
/// How long to wait after starting to attempt to reallocate before before setting actor to sleep.
|
|
24
|
+
///
|
|
25
|
+
/// Unit is in milliseconds.
|
|
26
|
+
pub actor_retry_duration_threshold: Option<i64>,
|
|
25
27
|
/// How long an actor goes without retries before it's retry count is reset to 0, effectively resetting its
|
|
26
28
|
/// backoff to 0.
|
|
27
29
|
///
|
|
28
30
|
/// Unit is in milliseconds.
|
|
29
|
-
///
|
|
30
|
-
/// **Experimental**
|
|
31
31
|
pub retry_reset_duration: Option<i64>,
|
|
32
32
|
/// Maximum exponent for the reschedule backoff calculation.
|
|
33
33
|
///
|
|
34
34
|
/// This controls the maximum backoff duration when rescheduling actors.
|
|
35
|
-
///
|
|
36
|
-
/// **Experimental**
|
|
37
35
|
pub reschedule_backoff_max_exponent: Option<usize>,
|
|
38
36
|
/// How long after last ping before considering a runner ineligible for allocation.
|
|
39
37
|
///
|
|
40
38
|
/// Unit is in milliseconds.
|
|
41
|
-
///
|
|
42
|
-
/// **Experimental**
|
|
43
39
|
pub runner_eligible_threshold: Option<i64>,
|
|
44
40
|
/// How long to wait after last ping before forcibly removing a runner from the database
|
|
45
41
|
/// and deleting its workflow, evicting all actors.
|
|
@@ -47,15 +43,116 @@ pub struct Pegboard {
|
|
|
47
43
|
/// Note that the runner may still be running and can reconnect.
|
|
48
44
|
///
|
|
49
45
|
/// Unit is in milliseconds.
|
|
50
|
-
///
|
|
51
|
-
/// **Experimental**
|
|
52
46
|
pub runner_lost_threshold: Option<i64>,
|
|
53
47
|
/// How long after last ping before considering a hibernating request disconnected.
|
|
54
48
|
///
|
|
55
49
|
/// Unit is in milliseconds.
|
|
56
|
-
///
|
|
57
|
-
/// **Experimental**
|
|
58
50
|
pub hibernating_request_eligible_threshold: Option<i64>,
|
|
51
|
+
/// Time to delay a serverless runner from attempting a new outbound connection after a connection failure.
|
|
52
|
+
///
|
|
53
|
+
/// Unit is in milliseconds.
|
|
54
|
+
pub serverless_base_retry_timeout: Option<usize>,
|
|
55
|
+
/// How long a serverless runner goes without connection failures before it's retry count is reset to 0,
|
|
56
|
+
/// effectively resetting its backoff to 0.
|
|
57
|
+
///
|
|
58
|
+
/// Unit is in milliseconds.
|
|
59
|
+
pub serverless_retry_reset_duration: Option<i64>,
|
|
60
|
+
/// Maximum exponent for the serverless backoff calculation.
|
|
61
|
+
///
|
|
62
|
+
/// This controls the maximum backoff duration when serverlessly connecting to runners.
|
|
63
|
+
pub serverless_backoff_max_exponent: Option<usize>,
|
|
64
|
+
|
|
65
|
+
/// Global pool desired max.
|
|
66
|
+
pub pool_desired_max_override: Option<u32>,
|
|
67
|
+
|
|
68
|
+
/// Default metadata poll interval for serverless runners when not specified in runner config.
|
|
69
|
+
///
|
|
70
|
+
/// Unit is in milliseconds.
|
|
71
|
+
pub default_metadata_poll_interval: Option<u64>,
|
|
72
|
+
|
|
73
|
+
/// Minimum metadata poll interval for serverless runners.
|
|
74
|
+
///
|
|
75
|
+
/// The actual poll interval will be the maximum of this value and the runner config's
|
|
76
|
+
/// `metadata_poll_interval` setting. This prevents excessive polling even if the
|
|
77
|
+
/// runner config specifies a very short interval.
|
|
78
|
+
///
|
|
79
|
+
/// Unit is in milliseconds.
|
|
80
|
+
pub min_metadata_poll_interval: Option<u64>,
|
|
81
|
+
|
|
82
|
+
/// Number of consecutive successes required to clear an active runner pool error.
|
|
83
|
+
///
|
|
84
|
+
/// This prevents a single success from clearing an error during flapping conditions.
|
|
85
|
+
/// Higher values provide more stability but slower recovery from transient errors.
|
|
86
|
+
pub runner_pool_consecutive_successes_to_clear_error: Option<u32>,
|
|
87
|
+
|
|
88
|
+
/// Amount of runners to query from the allocation queue and choose at random when allocating an actor.
|
|
89
|
+
pub actor_allocation_candidate_sample_size: Option<usize>,
|
|
90
|
+
|
|
91
|
+
/// Max response payload size in bytes from actors.
|
|
92
|
+
pub runner_max_response_payload_body_size: Option<usize>,
|
|
93
|
+
/// Ping interval for runner updates in milliseconds.
|
|
94
|
+
pub runner_update_ping_interval_ms: Option<u64>,
|
|
95
|
+
/// Max time since last pong before the runner connection is terminated. Unit is in milliseconds.
|
|
96
|
+
pub runner_ping_timeout_ms: Option<i64>,
|
|
97
|
+
/// GC interval for actor event demuxer in milliseconds.
|
|
98
|
+
pub runner_event_demuxer_gc_interval_ms: Option<u64>,
|
|
99
|
+
/// Max time since last seen before actor is considered stale, in milliseconds.
|
|
100
|
+
pub runner_event_demuxer_max_last_seen_ms: Option<u64>,
|
|
101
|
+
|
|
102
|
+
// === Gateway Settings ===
|
|
103
|
+
/// WebSocket open/handshake timeout in milliseconds.
|
|
104
|
+
pub gateway_websocket_open_timeout_ms: Option<u64>,
|
|
105
|
+
/// Timeout for response to start in milliseconds.
|
|
106
|
+
pub gateway_response_start_timeout_ms: Option<u64>,
|
|
107
|
+
/// Ping interval for gateway updates in milliseconds.
|
|
108
|
+
pub gateway_update_ping_interval_ms: Option<u64>,
|
|
109
|
+
/// GC interval for in-flight requests in milliseconds.
|
|
110
|
+
pub gateway_gc_interval_ms: Option<u64>,
|
|
111
|
+
/// Tunnel ping timeout in milliseconds.
|
|
112
|
+
pub gateway_tunnel_ping_timeout_ms: Option<i64>,
|
|
113
|
+
/// Hibernating WebSocket message ack timeout in milliseconds.
|
|
114
|
+
pub gateway_hws_message_ack_timeout_ms: Option<u64>,
|
|
115
|
+
/// Max pending message buffer size for hibernating WebSockets in bytes.
|
|
116
|
+
pub gateway_hws_max_pending_size: Option<u64>,
|
|
117
|
+
/// Max HTTP request body size in bytes for requests to actors.
|
|
118
|
+
pub gateway_http_max_request_body_size: Option<usize>,
|
|
119
|
+
|
|
120
|
+
// === Envoy Settings ===
|
|
121
|
+
/// How long to wait before considering an envoy lost and evicting all of its actors.
|
|
122
|
+
///
|
|
123
|
+
/// Unit is in milliseconds.
|
|
124
|
+
pub envoy_lost_threshold: Option<i64>,
|
|
125
|
+
/// Max time since last pong before the envoy connection is terminated. Unit is in milliseconds.
|
|
126
|
+
pub envoy_ping_timeout: Option<i64>,
|
|
127
|
+
/// GC interval for actor event demuxer in milliseconds.
|
|
128
|
+
pub envoy_event_demuxer_gc_interval: Option<u64>,
|
|
129
|
+
/// Max time since last seen before actor is considered stale, in milliseconds.
|
|
130
|
+
pub envoy_event_demuxer_max_last_seen_threshold: Option<u64>,
|
|
131
|
+
/// Max response payload size in bytes from actors.
|
|
132
|
+
pub envoy_max_response_payload_size: Option<usize>,
|
|
133
|
+
/// Ping interval for envoy updates in milliseconds.
|
|
134
|
+
pub envoy_update_ping_interval: Option<u64>,
|
|
135
|
+
/// How long after last ping before considering a envoy ineligible for allocation.
|
|
136
|
+
///
|
|
137
|
+
/// Unit is in milliseconds.
|
|
138
|
+
pub envoy_eligible_threshold: Option<i64>,
|
|
139
|
+
|
|
140
|
+
// === Serverless Settings ===
|
|
141
|
+
/// Drain grace period for serverless runners.
|
|
142
|
+
///
|
|
143
|
+
/// This time is subtracted from the configured request duration. Once `duration - grace` is reached, the
|
|
144
|
+
/// runner is sent stop commands for all of its actors. After the grace period is over (i.e. the full
|
|
145
|
+
/// duration is reached) the runner websocket is forcibly closed.
|
|
146
|
+
///
|
|
147
|
+
/// Unit is in milliseconds.
|
|
148
|
+
pub serverless_drain_grace_period: Option<u64>,
|
|
149
|
+
|
|
150
|
+
// === KV Preload Settings ===
|
|
151
|
+
/// Maximum total size of all preloaded KV data sent with the actor start command.
|
|
152
|
+
/// Setting to 0 disables all preloading.
|
|
153
|
+
///
|
|
154
|
+
/// Unit is in bytes. Default: 1,048,576 (1 MiB).
|
|
155
|
+
pub preload_max_total_bytes: Option<u64>,
|
|
59
156
|
}
|
|
60
157
|
|
|
61
158
|
impl Pegboard {
|
|
@@ -63,14 +160,24 @@ impl Pegboard {
|
|
|
63
160
|
self.base_retry_timeout.unwrap_or(2000)
|
|
64
161
|
}
|
|
65
162
|
|
|
163
|
+
pub fn actor_allocation_threshold(&self) -> i64 {
|
|
164
|
+
self.actor_allocation_threshold.unwrap_or(2_000)
|
|
165
|
+
}
|
|
166
|
+
|
|
66
167
|
pub fn actor_start_threshold(&self) -> i64 {
|
|
67
168
|
self.actor_start_threshold.unwrap_or(30_000)
|
|
68
169
|
}
|
|
69
170
|
|
|
171
|
+
/// When changing this default, update
|
|
172
|
+
/// website/src/content/docs/actors/versions.mdx (SIGTERM Handling section).
|
|
70
173
|
pub fn actor_stop_threshold(&self) -> i64 {
|
|
71
174
|
self.actor_stop_threshold.unwrap_or(30_000)
|
|
72
175
|
}
|
|
73
176
|
|
|
177
|
+
pub fn actor_retry_duration_threshold(&self) -> i64 {
|
|
178
|
+
self.actor_retry_duration_threshold.unwrap_or(300_000)
|
|
179
|
+
}
|
|
180
|
+
|
|
74
181
|
pub fn retry_reset_duration(&self) -> i64 {
|
|
75
182
|
self.retry_reset_duration.unwrap_or(10 * 60 * 1000)
|
|
76
183
|
}
|
|
@@ -91,4 +198,123 @@ impl Pegboard {
|
|
|
91
198
|
self.hibernating_request_eligible_threshold
|
|
92
199
|
.unwrap_or(90_000)
|
|
93
200
|
}
|
|
201
|
+
|
|
202
|
+
pub fn serverless_base_retry_timeout(&self) -> usize {
|
|
203
|
+
self.serverless_base_retry_timeout.unwrap_or(2000)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
pub fn serverless_retry_reset_duration(&self) -> i64 {
|
|
207
|
+
self.serverless_retry_reset_duration
|
|
208
|
+
.unwrap_or(10 * 60 * 1000)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
pub fn serverless_backoff_max_exponent(&self) -> usize {
|
|
212
|
+
self.serverless_backoff_max_exponent.unwrap_or(8)
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
pub fn runner_pool_error_consecutive_successes_to_clear(&self) -> u32 {
|
|
216
|
+
self.runner_pool_consecutive_successes_to_clear_error
|
|
217
|
+
.unwrap_or(3)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
pub fn default_metadata_poll_interval(&self) -> u64 {
|
|
221
|
+
self.default_metadata_poll_interval.unwrap_or(10_000)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
pub fn min_metadata_poll_interval(&self) -> u64 {
|
|
225
|
+
self.min_metadata_poll_interval.unwrap_or(5_000)
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
pub fn actor_allocation_candidate_sample_size(&self) -> usize {
|
|
229
|
+
self.actor_allocation_candidate_sample_size.unwrap_or(100)
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
pub fn gateway_websocket_open_timeout_ms(&self) -> u64 {
|
|
233
|
+
self.gateway_websocket_open_timeout_ms.unwrap_or(15_000)
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
pub fn gateway_response_start_timeout_ms(&self) -> u64 {
|
|
237
|
+
self.gateway_response_start_timeout_ms
|
|
238
|
+
.unwrap_or(5 * 60 * 1000) // 5 minutes
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
pub fn gateway_update_ping_interval_ms(&self) -> u64 {
|
|
242
|
+
self.gateway_update_ping_interval_ms.unwrap_or(3_000)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
pub fn gateway_gc_interval_ms(&self) -> u64 {
|
|
246
|
+
self.gateway_gc_interval_ms.unwrap_or(15_000)
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
pub fn gateway_tunnel_ping_timeout_ms(&self) -> i64 {
|
|
250
|
+
self.gateway_tunnel_ping_timeout_ms.unwrap_or(30_000)
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
pub fn gateway_hws_message_ack_timeout_ms(&self) -> u64 {
|
|
254
|
+
self.gateway_hws_message_ack_timeout_ms.unwrap_or(30_000)
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
pub fn gateway_hws_max_pending_size(&self) -> u64 {
|
|
258
|
+
self.gateway_hws_max_pending_size
|
|
259
|
+
.unwrap_or(128 * 1024 * 1024) // 128 MiB
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
pub fn runner_max_response_payload_body_size(&self) -> usize {
|
|
263
|
+
self.runner_max_response_payload_body_size
|
|
264
|
+
.unwrap_or(20 * 1024 * 1024) // 20 MiB
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
pub fn runner_update_ping_interval_ms(&self) -> u64 {
|
|
268
|
+
self.runner_update_ping_interval_ms.unwrap_or(3_000)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
pub fn runner_ping_timeout_ms(&self) -> i64 {
|
|
272
|
+
self.runner_ping_timeout_ms.unwrap_or(15_000)
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
pub fn runner_event_demuxer_gc_interval_ms(&self) -> u64 {
|
|
276
|
+
self.runner_event_demuxer_gc_interval_ms.unwrap_or(30_000)
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
pub fn runner_event_demuxer_max_last_seen_ms(&self) -> u64 {
|
|
280
|
+
self.runner_event_demuxer_max_last_seen_ms.unwrap_or(30_000)
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
pub fn envoy_lost_threshold(&self) -> i64 {
|
|
284
|
+
self.envoy_lost_threshold.unwrap_or(15_000)
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
pub fn envoy_ping_timeout(&self) -> i64 {
|
|
288
|
+
self.envoy_ping_timeout.unwrap_or(15_000)
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
pub fn envoy_event_demuxer_gc_interval(&self) -> u64 {
|
|
292
|
+
self.envoy_event_demuxer_gc_interval.unwrap_or(30_000)
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
pub fn envoy_event_demuxer_max_last_seen_threshold(&self) -> u64 {
|
|
296
|
+
self.envoy_event_demuxer_max_last_seen_threshold
|
|
297
|
+
.unwrap_or(30_000)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
pub fn envoy_max_response_payload_size(&self) -> usize {
|
|
301
|
+
self.envoy_max_response_payload_size
|
|
302
|
+
.unwrap_or(20 * 1024 * 1024) // 20 MiB
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
pub fn envoy_update_ping_interval(&self) -> u64 {
|
|
306
|
+
self.envoy_update_ping_interval.unwrap_or(3_000)
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
pub fn envoy_eligible_threshold(&self) -> i64 {
|
|
310
|
+
self.envoy_eligible_threshold.unwrap_or(10_000)
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
pub fn serverless_drain_grace_period(&self) -> u64 {
|
|
314
|
+
self.serverless_drain_grace_period.unwrap_or(10_000)
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
pub fn preload_max_total_bytes(&self) -> u64 {
|
|
318
|
+
self.preload_max_total_bytes.unwrap_or(1_048_576)
|
|
319
|
+
}
|
|
94
320
|
}
|
|
@@ -3,6 +3,8 @@ use serde::{Deserialize, Serialize};
|
|
|
3
3
|
|
|
4
4
|
use crate::secret::Secret;
|
|
5
5
|
|
|
6
|
+
use super::db::PostgresSsl;
|
|
7
|
+
|
|
6
8
|
#[derive(Debug, Serialize, Deserialize, Clone, JsonSchema)]
|
|
7
9
|
#[serde(rename_all = "snake_case", deny_unknown_fields)]
|
|
8
10
|
pub enum PubSub {
|
|
@@ -18,13 +20,21 @@ impl Default for PubSub {
|
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
#[derive(Debug, Serialize, Deserialize, Clone, JsonSchema)]
|
|
23
|
+
#[serde(deny_unknown_fields)]
|
|
21
24
|
pub struct Postgres {
|
|
22
25
|
/// URL to connect to Postgres with
|
|
23
26
|
///
|
|
27
|
+
/// Supports standard PostgreSQL connection parameters including `sslmode`.
|
|
28
|
+
/// Supported sslmode values: `disable`, `prefer` (default), `require`.
|
|
29
|
+
/// To verify server certificates, use `sslmode=require` with `ssl.root_cert_path`.
|
|
30
|
+
///
|
|
24
31
|
/// See: https://docs.rs/postgres/0.19.10/postgres/config/struct.Config.html#url
|
|
25
32
|
pub url: Secret<String>,
|
|
26
33
|
#[serde(default = "default_mem_opt")]
|
|
27
34
|
pub memory_optimization: bool,
|
|
35
|
+
/// SSL configuration options
|
|
36
|
+
#[serde(default)]
|
|
37
|
+
pub ssl: Option<PostgresSsl>,
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
impl Default for Postgres {
|
|
@@ -32,6 +42,7 @@ impl Default for Postgres {
|
|
|
32
42
|
Self {
|
|
33
43
|
url: Secret::new("postgresql://postgres:postgres@127.0.0.1:5432/postgres".into()),
|
|
34
44
|
memory_optimization: true,
|
|
45
|
+
ssl: None,
|
|
35
46
|
}
|
|
36
47
|
}
|
|
37
48
|
}
|
|
@@ -4,19 +4,50 @@ use schemars::JsonSchema;
|
|
|
4
4
|
use serde::{Deserialize, Serialize};
|
|
5
5
|
|
|
6
6
|
#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
|
|
7
|
+
#[serde(deny_unknown_fields)]
|
|
7
8
|
pub struct Runtime {
|
|
9
|
+
/// Adjusts worker curve around this value (in millicores, i.e. 1000 = 1 core). Is not a hard limit. When
|
|
10
|
+
/// unset, uses /sys/fs/cgroup/cpu.max, and if that is unset uses total host cpu.
|
|
11
|
+
pub worker_cpu_max: Option<usize>,
|
|
12
|
+
/// Determine load shedding ratio based on linear mapping on cpu usage. We will gradually
|
|
13
|
+
/// pull less workflows as the cpu usage increases. Units are in (permilli overall cpu usage, permilli)
|
|
14
|
+
/// Default:
|
|
15
|
+
/// | . .
|
|
16
|
+
/// 100% | _____ .
|
|
17
|
+
/// | .\ .
|
|
18
|
+
/// % wfs | . \ .
|
|
19
|
+
/// | . \.
|
|
20
|
+
/// 5% | . \_____
|
|
21
|
+
/// |_____.___.______
|
|
22
|
+
/// 0 70% 90%
|
|
23
|
+
/// avg cpu usage
|
|
24
|
+
worker_load_shedding_curve: Option<[(u64, u64); 2]>,
|
|
8
25
|
/// Time (in seconds) to allow for the gasoline worker engine to stop gracefully after receiving SIGTERM.
|
|
9
26
|
/// Defaults to 30 seconds.
|
|
10
27
|
worker_shutdown_duration: Option<u32>,
|
|
11
28
|
/// Time (in seconds) to allow for guard to wait for pending requests after receiving SIGTERM. Defaults
|
|
12
29
|
/// to 1 hour.
|
|
13
30
|
guard_shutdown_duration: Option<u32>,
|
|
31
|
+
/// Time (in seconds) after which the engine process will forcibly exit after receiving SIGTERM.
|
|
32
|
+
/// Must be greater than both worker_shutdown_duration and guard_shutdown_duration.
|
|
33
|
+
/// Defaults to guard_shutdown_duration + 30 seconds.
|
|
34
|
+
force_shutdown_duration: Option<u32>,
|
|
14
35
|
/// Whether or not to allow running the engine when the previous version that was run is higher than
|
|
15
36
|
/// the current version.
|
|
16
37
|
allow_version_rollback: Option<bool>,
|
|
38
|
+
/// Time (in seconds) after completion before considering a workflow eligible for pruning. Defaults to 7
|
|
39
|
+
/// days. Set to 0 to never prune workflow data.
|
|
40
|
+
gasoline_prune_eligibility_duration: Option<u64>,
|
|
41
|
+
/// Time (in seconds) to periodically check for workflows to prune. Defaults to 12 hours.
|
|
42
|
+
gasoline_prune_interval_duration: Option<u64>,
|
|
17
43
|
}
|
|
18
44
|
|
|
19
45
|
impl Runtime {
|
|
46
|
+
pub fn worker_load_shedding_curve(&self) -> [(u64, u64); 2] {
|
|
47
|
+
self.worker_load_shedding_curve
|
|
48
|
+
.unwrap_or([(700, 1000), (900, 50)])
|
|
49
|
+
}
|
|
50
|
+
|
|
20
51
|
pub fn worker_shutdown_duration(&self) -> Duration {
|
|
21
52
|
Duration::from_secs(self.worker_shutdown_duration.unwrap_or(30) as u64)
|
|
22
53
|
}
|
|
@@ -25,7 +56,34 @@ impl Runtime {
|
|
|
25
56
|
Duration::from_secs(self.guard_shutdown_duration.unwrap_or(60 * 60) as u64)
|
|
26
57
|
}
|
|
27
58
|
|
|
59
|
+
/// Returns the force shutdown duration, defaulting to guard_shutdown_duration + 30 seconds.
|
|
60
|
+
pub fn force_shutdown_duration(&self) -> Duration {
|
|
61
|
+
self.force_shutdown_duration.map_or_else(
|
|
62
|
+
|| self.guard_shutdown_duration() + Duration::from_secs(30),
|
|
63
|
+
|secs| Duration::from_secs(secs as u64),
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
|
|
28
67
|
pub fn allow_version_rollback(&self) -> bool {
|
|
29
68
|
self.allow_version_rollback.unwrap_or_default()
|
|
30
69
|
}
|
|
70
|
+
|
|
71
|
+
pub fn gasoline_prune_eligibility_duration(&self) -> Option<Duration> {
|
|
72
|
+
if let Some(prune_eligibility_duration) = self.gasoline_prune_eligibility_duration {
|
|
73
|
+
if prune_eligibility_duration == 0 {
|
|
74
|
+
None
|
|
75
|
+
} else {
|
|
76
|
+
Some(Duration::from_secs(prune_eligibility_duration))
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
Some(Duration::from_secs(60 * 60 * 24 * 7))
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
pub fn gasoline_prune_interval_duration(&self) -> Duration {
|
|
84
|
+
Duration::from_secs(
|
|
85
|
+
self.gasoline_prune_interval_duration
|
|
86
|
+
.unwrap_or(60 * 60 * 12),
|
|
87
|
+
)
|
|
88
|
+
}
|
|
31
89
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
use anyhow::{Context, Result};
|
|
2
2
|
use schemars::JsonSchema;
|
|
3
3
|
use serde::{Deserialize, Serialize};
|
|
4
|
+
use std::collections::HashMap;
|
|
4
5
|
use url::Url;
|
|
5
6
|
|
|
6
7
|
#[derive(Debug, Serialize, Deserialize, Clone, JsonSchema)]
|
|
@@ -8,8 +9,8 @@ use url::Url;
|
|
|
8
9
|
pub struct Topology {
|
|
9
10
|
/// Must be included in `datacenters`
|
|
10
11
|
pub datacenter_label: u16,
|
|
11
|
-
///
|
|
12
|
-
pub datacenters:
|
|
12
|
+
/// Map of all datacenters, including this datacenter.
|
|
13
|
+
pub datacenters: DatacentersRepr,
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
impl Topology {
|
|
@@ -47,23 +48,78 @@ impl Default for Topology {
|
|
|
47
48
|
fn default() -> Self {
|
|
48
49
|
Topology {
|
|
49
50
|
datacenter_label: 1,
|
|
50
|
-
datacenters:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
datacenters: DatacentersRepr::Map(
|
|
52
|
+
[(
|
|
53
|
+
"default".to_string(),
|
|
54
|
+
Datacenter {
|
|
55
|
+
name: "default".into(),
|
|
56
|
+
datacenter_label: 1,
|
|
57
|
+
is_leader: true,
|
|
58
|
+
public_url: Url::parse(&format!(
|
|
59
|
+
"http://127.0.0.1:{}",
|
|
60
|
+
crate::defaults::ports::GUARD
|
|
61
|
+
))
|
|
62
|
+
.unwrap(),
|
|
63
|
+
peer_url: Url::parse(&format!(
|
|
64
|
+
"http://127.0.0.1:{}",
|
|
65
|
+
crate::defaults::ports::API_PEER
|
|
66
|
+
))
|
|
67
|
+
.unwrap(),
|
|
68
|
+
proxy_url: None,
|
|
69
|
+
valid_hosts: None,
|
|
70
|
+
},
|
|
71
|
+
)]
|
|
72
|
+
.into(),
|
|
73
|
+
),
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
|
|
79
|
+
#[serde(untagged)]
|
|
80
|
+
pub enum DatacentersRepr {
|
|
81
|
+
Map(HashMap<String, Datacenter>),
|
|
82
|
+
/// Deprecated.
|
|
83
|
+
List(Vec<Datacenter>),
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
impl DatacentersRepr {
|
|
87
|
+
pub fn iter(&self) -> DatacentersIter<'_> {
|
|
88
|
+
self.into_iter()
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
pub fn len(&self) -> usize {
|
|
92
|
+
match self {
|
|
93
|
+
DatacentersRepr::Map(m) => m.len(),
|
|
94
|
+
DatacentersRepr::List(l) => l.len(),
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
pub enum DatacentersIter<'a> {
|
|
100
|
+
Map(std::collections::hash_map::Values<'a, String, Datacenter>),
|
|
101
|
+
List(std::slice::Iter<'a, Datacenter>),
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
impl<'a> Iterator for DatacentersIter<'a> {
|
|
105
|
+
type Item = &'a Datacenter;
|
|
106
|
+
|
|
107
|
+
fn next(&mut self) -> Option<Self::Item> {
|
|
108
|
+
match self {
|
|
109
|
+
DatacentersIter::Map(iter) => iter.next(),
|
|
110
|
+
DatacentersIter::List(iter) => iter.next(),
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
impl<'a> IntoIterator for &'a DatacentersRepr {
|
|
116
|
+
type Item = &'a Datacenter;
|
|
117
|
+
type IntoIter = DatacentersIter<'a>;
|
|
118
|
+
|
|
119
|
+
fn into_iter(self) -> Self::IntoIter {
|
|
120
|
+
match self {
|
|
121
|
+
DatacentersRepr::Map(map) => DatacentersIter::Map(map.values()),
|
|
122
|
+
DatacentersRepr::List(vec) => DatacentersIter::List(vec.iter()),
|
|
67
123
|
}
|
|
68
124
|
}
|
|
69
125
|
}
|
|
@@ -71,6 +127,9 @@ impl Default for Topology {
|
|
|
71
127
|
#[derive(Debug, Serialize, Deserialize, Clone, JsonSchema)]
|
|
72
128
|
#[serde(deny_unknown_fields)]
|
|
73
129
|
pub struct Datacenter {
|
|
130
|
+
/// When configuring `datacenters` via a hashmap this is automatically derived from the key. Required
|
|
131
|
+
/// when configuring via list (which is deprecated)
|
|
132
|
+
#[serde(default = "String::new")]
|
|
74
133
|
pub name: String,
|
|
75
134
|
pub datacenter_label: u16,
|
|
76
135
|
pub is_leader: bool,
|
|
@@ -3,9 +3,12 @@ pub mod hosts {
|
|
|
3
3
|
|
|
4
4
|
pub const GUARD: IpAddr = IpAddr::V6(Ipv6Addr::UNSPECIFIED);
|
|
5
5
|
pub const API_PEER: IpAddr = IpAddr::V6(Ipv6Addr::UNSPECIFIED);
|
|
6
|
+
pub const METRICS: IpAddr = IpAddr::V6(Ipv6Addr::UNSPECIFIED);
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
pub mod ports {
|
|
9
10
|
pub const GUARD: u16 = 6420;
|
|
10
11
|
pub const API_PEER: u16 = 6421;
|
|
12
|
+
|
|
13
|
+
pub const METRICS: u16 = 6430;
|
|
11
14
|
}
|
|
@@ -79,11 +79,15 @@ fn add_source<P: AsRef<Path>>(
|
|
|
79
79
|
let path = path.as_ref();
|
|
80
80
|
|
|
81
81
|
if !path.exists() {
|
|
82
|
+
tracing::debug!(path=%path.display(), "ignoring non-existent config path");
|
|
83
|
+
|
|
82
84
|
// Silently ignore non-existent paths
|
|
83
85
|
return Ok(settings);
|
|
84
86
|
}
|
|
85
87
|
|
|
86
88
|
if path.is_dir() {
|
|
89
|
+
tracing::debug!(path=%path.display(), "loading config from directory");
|
|
90
|
+
|
|
87
91
|
for entry in std::fs::read_dir(path)? {
|
|
88
92
|
let entry = entry?;
|
|
89
93
|
let path = entry.path();
|
|
@@ -96,9 +100,14 @@ fn add_source<P: AsRef<Path>>(
|
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
102
|
} else if path.is_file() {
|
|
103
|
+
tracing::debug!(path=%path.display(), "loading config from file");
|
|
104
|
+
|
|
99
105
|
settings = add_file_source(settings, path)?;
|
|
100
106
|
} else {
|
|
101
|
-
bail!(
|
|
107
|
+
bail!(
|
|
108
|
+
"Invalid Rivet config path: {}. Ensure the path exists and is either a directory with config files or a specific config file.",
|
|
109
|
+
path.display()
|
|
110
|
+
);
|
|
102
111
|
}
|
|
103
112
|
|
|
104
113
|
Ok(settings)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "rivet-config-schema-gen"
|
|
3
|
+
version.workspace = true
|
|
4
|
+
authors.workspace = true
|
|
5
|
+
license.workspace = true
|
|
6
|
+
edition.workspace = true
|
|
7
|
+
|
|
8
|
+
[build-dependencies]
|
|
9
|
+
rivet-config.workspace = true
|
|
10
|
+
schemars.workspace = true
|
|
11
|
+
serde_json.workspace = true
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
use std::{fs, path::Path};
|
|
2
|
+
|
|
3
|
+
fn main() {
|
|
4
|
+
let schema = schemars::schema_for!(rivet_config::config::Root);
|
|
5
|
+
|
|
6
|
+
// Create out directory at workspace root
|
|
7
|
+
let workspace_root = std::env::var("CARGO_MANIFEST_DIR")
|
|
8
|
+
.map(|dir| {
|
|
9
|
+
Path::new(&dir)
|
|
10
|
+
.parent()
|
|
11
|
+
.unwrap()
|
|
12
|
+
.parent()
|
|
13
|
+
.unwrap()
|
|
14
|
+
.parent()
|
|
15
|
+
.unwrap()
|
|
16
|
+
.to_path_buf()
|
|
17
|
+
})
|
|
18
|
+
.unwrap();
|
|
19
|
+
let out_dir = workspace_root.join("engine").join("artifacts");
|
|
20
|
+
fs::create_dir_all(&out_dir).unwrap();
|
|
21
|
+
|
|
22
|
+
// Write pretty-formatted JSON to out/config-schema.json
|
|
23
|
+
let json = serde_json::to_string_pretty(&schema).expect("Failed to serialize JSON Schema");
|
|
24
|
+
fs::write(out_dir.join("config-schema.json"), json)
|
|
25
|
+
.expect("Failed to write config-schema.json");
|
|
26
|
+
}
|