Phoenix Recompiling / Redefining module every page load

I’ve been playing with Ubuntu 17.04 in a VMware VM and pulled in one of my Phoenix projects (Phoenix 1.3-rc, Elixir 1.4.2, Erlang 19.2.1). It pulls the deps fine, compiles fine, and runs the tests fine. But when I load a Phoenix page in my browser it recompiles the whole application and gives a bunch of warnings about redefining module. It does this over and over for every page load and, of course, it’s super slow because of that.

warning: redefining module Molly.Integration.Server (current version loaded from _build/dev/lib/molly/ebin/Elixir.Molly.Integration.Server.beam)
  lib/molly/integration/server.ex:1

warning: redefining module Molly.Web.Api.PlayerView (current version loaded from _build/dev/lib/molly/ebin/Elixir.Molly.Web.Api.PlayerView.beam)
  lib/molly/web/views/api/player_view.ex:1

warning: redefining module Molly.Web.Api.PackageView (current version loaded from _build/dev/lib/molly/ebin/Elixir.Molly.Web.Api.PackageView.beam)
  lib/molly/web/views/api/package_view.ex:1

warning: redefining module Molly.FranchisePreferredPackage (current version loaded from _build/dev/lib/molly/ebin/Elixir.Molly.FranchisePreferredPackage.beam)
  lib/molly/core/franchise_preferred_packages.ex:1

Has anyone seen anything like this? Thanks!

If you rm -rf _build does the problem persist?

1 Like

Removing _build doesn’t change it. mix phx.server runs and code compiles, I load the first page and everything recompiles with the warning.

It has something to do with code reloading because if I set code_reloader: false in the dev mix config the problem goes away. I confirmed I have inotify-tools installed (I think that’s how phoenix watches for file changes), I don’t know how to tell if it’s working correctly or not though.

Check your system time. I use VMs on my Mac and get time drift a lot. Strange things happen when when time is not current. There were issues in in mix a couple years ago that were fixed, but you may be hitting an edge case.

Good suggestion about the time. I confirmed the time was correct, installed and ran ntp to make sure it was up-to-date. I even deleted my app directory and re-cloned from github after doing that to ensure everything was good. Same behavior, so it doesn’t seem like a time issue.

This is a weird one. Just trying to figure out if it’s an Ubuntu 17.04 issue or if it’s a VMware issue or something?

Tried it on VMWare with Fedora 25 and it does NOT have the same problem. So it might be something specific to Ubuntu 17.04?

I think it comes down to using the default Ubuntu erlang packages. I installed the Erlang Solutions erlang package and the problem went away.

I saw another post from someone at our company that had the same problem it has to do something with zlib and older erlang version they fixed that in 19.3 or something like that.

this worked for me.
But I was seeking on the internet and I saw this command:
mix do clean, phx.server