I’m running into a strange issue with an edeliver (1.8.0) / Distillery (2.1.1) / Phoenix (1.5.3) application where after running
mix edeliver build release
mix edeliver deploy release to production
mix edeliver restart production
… to my remote server, my app reverts to running and serving an older version of my app.
This most obviously manifests itself by serving old static assets. But also appears not just to be a static asset issue. Running code from the console also has old behavior.
Note that running mix edeliver upgrade production
does not exhibit the same behavior, and correctly upgrades to the new version.
I would love some help figuring out where to look next! Thanks y’all.
$ mix edeliver version production
EDELIVER MY_APP WITH VERSION COMMAND
-----> getting release versions from production servers
production node: 0
user : my_remote_username
host : my.server.ip.address
path : /home/my_remote_username/app_release
response: '1.0.3+882-20200819-020104-prod' [...this is the expected current version...]
[...two other nodes report same version...]
VERSION DONE!
$ mix edeliver build release
BUILDING RELEASE OF MY_APP APP ON BUILD HOST
-----> Authorizing hosts
[...]
-----> Copying release 1.0.3+882-20200819-021103-prod to remote release store
[... still 1.0.3 but new timestamp...]
RELEASE BUILD OF [ MYAPP ] WAS SUCCESSFUL!
$ mix edeliver deploy release to production
DEPLOYING RELEASE OF MY_APP APP TO PRODUCTION HOSTS
-----> Authorizing hosts
[...]
-----> Selecting release
Found 32 different versions to deploy.
Versions:
[...old versions...]
1.0.0+862-20200818-040404-prod [... this version is noteworthy... spoiler alert...]
[...more intermediary versions...]
1.0.3+882-20200819-021103-prod
Enter Version:
$ 1.0.3+882-20200819-021103-prod
DEPLOYED RELEASE TO PRODUCTION!
$ mix edeliver restart production
EDELIVER [MY_APP] WITH RESTART COMMAND
-----> restarting production servers
[... all three nodes report restart...]
RESTART DONE!
$ mix edeliver version production
EDELIVER MY_APP WITH VERSION COMMAND
-----> getting release versions from production servers
production node: 2
user : my_remote_username
host : 142.93.187.55
path : /home/my_remote_username/app_release
response: '1.0.3+882-20200819-021103-prod'
[... two other nodes report same version...]
VERSION DONE!
$ ssh -t my_remote_username@my.remote.ip.addres " ~/app_release/my_app/bin/my_app remote_console"
Erlang/OTP 23 [erts-11.0.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]
Interactive Elixir (1.10.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(my_app@my.remote.ip.address)1> Application.spec(:my_app, :vsn)
'1.0.0+862-20200818-040404-prod'
[... what? Why this old version?]