diff --git a/engine/artifacts/errors/api.rate_limited.json b/engine/artifacts/errors/api.rate_limited.json deleted file mode 100644 index 4f42c1974d..0000000000 --- a/engine/artifacts/errors/api.rate_limited.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "rate_limited", - "group": "api", - "message": "\n\tRate limit exceeded.\n\t\n\tThe API rate limit has been exceeded for this endpoint.\n\tPlease wait before making additional requests.\n\t" -} \ No newline at end of file diff --git a/engine/artifacts/errors/namespace.invalid_name.json b/engine/artifacts/errors/namespace.invalid_name.json deleted file mode 100644 index 537dba4c8f..0000000000 --- a/engine/artifacts/errors/namespace.invalid_name.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_name", - "group": "namespace", - "message": "\n\tInvalid namespace name.\n\t\n\tNamespace names must be valid DNS subdomains.\n\t" -} \ No newline at end of file diff --git a/engine/artifacts/errors/seraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/seraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 66104acc30..0000000000 --- a/engine/artifacts/errors/seraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "seraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/seraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/seraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index e2351324ce..0000000000 --- a/engine/artifacts/errors/seraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "seraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serraCompletionMarkervrunner_config.invalid.json b/engine/artifacts/errors/serraCompletionMarkervrunner_config.invalid.json deleted file mode 100644 index b989b58c45..0000000000 --- a/engine/artifacts/errors/serraCompletionMarkervrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serraCompletionMarkervrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serraCompletionMarkervrunner_config.not_found.json b/engine/artifacts/errors/serraCompletionMarkervrunner_config.not_found.json deleted file mode 100644 index 3d1a23d977..0000000000 --- a/engine/artifacts/errors/serraCompletionMarkervrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serraCompletionMarkervrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serrunner_config.invalid.json b/engine/artifacts/errors/serrunner_config.invalid.json deleted file mode 100644 index e7f78e7d13..0000000000 --- a/engine/artifacts/errors/serrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serrunner_config.not_found.json b/engine/artifacts/errors/serrunner_config.not_found.json deleted file mode 100644 index c7de352c53..0000000000 --- a/engine/artifacts/errors/serrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serunner_config.invalid.json b/engine/artifacts/errors/serunner_config.invalid.json deleted file mode 100644 index cf10355602..0000000000 --- a/engine/artifacts/errors/serunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serunner_config.not_found.json b/engine/artifacts/errors/serunner_config.not_found.json deleted file mode 100644 index 0edeb8af45..0000000000 --- a/engine/artifacts/errors/serunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serveraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/serveraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 5fd05f5b97..0000000000 --- a/engine/artifacts/errors/serveraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serveraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serveraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/serveraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index 3b715ffbc7..0000000000 --- a/engine/artifacts/errors/serveraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serveraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverleraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/serverleraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index de6992959f..0000000000 --- a/engine/artifacts/errors/serverleraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverleraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverleraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/serverleraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index 16fca37cb6..0000000000 --- a/engine/artifacts/errors/serverleraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverleraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlerunner_config.invalid.json b/engine/artifacts/errors/serverlerunner_config.invalid.json deleted file mode 100644 index 96198b295a..0000000000 --- a/engine/artifacts/errors/serverlerunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverlerunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlerunner_config.not_found.json b/engine/artifacts/errors/serverlerunner_config.not_found.json deleted file mode 100644 index 9d6ed21989..0000000000 --- a/engine/artifacts/errors/serverlerunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverlerunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlesraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/serverlesraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index a31d63257f..0000000000 --- a/engine/artifacts/errors/serverlesraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverlesraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlesraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/serverlesraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index 940b46fa33..0000000000 --- a/engine/artifacts/errors/serverlesraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverlesraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlesrunner_config.invalid.json b/engine/artifacts/errors/serverlesrunner_config.invalid.json deleted file mode 100644 index 9e1aacb818..0000000000 --- a/engine/artifacts/errors/serverlesrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverlesrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlesrunner_config.not_found.json b/engine/artifacts/errors/serverlesrunner_config.not_found.json deleted file mode 100644 index 4953dda4e4..0000000000 --- a/engine/artifacts/errors/serverlesrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverlesrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_raCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/serverless_raCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 7e88291ffa..0000000000 --- a/engine/artifacts/errors/serverless_raCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverless_raCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_raCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/serverless_raCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index cb40c392e3..0000000000 --- a/engine/artifacts/errors/serverless_raCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverless_raCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.cnot_found.json b/engine/artifacts/errors/serverless_runner.cnot_found.json deleted file mode 100644 index 87963e180f..0000000000 --- a/engine/artifacts/errors/serverless_runner.cnot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "cnot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.config_not_found.json b/engine/artifacts/errors/serverless_runner.config_not_found.json deleted file mode 100644 index 2638d8a4bd..0000000000 --- a/engine/artifacts/errors/serverless_runner.config_not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "config_not_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.config_raCompletionMarkernot_found.json b/engine/artifacts/errors/serverless_runner.config_raCompletionMarkernot_found.json deleted file mode 100644 index 52a9a57063..0000000000 --- a/engine/artifacts/errors/serverless_runner.config_raCompletionMarkernot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "config_raCompletionMarkernot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.confignot_found.json b/engine/artifacts/errors/serverless_runner.confignot_found.json deleted file mode 100644 index edfc778e01..0000000000 --- a/engine/artifacts/errors/serverless_runner.confignot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "confignot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.configraCompletionMarkernot_found.json b/engine/artifacts/errors/serverless_runner.configraCompletionMarkernot_found.json deleted file mode 100644 index bc52a76bf6..0000000000 --- a/engine/artifacts/errors/serverless_runner.configraCompletionMarkernot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "configraCompletionMarkernot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.confinot_found.json b/engine/artifacts/errors/serverless_runner.confinot_found.json deleted file mode 100644 index b386b76e8e..0000000000 --- a/engine/artifacts/errors/serverless_runner.confinot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "confinot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.confiraCompletionMarkernot_found.json b/engine/artifacts/errors/serverless_runner.confiraCompletionMarkernot_found.json deleted file mode 100644 index 5167fcfeaf..0000000000 --- a/engine/artifacts/errors/serverless_runner.confiraCompletionMarkernot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "confiraCompletionMarkernot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.confnot_found.json b/engine/artifacts/errors/serverless_runner.confnot_found.json deleted file mode 100644 index c6cf80aaff..0000000000 --- a/engine/artifacts/errors/serverless_runner.confnot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "confnot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.confraCompletionMarkernot_found.json b/engine/artifacts/errors/serverless_runner.confraCompletionMarkernot_found.json deleted file mode 100644 index 619c7cec37..0000000000 --- a/engine/artifacts/errors/serverless_runner.confraCompletionMarkernot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "confraCompletionMarkernot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.connot_found.json b/engine/artifacts/errors/serverless_runner.connot_found.json deleted file mode 100644 index dc92a1fb81..0000000000 --- a/engine/artifacts/errors/serverless_runner.connot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "connot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.conot_found.json b/engine/artifacts/errors/serverless_runner.conot_found.json deleted file mode 100644 index c536d73197..0000000000 --- a/engine/artifacts/errors/serverless_runner.conot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "conot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.conraCompletionMarkernot_found.json b/engine/artifacts/errors/serverless_runner.conraCompletionMarkernot_found.json deleted file mode 100644 index f29179628b..0000000000 --- a/engine/artifacts/errors/serverless_runner.conraCompletionMarkernot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "conraCompletionMarkernot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.coraCompletionMarkernot_found.json b/engine/artifacts/errors/serverless_runner.coraCompletionMarkernot_found.json deleted file mode 100644 index b74208f25b..0000000000 --- a/engine/artifacts/errors/serverless_runner.coraCompletionMarkernot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "coraCompletionMarkernot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.craCompletionMarkernot_found.json b/engine/artifacts/errors/serverless_runner.craCompletionMarkernot_found.json deleted file mode 100644 index c63537732c..0000000000 --- a/engine/artifacts/errors/serverless_runner.craCompletionMarkernot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "craCompletionMarkernot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid.json b/engine/artifacts/errors/serverless_runner.invalid.json deleted file mode 100644 index 4f0ad15810..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_.json b/engine/artifacts/errors/serverless_runner.invalid_.json deleted file mode 100644 index 0ff66ef396..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_c.json b/engine/artifacts/errors/serverless_runner.invalid_c.json deleted file mode 100644 index 2a344312df..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_c.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_c", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_co.json b/engine/artifacts/errors/serverless_runner.invalid_co.json deleted file mode 100644 index 9d1a71a091..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_co.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_co", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_con.json b/engine/artifacts/errors/serverless_runner.invalid_con.json deleted file mode 100644 index 7341e771fe..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_con.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_con", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_conf.json b/engine/artifacts/errors/serverless_runner.invalid_conf.json deleted file mode 100644 index caefd8a917..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_conf.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_conf", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_confi.json b/engine/artifacts/errors/serverless_runner.invalid_confi.json deleted file mode 100644 index f6a4bcf565..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_confi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_confi", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_config.json b/engine/artifacts/errors/serverless_runner.invalid_config.json deleted file mode 100644 index 2cbf1bfedb..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_config", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_configraCompletionMarker.json b/engine/artifacts/errors/serverless_runner.invalid_configraCompletionMarker.json deleted file mode 100644 index fa4956bfea..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_configraCompletionMarker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_configraCompletionMarker", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_confiraCompletionMarker.json b/engine/artifacts/errors/serverless_runner.invalid_confiraCompletionMarker.json deleted file mode 100644 index 3dce9165bb..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_confiraCompletionMarker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_confiraCompletionMarker", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_confraCompletionMarker.json b/engine/artifacts/errors/serverless_runner.invalid_confraCompletionMarker.json deleted file mode 100644 index 51c6c1ee21..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_confraCompletionMarker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_confraCompletionMarker", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_conraCompletionMarker.json b/engine/artifacts/errors/serverless_runner.invalid_conraCompletionMarker.json deleted file mode 100644 index 02d8a97c07..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_conraCompletionMarker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_conraCompletionMarker", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_coraCompletionMarker.json b/engine/artifacts/errors/serverless_runner.invalid_coraCompletionMarker.json deleted file mode 100644 index e2c84a7e0c..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_coraCompletionMarker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_coraCompletionMarker", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_craCompletionMarker.json b/engine/artifacts/errors/serverless_runner.invalid_craCompletionMarker.json deleted file mode 100644 index b7d713654a..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_craCompletionMarker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_craCompletionMarker", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.invalid_raCompletionMarker.json b/engine/artifacts/errors/serverless_runner.invalid_raCompletionMarker.json deleted file mode 100644 index 93afc31b7c..0000000000 --- a/engine/artifacts/errors/serverless_runner.invalid_raCompletionMarker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid_raCompletionMarker", - "group": "serverless_runner", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfig_ot_found.json b/engine/artifacts/errors/serverless_runner.nconfig_ot_found.json deleted file mode 100644 index 20993c4cb8..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfig_ot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfig_ot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfig_raCompletionMarkerot_found.json b/engine/artifacts/errors/serverless_runner.nconfig_raCompletionMarkerot_found.json deleted file mode 100644 index 70a62b251a..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfig_raCompletionMarkerot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfig_raCompletionMarkerot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfigot_found.json b/engine/artifacts/errors/serverless_runner.nconfigot_found.json deleted file mode 100644 index 6a3161a159..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfigot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfigot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfigraCompletionMarkerot_found.json b/engine/artifacts/errors/serverless_runner.nconfigraCompletionMarkerot_found.json deleted file mode 100644 index e9b4bd83de..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfigraCompletionMarkerot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfigraCompletionMarkerot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfiot_found.json b/engine/artifacts/errors/serverless_runner.nconfiot_found.json deleted file mode 100644 index f3a9decbf9..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfiot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfiot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfiraCompletionMarkerot_found.json b/engine/artifacts/errors/serverless_runner.nconfiraCompletionMarkerot_found.json deleted file mode 100644 index a7b789f011..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfiraCompletionMarkerot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfiraCompletionMarkerot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfot_found.json b/engine/artifacts/errors/serverless_runner.nconfot_found.json deleted file mode 100644 index ff18bcbacd..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconfraCompletionMarkerot_found.json b/engine/artifacts/errors/serverless_runner.nconfraCompletionMarkerot_found.json deleted file mode 100644 index 418efc505c..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconfraCompletionMarkerot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconfraCompletionMarkerot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconot_found.json b/engine/artifacts/errors/serverless_runner.nconot_found.json deleted file mode 100644 index dc773d558e..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.nconraCompletionMarkerot_found.json b/engine/artifacts/errors/serverless_runner.nconraCompletionMarkerot_found.json deleted file mode 100644 index 79729122df..0000000000 --- a/engine/artifacts/errors/serverless_runner.nconraCompletionMarkerot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "nconraCompletionMarkerot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.ncoot_found.json b/engine/artifacts/errors/serverless_runner.ncoot_found.json deleted file mode 100644 index d430ca664f..0000000000 --- a/engine/artifacts/errors/serverless_runner.ncoot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "ncoot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.ncoraCompletionMarkerot_found.json b/engine/artifacts/errors/serverless_runner.ncoraCompletionMarkerot_found.json deleted file mode 100644 index 2ea6048c25..0000000000 --- a/engine/artifacts/errors/serverless_runner.ncoraCompletionMarkerot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "ncoraCompletionMarkerot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.ncot_found.json b/engine/artifacts/errors/serverless_runner.ncot_found.json deleted file mode 100644 index 602b3e4f0a..0000000000 --- a/engine/artifacts/errors/serverless_runner.ncot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "ncot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.ncraCompletionMarkerot_found.json b/engine/artifacts/errors/serverless_runner.ncraCompletionMarkerot_found.json deleted file mode 100644 index b44f0f1c14..0000000000 --- a/engine/artifacts/errors/serverless_runner.ncraCompletionMarkerot_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "ncraCompletionMarkerot_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner.not_found.json b/engine/artifacts/errors/serverless_runner.not_found.json deleted file mode 100644 index 3f10764fce..0000000000 --- a/engine/artifacts/errors/serverless_runner.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverless_runner", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner_config.invalid.json b/engine/artifacts/errors/serverless_runner_config.invalid.json deleted file mode 100644 index dd71321ad7..0000000000 --- a/engine/artifacts/errors/serverless_runner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverless_runner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverless_runner_config.not_found.json b/engine/artifacts/errors/serverless_runner_config.not_found.json deleted file mode 100644 index 4339432286..0000000000 --- a/engine/artifacts/errors/serverless_runner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverless_runner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlessraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/serverlessraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 7f5faaf4b1..0000000000 --- a/engine/artifacts/errors/serverlessraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverlessraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlessraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/serverlessraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index d9c9eca48d..0000000000 --- a/engine/artifacts/errors/serverlessraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverlessraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlessrunner_config.invalid.json b/engine/artifacts/errors/serverlessrunner_config.invalid.json deleted file mode 100644 index 58b2ae1466..0000000000 --- a/engine/artifacts/errors/serverlessrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverlessrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlessrunner_config.not_found.json b/engine/artifacts/errors/serverlessrunner_config.not_found.json deleted file mode 100644 index cf49868c98..0000000000 --- a/engine/artifacts/errors/serverlessrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverlessrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/serverlraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 95abe7cbc6..0000000000 --- a/engine/artifacts/errors/serverlraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverlraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/serverlraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index b86bc205fb..0000000000 --- a/engine/artifacts/errors/serverlraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverlraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlrunner_config.invalid.json b/engine/artifacts/errors/serverlrunner_config.invalid.json deleted file mode 100644 index c1f25d908a..0000000000 --- a/engine/artifacts/errors/serverlrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverlrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverlrunner_config.not_found.json b/engine/artifacts/errors/serverlrunner_config.not_found.json deleted file mode 100644 index c1861c0862..0000000000 --- a/engine/artifacts/errors/serverlrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverlrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/serverraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 4cb8c6dd5b..0000000000 --- a/engine/artifacts/errors/serverraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/serverraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index 33a244fb0e..0000000000 --- a/engine/artifacts/errors/serverraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverrunner_config.invalid.json b/engine/artifacts/errors/serverrunner_config.invalid.json deleted file mode 100644 index 640bcbf0d6..0000000000 --- a/engine/artifacts/errors/serverrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverrunner_config.not_found.json b/engine/artifacts/errors/serverrunner_config.not_found.json deleted file mode 100644 index ab83301019..0000000000 --- a/engine/artifacts/errors/serverrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverunner_config.invalid.json b/engine/artifacts/errors/serverunner_config.invalid.json deleted file mode 100644 index 529c14ca11..0000000000 --- a/engine/artifacts/errors/serverunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "serverunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/serverunner_config.not_found.json b/engine/artifacts/errors/serverunner_config.not_found.json deleted file mode 100644 index 30ecda9f0e..0000000000 --- a/engine/artifacts/errors/serverunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "serverunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/servraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/servraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 14e269afbd..0000000000 --- a/engine/artifacts/errors/servraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "servraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/servraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/servraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index 3ecd407f42..0000000000 --- a/engine/artifacts/errors/servraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "servraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/servrunner_config.invalid.json b/engine/artifacts/errors/servrunner_config.invalid.json deleted file mode 100644 index f492915129..0000000000 --- a/engine/artifacts/errors/servrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "servrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/servrunner_config.not_found.json b/engine/artifacts/errors/servrunner_config.not_found.json deleted file mode 100644 index a10e94da44..0000000000 --- a/engine/artifacts/errors/servrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "servrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/sraCompletionMarkerrunner_config.invalid.json b/engine/artifacts/errors/sraCompletionMarkerrunner_config.invalid.json deleted file mode 100644 index 36f5c553ef..0000000000 --- a/engine/artifacts/errors/sraCompletionMarkerrunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "sraCompletionMarkerrunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/sraCompletionMarkerrunner_config.not_found.json b/engine/artifacts/errors/sraCompletionMarkerrunner_config.not_found.json deleted file mode 100644 index a62d509999..0000000000 --- a/engine/artifacts/errors/sraCompletionMarkerrunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "sraCompletionMarkerrunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/artifacts/errors/srunner_config.invalid.json b/engine/artifacts/errors/srunner_config.invalid.json deleted file mode 100644 index 7e06185690..0000000000 --- a/engine/artifacts/errors/srunner_config.invalid.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "invalid", - "group": "srunner_config", - "message": "Invalid runner config." -} \ No newline at end of file diff --git a/engine/artifacts/errors/srunner_config.not_found.json b/engine/artifacts/errors/srunner_config.not_found.json deleted file mode 100644 index a930b64269..0000000000 --- a/engine/artifacts/errors/srunner_config.not_found.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "not_found", - "group": "srunner_config", - "message": "No config for this runner exists." -} \ No newline at end of file diff --git a/engine/packages/api-peer/src/internal.rs b/engine/packages/api-peer/src/internal.rs index ae5a8d98db..2958cd6ba4 100644 --- a/engine/packages/api-peer/src/internal.rs +++ b/engine/packages/api-peer/src/internal.rs @@ -45,10 +45,10 @@ pub async fn bump_serverless_autoscaler( _query: (), body: BumpServerlessAutoscalerRequest, ) -> Result { - ctx.signal(pegboard::workflows::serverless::pool::BumpConfig {}) + ctx.signal(pegboard::workflows::serverless::pool::Bump {}) .to_workflow::() - .tag("runner_name", body.runner_name) .tag("namespace_id", body.namespace_id) + .tag("runner_name", body.runner_name) .send() .await?; diff --git a/engine/packages/pegboard/src/ops/runner_config/delete.rs b/engine/packages/pegboard/src/ops/runner_config/delete.rs index c33d7dc00e..ae78039ffd 100644 --- a/engine/packages/pegboard/src/ops/runner_config/delete.rs +++ b/engine/packages/pegboard/src/ops/runner_config/delete.rs @@ -44,7 +44,7 @@ pub async fn pegboard_runner_config_delete(ctx: &OperationCtx, input: &Input) -> // Bump autoscaler when a serverless config is modified if delete_workflow { - ctx.signal(crate::workflows::serverless::pool::BumpConfig {}) + ctx.signal(crate::workflows::serverless::pool::Bump {}) .to_workflow::() .tag("namespace_id", input.namespace_id) .tag("runner_name", input.name.clone()) diff --git a/engine/packages/pegboard/src/ops/runner_config/get.rs b/engine/packages/pegboard/src/ops/runner_config/get.rs index 8c2f9ac50f..469506e74e 100644 --- a/engine/packages/pegboard/src/ops/runner_config/get.rs +++ b/engine/packages/pegboard/src/ops/runner_config/get.rs @@ -19,7 +19,7 @@ pub struct RunnerConfig { } #[operation] -pub async fn pegboard_runner_config__get( +pub async fn pegboard_runner_config_get( ctx: &OperationCtx, input: &Input, ) -> Result> { diff --git a/engine/packages/pegboard/src/ops/runner_config/upsert.rs b/engine/packages/pegboard/src/ops/runner_config/upsert.rs index bca5dbb36d..dc5235cf56 100644 --- a/engine/packages/pegboard/src/ops/runner_config/upsert.rs +++ b/engine/packages/pegboard/src/ops/runner_config/upsert.rs @@ -11,14 +11,14 @@ pub struct Input { pub config: RunnerConfig, } +struct UpsertOutput { + endpoint_config_changed: bool, + serverless_runner_created: bool, +} + #[operation] pub async fn pegboard_runner_config_upsert(ctx: &OperationCtx, input: &Input) -> Result { - struct UpsertOutput { - endpoint_config_changed: bool, - serverless_runner_created: bool, - } - - let res: UpsertOutput = ctx + let res = ctx .udb()? .run(|tx| async move { let tx = tx.with_subspace(namespace::keys::subspace()); @@ -167,14 +167,14 @@ pub async fn pegboard_runner_config_upsert(ctx: &OperationCtx, input: &Input) -> namespace_id: input.namespace_id, runner_name: input.name.clone(), }) - .tag("runner_name", input.name.clone()) .tag("namespace_id", input.namespace_id) + .tag("runner_name", input.name.clone()) .unique() .dispatch() .await?; } else if input.config.affects_autoscaler() { // Maybe scale it - ctx.signal(crate::workflows::serverless::pool::BumpConfig {}) + ctx.signal(crate::workflows::serverless::pool::Bump {}) .to_workflow::() .tag("namespace_id", input.namespace_id) .tag("runner_name", input.name.clone()) diff --git a/engine/packages/pegboard/src/workflows/actor/runtime.rs b/engine/packages/pegboard/src/workflows/actor/runtime.rs index df537609e7..c5831b71e4 100644 --- a/engine/packages/pegboard/src/workflows/actor/runtime.rs +++ b/engine/packages/pegboard/src/workflows/actor/runtime.rs @@ -615,6 +615,7 @@ pub async fn spawn_actor( } => { ctx.removed::>() .await?; + // Bump the autoscaler so it can scale up if allocate_res.serverless { ctx.v(2) diff --git a/engine/packages/pegboard/src/workflows/serverless/connection.rs b/engine/packages/pegboard/src/workflows/serverless/connection.rs index 18b26a857c..f290b2ba2c 100644 --- a/engine/packages/pegboard/src/workflows/serverless/connection.rs +++ b/engine/packages/pegboard/src/workflows/serverless/connection.rs @@ -1,7 +1,3 @@ -use std::collections::HashMap; - -use super::runner; -use crate::pubsub_subjects::RunnerReceiverSubject; use anyhow::Context; use base64::{Engine, engine::general_purpose::STANDARD as BASE64}; use futures_util::StreamExt; @@ -9,10 +5,14 @@ use gas::prelude::*; use reqwest::header::{HeaderName, HeaderValue}; use reqwest_eventsource as sse; use rivet_runner_protocol as protocol; +use rivet_types::runner_configs::RunnerConfigKind; use tokio::time::Duration; use universalpubsub::PublishOpts; use vbare::OwnedVersionedData; +use super::{pool, runner}; +use crate::pubsub_subjects::RunnerReceiverSubject; + const X_RIVET_ENDPOINT: HeaderName = HeaderName::from_static("x-rivet-endpoint"); const X_RIVET_TOKEN: HeaderName = HeaderName::from_static("x-rivet-token"); const X_RIVET_TOTAL_SLOTS: HeaderName = HeaderName::from_static("x-rivet-total-slots"); @@ -23,14 +23,10 @@ const DRAIN_GRACE_PERIOD: Duration = Duration::from_secs(5); #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Input { + pub pool_wf_id: Id, pub runner_wf_id: Id, pub namespace_id: Id, pub runner_name: String, - pub namespace_name: String, - pub url: String, - pub headers: HashMap, - pub request_lifespan: u32, - pub slots_per_runner: u32, } #[workflow] @@ -38,39 +34,33 @@ pub async fn pegboard_serverless_connection(ctx: &mut WorkflowCtx, input: &Input // Run the connection activity, which will handle the full lifecycle let res = ctx .activity(OutboundReqInput { + pool_wf_id: input.pool_wf_id, runner_wf_id: input.runner_wf_id, namespace_id: input.namespace_id, runner_name: input.runner_name.clone(), - namespace_name: input.namespace_name.clone(), - url: input.url.clone(), - headers: input.headers.clone(), - request_lifespan: input.request_lifespan, - slots_per_runner: input.slots_per_runner, }) .await?; // If we failed to send inline during the activity, durably ensure the // signal is dispatched here if res.send_drain_started { - ctx.signal(runner::ConnectionDrainStarted {}) - .to_workflow_id(input.runner_wf_id) - .send() - .await?; + ctx.signal(pool::RunnerDrainStarted { + runner_wf_id: input.runner_wf_id, + }) + .to_workflow_id(input.pool_wf_id) + .send() + .await?; } Ok(()) } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize, Hash)] struct OutboundReqInput { + pool_wf_id: Id, runner_wf_id: Id, namespace_id: Id, runner_name: String, - namespace_name: String, - url: String, - headers: HashMap, - request_lifespan: u32, - slots_per_runner: u32, } #[derive(Debug, Serialize, Deserialize)] @@ -78,24 +68,6 @@ struct OutboundReqOutput { send_drain_started: bool, } -impl std::hash::Hash for OutboundReqInput { - fn hash(&self, state: &mut H) { - self.namespace_id.hash(state); - self.runner_name.hash(state); - self.namespace_name.hash(state); - self.url.hash(state); - // Sort and hash headers for deterministic hashing - let mut headers_vec: Vec<_> = self.headers.iter().collect(); - headers_vec.sort(); - for (k, v) in headers_vec { - k.hash(state); - v.hash(state); - } - self.request_lifespan.hash(state); - self.slots_per_runner.hash(state); - } -} - #[activity(OutboundReq)] #[timeout = u64::MAX] #[max_retries = usize::MAX] @@ -110,9 +82,42 @@ async fn outbound_req(ctx: &ActivityCtx, input: &OutboundReqInput) -> Result(("workflow_id", ctx.workflow_id())) .await?; - let current_dc = ctx.config().topology().current_dc()?; + let (runner_config_res, namespace_res) = tokio::try_join!( + ctx.op(crate::ops::runner_config::get::Input { + runners: vec![(input.namespace_id, input.runner_name.clone())], + bypass_cache: false, + }), + ctx.op(namespace::ops::get_global::Input { + namespace_ids: vec![input.namespace_id], + }) + )?; + let Some(runner_config) = runner_config_res.into_iter().next() else { + tracing::debug!("runner config does not exist, ending outbound req"); + return Ok(OutboundReqOutput { + send_drain_started: true, + }); + }; - let client = rivet_pools::reqwest::client_no_timeout().await?; + let RunnerConfigKind::Serverless { + url, + headers, + slots_per_runner, + request_lifespan, + .. + } = runner_config.config.kind + else { + tracing::debug!("runner config is not serverless, ending outbound req"); + return Ok(OutboundReqOutput { + send_drain_started: true, + }); + }; + + let namespace = namespace_res + .into_iter() + .next() + .context("runner namespace not found")?; + + let current_dc = ctx.config().topology().current_dc()?; let token = if let Some(auth) = &ctx.config().auth { Some(( @@ -123,9 +128,7 @@ async fn outbound_req(ctx: &ActivityCtx, input: &OutboundReqInput) -> Result Result Result Result { return match res { @@ -234,10 +239,12 @@ async fn outbound_req(ctx: &ActivityCtx, input: &OutboundReqInput) -> Result Result Result Result Result { - let res = ctx.get_workflows(vec![runner_wf_id]).await?; - let Some(runner_wf) = res.first() else { - // HACK: This is undefined state, but we have no way to mark the workflow as dead - // so we return true, and the DrainStarted signal call will attempt to send - // the signal back to this unexistant parent. - // - // Eventually it will fail too many times, and the wf will die. - tracing::error!( - ?runner_wf_id, - "couldn't find serverless connection's parent runner wf" - ); - return Ok(true); - }; - + let runner_wf = ctx + .get_workflows(vec![runner_wf_id]) + .await? + .into_iter() + .next() + .context("cannot find own runner wf")?; let state = runner_wf.parse_state::()?; + Ok(state.is_draining) } diff --git a/engine/packages/pegboard/src/workflows/serverless/pool.rs b/engine/packages/pegboard/src/workflows/serverless/pool.rs index 79409485bd..d964df9d84 100644 --- a/engine/packages/pegboard/src/workflows/serverless/pool.rs +++ b/engine/packages/pegboard/src/workflows/serverless/pool.rs @@ -1,89 +1,31 @@ -use std::collections::HashMap; - -use super::runner; use futures_util::FutureExt; use gas::{db::WorkflowData, prelude::*}; use rivet_types::{keys, runner_configs::RunnerConfigKind}; +use super::runner; + #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Input { pub namespace_id: Id, pub runner_name: String, } -#[derive(Debug, Serialize, Deserialize)] -struct ServerlessRunnerConfig { - url: String, - headers: HashMap, - request_lifespan: u32, - slots_per_runner: u32, - min_runners: u32, - max_runners: u32, - runners_margin: u32, -} - -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize, Default)] struct LifecycleState { runners: Vec, - config: ServerlessRunnerConfig, - first_loop: bool, -} - -impl LifecycleState { - fn new(config: ServerlessRunnerConfig) -> Self { - Self { - runners: Vec::new(), - config: config, - first_loop: true, - } - } } #[workflow] pub async fn pegboard_serverless_pool(ctx: &mut WorkflowCtx, input: &Input) -> Result<()> { - let namespace_name = ctx - .activity(ReadNamespaceNameInput { - namespace_id: input.namespace_id, - }) - .await?; - - let config = ctx - .activity(ReadConfigInput { - namespace_id: input.namespace_id, - runner_name: input.runner_name.clone(), - }) - .await?; - - ctx.loope(LifecycleState::new(config), |ctx, state| { + ctx.loope(LifecycleState::default(), |ctx, state| { let input = input.clone(); - let namespace_name = namespace_name.clone(); - async move { - if state.first_loop { - state.first_loop = false - } else { - // Wait for Bump or runner update signals until we tick - match ctx.listen::
().await? { - Main::RunnerDrainStarted(sig) => { - let pos_to_drain = state - .runners - .iter() - .position(|wf_id| *wf_id == sig.runner_wf_id); - if let Some(pos_to_drain) = pos_to_drain { - state.runners.remove(pos_to_drain); - } - } - Main::BumpConfig(_) => { - // Update config - state.config = ctx - .activity(ReadConfigInput { - namespace_id: input.namespace_id, - runner_name: input.runner_name.clone(), - }) - .await?; - } - Main::Bump(_) => {} + // Wait for Bump or runner update signals until we tick + match ctx.listen::
().await? { + Main::RunnerDrainStarted(sig) => { + state.runners.retain(|wf_id| *wf_id != sig.runner_wf_id); } + Main::Bump(_) => {} } // 1. Remove completed connections @@ -96,16 +38,15 @@ pub async fn pegboard_serverless_pool(ctx: &mut WorkflowCtx, input: &Input) -> R state.runners.retain(|r| !completed_runners.contains(r)); // 2. Get desired count -> drain and start counts - let desired_count = ctx + let ReadDesiredOutput::Desired(desired_count) = ctx .activity(ReadDesiredInput { namespace_id: input.namespace_id, runner_name: input.runner_name.clone(), - slots_per_runner: state.config.slots_per_runner as i64, - min_runners: state.config.min_runners as i64, - max_runners: state.config.max_runners as i64, - runners_margin: state.config.runners_margin as i64, }) - .await?; + .await? + else { + return Ok(Loop::Break(())); + }; let drain_count = state.runners.len().saturating_sub(desired_count); let start_count = desired_count.saturating_sub(state.runners.len()); @@ -130,12 +71,7 @@ pub async fn pegboard_serverless_pool(ctx: &mut WorkflowCtx, input: &Input) -> R .workflow(runner::Input { pool_wf_id: ctx.workflow_id(), namespace_id: input.namespace_id, - namespace_name: namespace_name.clone(), runner_name: input.runner_name.clone(), - url: state.config.url.clone(), - headers: state.config.headers.clone(), - request_lifespan: state.config.request_lifespan, - slots_per_runner: state.config.slots_per_runner, }) .tag("namespace_id", input.namespace_id) .tag("runner_name", input.runner_name.clone()) @@ -146,7 +82,7 @@ pub async fn pegboard_serverless_pool(ctx: &mut WorkflowCtx, input: &Input) -> R } } - Ok(Loop::<()>::Continue) + Ok(Loop::Continue) } .boxed() }) @@ -155,75 +91,6 @@ pub async fn pegboard_serverless_pool(ctx: &mut WorkflowCtx, input: &Input) -> R Ok(()) } -#[derive(Debug, Serialize, Deserialize, Hash)] -struct ReadNamespaceNameInput { - namespace_id: Id, -} - -#[activity(ReadNamespaceName)] -async fn read_namespace_name(ctx: &ActivityCtx, input: &ReadNamespaceNameInput) -> Result { - let res = ctx - .op(namespace::ops::get_global::Input { - namespace_ids: vec![input.namespace_id], - }) - .await?; - - let namespace = res.first().context("runner namespace not found")?; - - Ok(namespace.name.clone()) -} - -#[derive(Debug, Serialize, Deserialize, Hash)] -struct ReadConfigInput { - namespace_id: Id, - runner_name: String, -} - -#[activity(ReadConfig)] -async fn read_config(ctx: &ActivityCtx, input: &ReadConfigInput) -> Result { - let run_configs = ctx - .op(crate::ops::runner_config::get::Input { - runners: vec![(input.namespace_id, input.runner_name.clone())], - bypass_cache: false, - }) - .await?; - - let res = run_configs - .first() - .context("couldn't find own runner config")?; - - match &res.config.kind { - &RunnerConfigKind::Normal {} => { - tracing::error!( - namespace_id = ?input.namespace_id, - runner_name = ?input.runner_name, - "serverless pool running for non-serverless runner config" - ); - - Err(anyhow!( - "serverless pool running for non-serverless runner config" - )) - } - &RunnerConfigKind::Serverless { - ref url, - ref headers, - request_lifespan, - slots_per_runner, - min_runners, - max_runners, - runners_margin, - } => Ok(ServerlessRunnerConfig { - url: url.clone(), - headers: headers.clone(), - request_lifespan, - slots_per_runner, - min_runners, - max_runners, - runners_margin, - }), - } -} - #[derive(Debug, Serialize, Deserialize, Hash)] struct GetCompletedInput { runners: Vec, @@ -244,14 +111,37 @@ async fn get_completed(ctx: &ActivityCtx, input: &GetCompletedInput) -> Result Result { +async fn read_desired(ctx: &ActivityCtx, input: &ReadDesiredInput) -> Result { + let runner_config_res = ctx + .op(crate::ops::runner_config::get::Input { + runners: vec![(input.namespace_id, input.runner_name.clone())], + bypass_cache: false, + }) + .await?; + let Some(runner_config) = runner_config_res.into_iter().next() else { + return Ok(ReadDesiredOutput::Stop); + }; + + let RunnerConfigKind::Serverless { + slots_per_runner, + min_runners, + max_runners, + runners_margin, + .. + } = runner_config.config.kind + else { + return Ok(ReadDesiredOutput::Stop); + }; + let desired_slots = ctx .udb()? .run(|tx| async move { @@ -270,8 +160,8 @@ async fn read_desired(ctx: &ActivityCtx, input: &ReadDesiredInput) -> Result Result, - pub request_lifespan: u32, - pub slots_per_runner: u32, } #[derive(Debug, Deserialize, Serialize, Clone)] @@ -33,51 +26,27 @@ pub async fn pegboard_serverless_runner(ctx: &mut WorkflowCtx, input: &Input) -> let conn_wf_id = ctx .workflow(connection::Input { + pool_wf_id: input.pool_wf_id, runner_wf_id: ctx.workflow_id(), namespace_id: input.namespace_id, runner_name: input.runner_name.clone(), - namespace_name: input.namespace_name.clone(), - url: input.url.clone(), - headers: input.headers.clone(), - request_lifespan: input.request_lifespan, - slots_per_runner: input.slots_per_runner, }) .dispatch() .await?; - ctx.repeat(|ctx| { - let pool_wf_id = input.pool_wf_id; - - async move { - match ctx.listen::().await? { - Tunnel::ConnectionDrainStarted(_) => { - ctx.signal(pool::RunnerDrainStarted { - runner_wf_id: ctx.workflow_id(), - }) - .to_workflow_id(pool_wf_id) - .send() - .await?; - - // If the drain started we can stop our runner - return Ok(Loop::Break(())); - } - Tunnel::Drain(_) => { - ctx.msg(connection::Drain {}) - .tag("workflow_id", conn_wf_id) - .send() - .await?; - - ctx.activity(MarkAsDrainingInput {}).await?; - } - } - - Ok(Loop::<()>::Continue) - } - .boxed() - }) - .await?; - - // Runner is drained, connection already started draining, we can exit + ctx.listen::().await?; + + ctx.activity(MarkAsDrainingInput {}).await?; + + ctx.msg(connection::Drain {}) + .tag("workflow_id", conn_wf_id) + .send() + .await?; + + // Wait for connection wf to complete so this wf's state remains readable + ctx.workflow::(conn_wf_id) + .output() + .await?; Ok(()) } @@ -105,14 +74,5 @@ async fn mark_as_draining(ctx: &ActivityCtx, input: &MarkAsDrainingInput) -> Res Ok(()) } -/// Forward a signal from connection to the pool -#[signal("pegboard_serverless_runner_conn_drain_started")] -pub struct ConnectionDrainStarted {} - #[signal("pegboard_serverless_runner_drain")] pub struct Drain {} - -join_signal!(Tunnel { - Drain, - ConnectionDrainStarted, -});