fix: lock meta RMW and harden concurrent remix paths
CI / lint-and-test (pull_request) Failing after 9s

Prevent worker/web clobbering of meta variants via flock and merge-by-id,
make filter timeouts thread-local, harden job-id/stem sanitization, migrate
TemplateResponse API, and remove the compare-bg experiment.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Frank Schwenk
2026-07-18 17:44:15 +02:00
parent 9a9b143f08
commit b09f90bfcc
14 changed files with 233 additions and 234 deletions
+8 -4
View File
@@ -30,7 +30,10 @@ _JOB_ID_RE = re.compile(r"^[A-Za-z0-9._-]+$")
def _validate_job_id(job_id: str) -> str:
stem = pipeline.sanitize_stem(job_id)
raw = job_id or ""
if not raw.strip() or "/" in raw or "\\" in raw or ".." in raw:
raise HTTPException(status_code=400, detail="Ungueltige Job-ID")
stem = pipeline.sanitize_stem(raw)
if not _JOB_ID_RE.match(stem):
raise HTTPException(status_code=400, detail="Ungueltige Job-ID")
return stem
@@ -82,8 +85,9 @@ def list_jobs() -> list[dict[str, Any]]:
@app.get("/", response_class=HTMLResponse)
def index(request: Request) -> HTMLResponse:
return templates.TemplateResponse(
request,
"index.html",
{"request": request, "jobs": list_jobs(), "site_title": config.SITE_TITLE},
{"jobs": list_jobs(), "site_title": config.SITE_TITLE},
)
@@ -100,9 +104,9 @@ def job_detail(request: Request, job_id: str) -> HTMLResponse:
)
return templates.TemplateResponse(
request,
"job.html",
{
"request": request,
"site_title": config.SITE_TITLE,
"job_id": stem,
"status": status,
@@ -166,9 +170,9 @@ def remix_form(
}
return templates.TemplateResponse(
request,
"remix.html",
{
"request": request,
"site_title": config.SITE_TITLE,
"job_id": stem,
"options": options,