Open Holist opened 1 year ago
Une précédente pr pour tenter de résoudre ce problème avait été faite par @aminedhobb ici : https://github.com/betagouv/rdv-insertion/pull/941
@aminedhobb Nous avons 2 containers pour les jobs dans scalingo. Sont ils indispensables au bon fonctionnement de la production ?
Je me disais que ça pourrait être intéréssant de tester avec un seul container pendant une semaine par exemple afin de voir si ces erreurs persistent ou pas. Si ces erreurs n'apparaissent plus il pourrait s'agir d'un problème de thread avec nos 2 containers jobs. Dans le cas de l'assignation des référents on utilise with_advisory_lock
dans le code , cela devrait normalement nous éviter ce problème de thread mais je sèche un peu et je n'arrive pas à reproduire en local.
On pourrait aussi tester avec l'option transaction: true
de with_advisory_lock
pour voir si cela change quelquechose.
Applicant.with_advisory_lock("assigning_#{rdv_solidarites_agent_id}_to_#{rdv_solidarites_user_id}", transaction: true) do
attach_agent_to_applicant if event == "created"
remove_agent_from_applicant if event == "destroyed"
end
On pourrait aussi tester avec l'option
transaction: true
dewith_advisory_lock
pour voir si cela change quelquechose.Applicant.with_advisory_lock("assigning_#{rdv_solidarites_agent_id}_to_#{rdv_solidarites_user_id}", transaction: true) do attach_agent_to_applicant if event == "created" remove_agent_from_applicant if event == "destroyed" end
La transaction étant synchrone je sais pas si ça change quelque chose si ?
La transaction étant synchrone je sais pas si ça change quelque chose si ?
Tu as raison. Normalement advisory_lock
aurait du suffire mais je ne vois vraiment pas d'ou vient ce problème...
Comportement observé
Nous avons de temps en temps des remontées d'erreurs dans sentry pour des violations de contraintes d'unicité suite à des webhooks reçus de rdv-s :
UserProfile / Created ReferentAssignation / Created
https://sentry.incubateur.net/organizations/betagouv/issues/24303/?project=16&query=is%3Aunresolved&statsPeriod=24h https://sentry.incubateur.net/organizations/betagouv/issues/31712/?project=16&query=is%3Aunresolved&statsPeriod=24h
ERROR: duplicate key value violates unique constraint "index_applicants_orgas_on_orga_id_and_applicant_id" (PG::UniqueViolation)
ERROR: duplicate key value violates unique constraint "index_agents_applicants_on_applicant_id_and_agent_id" (PG::UniqueViolation)
Comportement souhaité
Il s'agirait d'enquêter pour comprendre pourquoi sentry remonte ces alertes afin de gérer ces cas pour ne plus avoir cette erreur dans nos logs. J'ai regardé dans le sentry de RDV-S et je ne retrouve pas ces erreurs.