ak-iz
How do I deploy project with Amnesia with `mix release` on production?
I have multiple disk schemas with Amnesia. But for some reason it doesn’t work when I deploy with mix release.
I have this in my Application module:
def start(_type, _args) do
children = [
MyApp.CacheInitializer
]
end
This is my CacheInitializer module.
defmodule MyApp.CacheInitializer do
use Task, restart: :permanent
@spec start_link(any()) :: :ignore | {:error, any()} | {:ok, pid()}
def start_link(_init_args \\ []) do
Task.start_link(__MODULE__, :run, [])
end
def run() do
if Application.get_env(:my_app, :app_config)[:env] == :prod do
MyApp.CacheBuilder.build()
else
Process.sleep(:infinity)
end
end
end
MyApp.CacheBuilder.build() starts to write on the Amnesia tables. For dev, when I run with iex it works fine (also changing the if condition so it can work with dev). There I run command: mix amnesia.create -d Database --disk!.
The error I get when I run my release through start is:
15:14:52.447 [error] Task #PID<0.4991.0> started from MyApp.Supervisor terminating
** (stop) {:aborted, {:no_exists, Database.InValidRssCache}}
(mnesia 4.18.1) mnesia.erl:361: :mnesia.abort/1
(mnesia 4.18.1) mnesia_tm.erl:1067: :mnesia_tm.dirty/2
(my_app 0.0.1) lib/my_app/amensia/database.ex:32: Database.InValidRssCache.write!/1
(my_app 0.0.1) lib/my_app/invalid_rss_cache.ex:14: MyApp.InvalidRssCache.write!/2
(elixir 1.13.4) lib/enum.ex:937: Enum."-each/2-lists^foreach/1-0-"/2
(my_app 0.0.1) lib/my_app/cache_builder.ex:15: MyApp.CacheBuilder.build/0
(elixir 1.13.4) lib/task/supervised.ex:89: Task.Supervised.invoke_mfa/2
(stdlib 3.14) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Function: &MyApp.CacheInitializer.run/0
Args: []
{"Kernel pid terminated",application_controller,"{application_terminated,my_app,shutdown}"}
Kernel pid terminated (application_controller) ({application_terminated,my_app,shutdown})
Crash dump is being written to: erl_crash.dump...done
I also start my release with $BOOT_SCRIPT_CLEAN, running Amnesia.start doesn’t help anything, as soon as I run my application, I get the same error.
Is there something else needs to be done here? Or is there a way I can run my application having Amnesia with mix release? Any help?
Popular in Questions
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
I have VueJS GUIs with the project generated using Webpack.
I have Elixir modules that will need to be used by the VueJS GUIs.
I forese...
New
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
If I have a post route which an argument:
post /my_post_route/:my_param1, MyController.my_post_handler
How would get the post params ...
New
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: )
Hello all, this is ...
New
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
Hi,
I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
Other popular topics
Update:
How to use the Blogs & Podcasts section
You can post links to your blog posts or podcasts either in one of the Official Blog...
New
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
Hi folks,
Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
New
I would like to know what is the best IDE for elixir development?
New
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
If I have a post route which an argument:
post /my_post_route/:my_param1, MyController.my_post_handler
How would get the post params ...
New
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
Got a question about when to concat vs. prepending items to list then reversing to achieve appending.
So i know lists boil down to [1 | ...
New
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance










