Penyulingan gagal dengan pesan Lipat gandakan modul yang ditentukan: 'Elixir.Telemetry'

Ketika saya mencoba memutakhirkan aplikasi Phoenix yang sedang berjalan menggunakan Distillery, pembangunannya gagal dengan pesan-pesan berikut:

Generated teamgenik app
==> Assembling release..
==> Building release my_app:0.10.7 using environment prod
==> Generated .appup for artificery 0.2.6 -> 0.4.1
==> Generated .appup for db_connection 2.0.3 -> 2.0.6
==> Generated .appup for decimal 1.6.0 -> 1.7.0
==> Generated .appup for ecto 3.0.6 -> 3.0.8
==> Generated .appup for ecto_sql 3.0.4 -> 3.0.0
==> Generated .appup for phoenix 1.4.0 -> 1.4.3
==> Generated .appup for phoenix_html 2.13.0 -> 2.13.2
==> Generated .appup for phoenix_pubsub 1.1.1 -> 1.1.2
==> Generated .appup for plug 1.7.1 -> 1.7.2
==> Generated .appup for plug_cowboy 2.0.1 -> 2.0.2
==> Generated .appup for teamgenik 0.10.6 -> 0.10.7
==> Generated .appup for telemetry 0.3.0 -> 0.2.0
==> Release failed with multiple errors:
    Multiply defined module: 'Elixir.Telemetry'

Saya mengoperasikan aplikasi ini selama beberapa bulan dan saya telah berhasil memutakhirkannya beberapa kali. Kali ini, saya ingin meningkatkan versi Phoenix dari 1.4.0 ke 1.4.3.

Saya telah membaca entri ini di Forum Elixir:

https://elixirforum.com/t/distillery-build-error-multiply-definisi-module-elixir-collectable-ecto-adapters-sql-stream/19489

Saya telah mencoba mix deps.clean --all dan mix release.clean. Ada saran atau saran?

PEMBARUAN

Saya melihat fenomena aneh. Ketika saya mengeksekusi bin/my_app upgrade 0.10.7 pada RELEASE_ROOT_DIR, saya mendapat pesan kesalahan ini (perhatikan tanda kutip ganda dan koma di antara keduanya):

Could not locate code path for release-my_app","0.10.6!

person Tsutomu    schedule 02.04.2019    source sumber
comment
Rilis berhasil dibuat, tetapi saya tidak dapat memutakhirkannya. Saya menerima pesan ini: Pengendali rilis gagal dipasang: {:no_matching_relup, '0.10.7', '0.10.6'}   -  person Tsutomu    schedule 02.04.2019
comment
mix hex.outdated? Selain itu, apakah Anda sudah mengubah versi aplikasi itu sendiri di mix.exs ke versi yang lebih baru?   -  person Aleksei Matiushkin    schedule 02.04.2019
comment
MIX_ENV=prod mix hex.outdated melapor bahwa hanya ecto_sql yang dapat diperbarui dari 3.0.0 ke 3.0.5. Versi pada mix.exs adalah 0.10.7. Saya ingin meningkatkan ke versi ini. Versi sebelumnya adalah 0.10.6.   -  person Tsutomu    schedule 02.04.2019
comment
Sepertinya ini distillery masalah/jebakan yang tidak terkait dengan pertanyaan awal. Jadi, bagaimana cara merakit rilis? Secara khusus, apakah Anda memiliki AUTO_VERSION=commit-count+git-revision+branch-unless-master atau AUTO_VERSION lainnya di .deliver/config Anda?   -  person Aleksei Matiushkin    schedule 02.04.2019
comment
Sekarang saya membaca github.com/bitwalker/distillery/issues/495, yang sepertinya agar relevan dengan masalah saya.   -  person Tsutomu    schedule 02.04.2019


Jawaban (1)


Meskipun saya tidak dapat mendeteksi akar penyebab masalah saya, saya berhasil mengupgrade aplikasi saya dengan cara berikut.

  1. Hentikan aplikasinya.
  2. Hapus direktori rilis.
  3. Buat ulang direktori rilis.
  4. Hapus direktori _build dari direktori sumber.
  5. Terapkan aplikasi dengan mix release.

Dengan kata lain, saya menghentikan pertukaran kode host dan memilih untuk menerapkan ulang aplikasi saya dengan yang baru.

Tampaknya masalah saya terkait dengan masalah ini:

Keduanya sudah ditutup. Saya rasa masalah saya disebabkan oleh beberapa bug pada instalasi Distillery yang lama dan saya tidak akan menemukannya di masa mendatang.

person Tsutomu    schedule 03.04.2019
comment
@JoséValim fwiw, Anda bertanya-tanya apakah orang melakukan hot-swapping. ⇑ - person Aleksei Matiushkin; 04.04.2019