engine: stage presigned objects as .dat; task entry reports the failing step and HTTP status

Through Cloudflare, signed requests for keys ending .tar/.gz/.zip/.bin reached
RustFS altered and failed with 403 (cf-cache-status BYPASS); the same signed
request straight to RustFS on the LAN returned 200. A Cloudflare cache-bypass
rule on files.because-security.com fixes it (all extensions 200, DYNAMIC); the
engine executors keep .dat as a safeguard, the plane keeps output.tar.
Implemented with Codex.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Marius Ciepluch
2026-10-04 16:18:01 +02:00
co-authored by Claude Opus 5.5
parent 035710493c
commit b715ff7d0e
9 changed files with 59 additions and 17 deletions
+4
View File
@@ -113,6 +113,10 @@ def test_ax_executor_success_while_running_and_cleanup(setup):
assert set(env) == {"SOURCE_URL", "QUESTIONS_URL", "RESULT_URL", "DEADLINE", "QUESTION_DEADLINE"}
assert len(json.dumps(manifest["spec"]["env"]).encode()) < 32768
assert "AWS" not in calls[0]["input"]
assert env["SOURCE_URL"].split("?")[0].endswith("/source.dat")
assert env["RESULT_URL"].split("?")[0].endswith("/result.dat")
assert env["QUESTIONS_URL"].split("?")[0].endswith("/questions.json")
assert {key.rsplit("/", 1)[-1] for key in store.deleted} == {"source.dat", "questions.json", "result.dat"}
assert store.expiries == [604] * 3
assert len(store.deleted) == 3 and not store.objects