kirqe
Start children of dynamic supervisor after it's started
Having a list of strings where every string represents an argument for a child, how can I start them all after DynamicSupervisor.init? Or should I use plain Supervisor? Or am I doing it wrong at all? Thanks
If I add lines |> Enum.each(&add/1) after DynamicSupervisor.init, it doesn’t seem to work and as I understand it’s a bad practice to do this inside init.
application.ex
children = [
{Pbot.Stash, []},
{Pbot.SymbolSupervisor, ["one", "two", "three"]}
]
symbol_supervisor.ex
defmodule Pbot.SymbolSupervisor do
use DynamicSupervisor
def start_link(lines) do
DynamicSupervisor.start_link(__MODULE__, lines)
end
def init(lines) do
DynamicSupervisor.init(strategy: :one_for_one)
# lines |> Enum.each(&add/1)
end
def add(line) do
{:ok, _pid} = DynamicSupervisor.start_child(__MODULE__, {Pbot.M, line})
end
end
error
04:18:17.411 [info] Application pbot exited: Pbot.Application.start(:normal, []) returned an error: shutdown: failed to start child: Pbot.SymbolSupervisor
** (EXIT) exited in: GenServer.call(Pbot.SymbolSupervisor, {:start_child, {{Pbot.M, :start_link, [[%Pbot.Pair{...}, %Pbot.Pair{...}]]}, :transient, 5000, :worker, [Pbot.M]}}, :infinity)
** (EXIT) process attempted to call itself
Marked As Solved
blatyo
Conduit Core Team
You probably just want a normal supervisor if you know all the processes that are going to exist at startup.
1
Also Liked
rvirding
Creator of Erlang
Two problems with your code:
- You need to give a
:nameoption to theDymanicSupervisor.start_linkcall as you assume it has been set to the module name. - You are making a synchronous call to yourself as the
DynamicSupervisor.start_childcall is made from inside the supervisor process. If this had been allowed the supervisor process would hang. This what the 2nd and 3rd error lines are about. The 1st error line comes from this supervisor’s supervisor exiting because its children crashed at startup.
And you have the issue which @blatyo mentioned: do you really want/need a normal supervisor here as you know all child processes? The only difference here would be the termination order of the children.
3
Popular in Questions
Hi All,
I set a environment variables in dev.exs , like below code.
when i start server, how can i set the ${enable} value?
thanks.
d...
New
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
Hello everyone,
I try to use an Javascript Event Handler in my root.html.leex file.
Therefore I created a function in the app.js file: ...
New
After calling mix ecto.create I get this error:
17:00:32.162 [error] GenServer #PID<0.412.0> terminating
** (Postgrex.Error) FATAL...
New
Could someone help me? I’m making my first elixir program, number guessing game. I can’t figure out how to convert the user’s guess from ...
New
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this:
...
New
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
Okay, I’m having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I’m sure I’...
New
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Other popular topics
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service.
Currently when I de...
New
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
Hello everyone,
I try to use an Javascript Event Handler in my root.html.leex file.
Therefore I created a function in the app.js file: ...
New
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
Good day to you all.
I have been struggling to get a query involving like and ilike to work.
Can anyone assist me on this, please?
pro...
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
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including.
What is Phoenix LiveV...
New
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
New
Is there a way to rollback a specific migration and only that one (“skipping” all the other ones)?
Would
mix ecto.rollback -v 200809061...
New
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
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









