prateek1192
Correct way to create Genservers using Dynamic Supervisor
I am trying to create a dynamic supervisor to start child processes. There are three modules I am using to do this, one is the main module, the second one is the Dynamic Supervisor and the third is the genserver. I do not get any errors but I am not able to see any child processes running.
Here is my code. The first one is the module having the main method
defmodule Simulator do
def main(args) do
{:ok, super_pid} = PersonManager.start_link(args)
start_persons(num_of_persons)
IO.inspect PersonManager.count_children, label: "The Persons started in main method are"
end
def start_persons(num_of_persons) when num_of_persons >=1 do
PersonManager.add_node(private_key, public_key, 0)
start_persons(num_of_persons-1)
end
# num_of_persons == 0 case handled
end
The following is a dynamic Supervisor
defmodule PersonManager do
use DynamicSupervisor
def start_link(args) do
DynamicSupervisor.start_link(__MODULE__, :ok, name: __MODULE__)
end
def add_node(private_key, public_key, num_of_coins) do
# The code flow does come here, used inspect to check
child_spec = {Person, {private_key, public_key, num_of_coins}}
DynamicSupervisor.start_child(__MODULE__, child_spec)
#The code flow does come here, used inpect to check.
end
end
The following is the GenServers the worker is supposed to create
defmodule Person do
use GenServer
def init({private_key, public_key, address, num_of_coins}) do
IO.puts "Starting a person"
{:ok, %{private_key: private_key, public_key: public_key, num_of_coins: num_of_coins}}
end
def start_link({private_key, public_key, address, num_of_coins}) do
IO.puts "Starting a person"
GenServer.start_link(
__MODULE__,
{private_key, public_key, address, num_of_coins}
name: {:global, "node:#{public_key}"},
)
end
end
I expect the genserver to be running but I get The Persons started in main method are: %{active: 0, specs: 0, supervisors: 0, workers: 0}
I dont know why the supervisor is not able to start the genserver.
Any help would be good.
TIA
First Post!
benwilson512
Author of Craft GraphQL APIs in Elixir with Absinthe
Can you show this function count_children ?
Popular in Questions
In Ruby, I can go:
User.find_by(email: "foobar@email.com").update(email: "hello@email.com")
How can I do something similar in Elixir?
...
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
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
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
Using vs code and installed ElixirLS: support and debugger.
And I got an error popped up on start up says
Failed to run ‘elixir’ comma...
New
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
I have a User schema with a :from_id field set to type :string:
defmodule TweetBot.Repo.Migrations.CreateUsers do
use Ecto.Migration
...
New
Hi,
I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
Hello!
Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
Other popular topics
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]
15:22:35.803 [error] gen_event {lager_file_backend...
New
What is the idiomatic way of matching for not nil in Elixir?
E.g.,
First way:
defp halt_if_not_signed_in(conn, signed_in_account) when...
New
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Hi!
In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir?
Searched the docs for ip address and the web, no good results.
Thanks!
New
I am trying to run a deploy with docker and I successfully runned with this command:
docker build -t romenigld/blog-prod .
but when I t...
New
I had some trouble figuring out how to make many-to-many associations work. Once I got it working, I wrote a blog post. Because I’m a nov...
New
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
Hi!
Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
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









