When updating my Ecto version from 2.1.2 to 2.2.10 my application fails to compile due to a deadlock between modules. All of the modules that are responsible for the failure appear to be compiling before the modules they depend on (i.e. associations) have finished compiling.
phoenix_ecto 3.2.1My application fails to compile with the following output:
== Compilation error on file web/models/major_appliances_form.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/home_assessment_sponsor.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/property_address.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/photo.ex ==
** (CompileError) deadlocked waiting on module Haas.MasterBedroom
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/utm.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/document.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/master_bedroom.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/sponsor.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessmentSponsor
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:432: Ecto.Association.Has.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/simple_color.ex ==
** (CompileError) deadlocked waiting on module Haas.Appliance
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/living_room.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/appliance_photo.ex ==
** (CompileError) deadlocked waiting on module Haas.Appliance
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/scheduling_contact.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/dining_room.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/fixture.ex ==
** (CompileError) deadlocked waiting on module Haas.Photo
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:432: Ecto.Association.Has.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/vendor_signup.ex ==
** (CompileError) deadlocked waiting on module Haas.Photo
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:432: Ecto.Association.Has.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/water_heater.ex ==
** (CompileError) deadlocked waiting on module Haas.Hvac
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/space.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/master_bathroom.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/services/home_assessments/clone.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
web/services/home_assessments/clone.ex:6: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
== Compilation error on file web/models/user_event.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/sponsor_image.ex ==
** (CompileError) deadlocked waiting on module Haas.Sponsor
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/order_number.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/room_paint.ex ==
** (CompileError) deadlocked waiting on module Haas.HomePaint
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/home_assessment_primary_user.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/kitchen.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/basement.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/home_checklist.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/home_services_payment.ex ==
** (CompileError) deadlocked waiting on module Haas.JobRequest
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/home_paint.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/length.ex ==
** (CompileError) deadlocked waiting on module Haas.Appliance
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/roof_chimney_attic.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/intro_survey.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/trax_item.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/hvac.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/residence_exterior.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/job_request.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/fixture_element.ex ==
** (CompileError) deadlocked waiting on module Haas.Fixture
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/garage.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/services/home_assessments/export.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessmentSponsor
web/services/home_assessments/export.ex:95: (module)
web/services/home_assessments/export.ex:92: (module)
== Compilation error on file web/models/electrical_panel.ex ==
** (CompileError) deadlocked waiting on module Haas.Hvac
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/home_assessment.ex ==
** (CompileError) deadlocked waiting on module Haas.Photo
web/models/home_assessment.ex:238: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
== Compilation error on file web/models/appliance.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/home_assessment_user.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:719: Ecto.Association.BelongsTo.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
== Compilation error on file web/models/presenter.ex ==
** (CompileError) deadlocked waiting on module Haas.HomeAssessment
(elixir) lib/code.ex:568: Code.ensure_compiled/1
(elixir) lib/code.ex:586: Code.ensure_compiled?/1
lib/ecto/association.ex:432: Ecto.Association.Has.after_compile_validation/2
lib/ecto/schema.ex:1656: anonymous fn/4 in Ecto.Schema.__after_compile__/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
lib/ecto/schema.ex:1654: Ecto.Schema.__after_compile__/2
Compilation failed because of a deadlock between files.
The following files depended on the following modules:
web/models/major_appliances_form.ex => Haas.HomeAssessment
web/models/home_assessment_sponsor.ex => Haas.HomeAssessment
web/models/property_address.ex => Haas.HomeAssessment
web/models/photo.ex => Haas.MasterBedroom
web/models/utm.ex => Haas.HomeAssessment
web/models/document.ex => Haas.HomeAssessment
web/models/master_bedroom.ex => Haas.HomeAssessment
web/models/sponsor.ex => Haas.HomeAssessmentSponsor
web/models/simple_color.ex => Haas.Appliance
web/models/living_room.ex => Haas.HomeAssessment
web/models/appliance_photo.ex => Haas.Appliance
web/models/scheduling_contact.ex => Haas.HomeAssessment
web/models/dining_room.ex => Haas.HomeAssessment
web/models/fixture.ex => Haas.Photo
web/models/vendor_signup.ex => Haas.Photo
web/models/water_heater.ex => Haas.Hvac
web/models/space.ex => Haas.HomeAssessment
web/models/master_bathroom.ex => Haas.HomeAssessment
web/services/home_assessments/clone.ex => Haas.HomeAssessment
web/models/user_event.ex => Haas.HomeAssessment
web/models/sponsor_image.ex => Haas.Sponsor
web/models/order_number.ex => Haas.HomeAssessment
web/models/room_paint.ex => Haas.HomePaint
web/models/home_assessment_primary_user.ex => Haas.HomeAssessment
web/models/kitchen.ex => Haas.HomeAssessment
web/models/basement.ex => Haas.HomeAssessment
web/models/home_checklist.ex => Haas.HomeAssessment
web/models/home_services_payment.ex => Haas.JobRequest
web/models/home_paint.ex => Haas.HomeAssessment
web/models/length.ex => Haas.Appliance
web/models/roof_chimney_attic.ex => Haas.HomeAssessment
web/models/intro_survey.ex => Haas.HomeAssessment
web/models/trax_item.ex => Haas.HomeAssessment
web/models/hvac.ex => Haas.HomeAssessment
web/models/residence_exterior.ex => Haas.HomeAssessment
web/models/job_request.ex => Haas.HomeAssessment
web/models/fixture_element.ex => Haas.Fixture
web/models/garage.ex => Haas.HomeAssessment
web/services/home_assessments/export.ex => Haas.HomeAssessmentSponsor
web/models/electrical_panel.ex => Haas.Hvac
web/models/home_assessment.ex => Haas.Photo
web/models/appliance.ex => Haas.HomeAssessment
web/models/home_assessment_user.ex => Haas.HomeAssessment
web/models/presenter.ex => Haas.HomeAssessment
The modules that depend on Haas.HomeAssessment wait for it to compile before compilation, allowing the application to compile successfully.
I couldn't find any reports of this issue but I might have missed it so sorry if it has already been reported. Let me know if you need any other information from my end.
Thanks!
@supernintendo can you please provide an application that reproduces the error? Cyclic associations are actually fine (and I have them working in a app) so there is something else happening here causing the issue.
@josevalim Sure. The project where I'm running into this is closed source, but I'll dig a bit deeper and see if I can provide some source code that reproduces this.
We have stumbled into the same problem when trying to bump ecto from 2.1.6 to 2.2.x in our project. We managed to nail it down to after_compile_validation calls for associations, like this one https://github.com/elixir-ecto/ecto/blob/master/lib/ecto/association.ex#L458. When we commented out condition clauses for Code.ensure_compiled?(queryable) check for either Has or BelongsTo association type, the deadlock didn't occur. We haven't managed to create a minimal example reproducing this issue though.
@supernintendo - I just encountered the exact same issue.
Would you happen to have module attributes that reference one of your other modules on lines 92 or 95 of web/services/home_assessments/export.ex (or anywhere else for that matter)?
If you remove/relocate those references, it should work™.
If you have a way to reproduce the issue I would love to take a look at it and see if we can improve the error message or similar.
@josevalim - I will try to recreate it on a new project sometime soon. For now, here's the gist of what's happening:
defmodule MyApp.ModelA do
schema "model_a" do
has_many :model_bs, MyApp.ModelB
end
@default_preloads = [model_bs: from(b in MyApp.ModelB, order_by: [asc: b.id])]
end
defmodule MyApp.ModelB do
schema "model_b" do
belongs_to :model_a, MyApp.ModelA
end
end
If I reference MyApp.ModelB inside of MyApp.ModelA in a module attribute, this causes the deadlock situation. That being said, it's probably not good to do that anyway.
@jkslyby That seems to be what is causing the problem in my case. It appears that an Ecto query set to a module attribute cannot contain a reference to another module it also depends on. Refactoring those queries allowed my application to compile. Thanks!
@josevalim Here is an application that reproduces the issue https://github.com/supernintendo/ecto_deadlock_example
@supernintendo thank you! It makes sense indeed. Queries are not guaranteed to be compile-time safe and it is actually important that we recompile modules when their query sources chance. Moving it to a function is the way to go.