Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte
#3,946 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 3 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
22/100
Type d'issue
Bug
Clarté
À clarifier
Activité
Active
Stack technique
python
Domaine
api, backend

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
Python
Étoiles
18
Forks
33
Merge moyen
2 j 6 h
PR mergées (30 j)
32

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de PolicyEngine/policyengine-api

Toutes les issues de PolicyEngine/policyengine-api

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.