:erpc.multicast/4 not working with Cluster.Strategy.Gossip strategy
spencerdcarlson opened this issue · 1 comments
Steps to reproduce
- Configuration Used
config :libcluster,
topologies: [
gossip: [
strategy: Cluster.Strategy.Gossip,
config: [
port: 45892,
if_addr: {0, 0, 0, 0},
multicast_addr: {230, 1, 1, 251},
multicast_ttl: 1,
secret: "mysecret"
]
]
]
config :slab, MyApp.Cache,
local_opts: [],
levels: [
{MyApp.Cache.Partitioned, []},
]
defmodule MyApp.Cache do
use Nebulex.Cache,
otp_app: :slab,
adapter: NebulexLocalMultilevelAdapter
end
defmodule MyApp.Cache.Partitioned do
use Nebulex.Cache,
otp_app: :slab,
adapter: Nebulex.Adapters.Partitioned
end
-
Strategy Used
Cluster.Strategy.Gossip
-
Errors/Incorrect Behaviour Encountered
Nebulex cache entries are updated on the Node where they are affected, but they are not broadcasted to other nodes.
Description of issue
I think :erpc.multicast/4 might not be working with Cluster.Strategy.Gossip
strategy. While using NebulexLocalMultilevelAdapter with the Partitioned adapter as my L2 I can see my Nodes clustered by printing out Node.list()
but the Nebulex call to :erpc.multicast/4 doesn't seem to be working. If I switch to using a Elixir.Cluster.Strategy.LocalEpmd
topology, everything seems to be working as expected.
- What are the expected results?
Nebulex cache entries be synchronized
🤔 I am not sure if this is related to libcluster. I modified nebulex_local_multilevel_adapter.ex#L202 locally to use :erpc.multicall/4 and it seems to work correctly returning appropriately and syncing the Nebulex cache on each node.