Open thbar opened 2 weeks ago
Vu avec @vdegove, qui regarde pour rétrécir la repro, et je prendrai le relais derrière pour chercher un fix
@thbar ok, donc j’ai le cas de reproduction minimal du deadlock, avec seulement 2 tests \o/
apps/transport/test/transport/stats_handler_test.exs
apps/transport/test/transport_web/controllers/dataset_search_test.exs
Lorsqu’on lance :
mix test --only focus
On obtient :
==> transport
Excluding tags: [:test, :pending, :transport_tools, :documentation_links]
Including tags: [:focus]
.....
1) test compute aom max severity (Transport.StatsHandlerTest)
apps/transport/test/transport/stats_handler_test.exs:126
** (Postgrex.Error) ERREUR 40P01 (deadlock_detected) interblocage (deadlock) détecté
hint: Voir les journaux applicatifs du serveur pour les détails sur la requête.
Le processus 1825993 attend AccessExclusiveLock sur relation 18279 de la base de données 16388 ; bloqué par le processus 1825995.
Le processus 1825995 attend AccessExclusiveLock sur relation 17856 de la base de données 16388 ; bloqué par le processus 1825993.
code: aom_1 = insert(:aom)
stacktrace:
(ecto_sql 3.11.1) lib/ecto/adapters/sql.ex:1054: Ecto.Adapters.SQL.raise_sql_call_error/1
(ecto 3.11.2) lib/ecto/repo/schema.ex:775: Ecto.Repo.Schema.apply/4
(ecto 3.11.2) lib/ecto/repo/schema.ex:377: anonymous fn/15 in Ecto.Repo.Schema.do_insert/4
(ecto 3.11.2) lib/ecto/association.ex:1279: Ecto.Association.BelongsTo.on_repo_change/5
(ecto 3.11.2) lib/ecto/association.ex:624: Ecto.Association.on_repo_change/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(ecto 3.11.2) lib/ecto/association.ex:589: Ecto.Association.on_repo_change/4
(ecto 3.11.2) lib/ecto/repo/schema.ex:922: Ecto.Repo.Schema.process_parents/6
(ecto 3.11.2) lib/ecto/repo/schema.ex:351: anonymous fn/15 in Ecto.Repo.Schema.do_insert/4
(ecto 3.11.2) lib/ecto/repo/schema.ex:1033: anonymous fn/3 in Ecto.Repo.Schema.wrap_in_transaction/6
(ecto_sql 3.11.1) lib/ecto/adapters/sql.ex:1358: anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4
(db_connection 2.6.0) lib/db_connection.ex:1710: DBConnection.run_transaction/4
(ecto 3.11.2) lib/ecto/repo/schema.ex:273: Ecto.Repo.Schema.insert!/4
test/transport/stats_handler_test.exs:127: (test)
[…]
...............
Finished in 7.9 seconds (7.9s async, 0.03s sync)
190 doctests, 981 tests, 4 failures, 1141 excluded
Randomized with seed 277802
Un autre truc remarqué : si je retire uniquement les deux tests suivants, tout marche :
modifié : apps/transport/test/transport/consolidated_dataset_test.exs
modifié : apps/transport/test/transport/stats_handler_test.exs
Travail en cours avec @vdegove pour comprendre d'où vient le deadlock constaté.
On a la cause, on cherche ici à "zoomer" sur la plus petite reproduction possible.