owaisqayum
I am trying to send messages to all local nodes periodically about a leader selection. I am using 4 nodes currently
[:"n1@127.0.0.1", :"n2@127.0.0.1", :"n3@127.0.0.1", :"n4@127.0.0.1"]
Leader module
defmodule Worm.Leader do
def leader_election() do
nodes =
([Node.self()] ++ Node.list())
max = Enum.max(nodes)
Enum.each(nodes, fn node -> send_leader_info(node, max) end)
end
def send_leader_info(node, max) do
Process.send_after(node, {:leader, max}, 200)
end
end
Genserver
@impl GenServer
def handle_info({:leader, max_node}, state) do
Logger.info("--- New Leader is: #{state}")
# Reschedule once more
Worm.Leader.leader_election()
{:noreply, state}
end
I get this result
send: #Reference<0.2477235930.2055208966.145218>
send: #Reference<0.2477235930.2055208966.145221>
send: #Reference<0.2477235930.2055208966.145224>
send: #Reference<0.2477235930.2055208966.145227>
But I am not able to see any periodic message on any connected node. What am I doing wrong here?
Thanks
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
So i have been using ash framework for a while and i love it. However currently the issue im having with ash framework is the error handl...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex











Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
hauleth
You are sending messages, but you have never specified to which process you want to send them. This mean, that it treats it as an process names in local registry, so in the end these messages goes nowhere.
Aetherus
Process.send_after/3needs a pid or a process name as the first argument, but you gave it a node name.Here’s part the documentation of
Process.send_after/3:owaisqayum
How can i specify processes on a node, as I need the messages to display on other nodes like a heartbeat.
hauleth
You need to either use named processes or send PIDs of the quorum members by other way.
Aetherus
Kernel.send/2can take{process_name, node_name}as the first arg, whereprocess_nameis an atom. You have to workaround it in order to delay the sending, for example, send toself()a message after 200ms, and when that message is consumed, useKernel.send/2to send a message to the remote processes.owaisqayum
I have modified the function
send_leader_info\2by spawning the node but still am getting nothing on remote nodes.ruslandoga
Assuming you want to receive the messages in your GenServer process, you can start the genserver with a name and send messages to
{genserve_name, node_name}.See GenServer — Elixir v1.12.3 for more info
stefanchrobot
Just a small tip - you can do
instead of:
owaisqayum
getting an argument error
So
{SomeName, :"n1@127.0.0.1"}should be a pid or an atomruslandoga
Try with
send({SomeName, :"n1@127.0.0.1"}, {:leader, :"n1@127.0.0.1"}), does it work?:erlang.send_afterindeed doesn’t allow sending to remote nodes.