Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

PATCH /us/report returns 500 when the app saves a finished report's output (report 4501)

Offen
#3,946 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
22/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
api, backend

Rechercherichtung

Start in policyengine_api/routes/report_output_routes.py at the PATCH /<country_id>/report handler, and follow the call to update_report_output, which may reject completion while active_run_id is set. The exception is in the final except Exception branch, so the root cause needs the production log entry for report 4501 near 18:16 UTC; without log access, start from the run-lifecycle logic. Done means that handler no longer returns 500 for this case and returns a 4xx with a clear code when the update is rejected on purpose.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

What happened

On 2026-10-16 around 18:16 UTC, the app finished the society-wide calculation for report 4501 (reform policy 98753 over 2, US, 2026; requested_at 18:12:38 UTC, active_run_id e30158cb-0aad-4dd1-bde0-e80a50485ed9). The economy endpoint returned the result, and the page showed it. The app then saved the result to the report record with PATCH /us/report, and the API answered 500 twice (the app retries once):

[ResultPersister] Persistence failed, retrying once... Error: Failed to update report 4501: 500
    at updateReport (app/src/api/report.ts)
    at ResultPersister.persistToReport (app/src/libs/calculations/ResultPersister.ts)

The request body is the app's standard completed-report payload (ReportAdapter.toCompletedReportPayload):

{ "id": 4501, "status": "complete", "output": { ...economy output... } }

Effect

GET /us/report/4501 still returns status: pending, finished_at: null, no output. Clients show the report as in progress, and every visit asks the economy endpoint again (cached, so fast, but the record never completes).

Where to look

policyengine_api/routes/report_output_routes.py (PATCH /<country_id>/report): the 500 is the final except Exception branch, which logs "Unexpected error updating report #4501 for country us" with the stack trace. A guess, not verified: the record has an active_run_id (run-based report lifecycle) and update_report_output may not handle a client-side completion for a report whose run is still marked active. The same day had the SPM_CONFIGURATION_UNAVAILABLE outage (#3945), which may have left runs in an inconsistent state.

Requests

  1. Find the exception in the logs for report 4501 at about 18:16 UTC and fix it.
  2. If the update is rejected on purpose (for example, a run owns the record), return a 4xx with a clear code, not a 500, so clients can stop retrying and show the right state.

🤖 Generated with Claude Code

Vorherrschende Sprache
Python
Sterne
18
Forks
33
Ø Merge
1 T. 20 Std.
Gemergte PRs (30 T.)
27

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus PolicyEngine/policyengine-api

Alle Issues in PolicyEngine/policyengine-api

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.