Comments (3)
Thanks for testing & for the bug report. I can reproduce it with 0.5.0-rc.11, but when I try with the branch react_to_membership_changes
, everything works as expected.
It took me a long time to figure out what was happening here. But now I know what it was. It's a bug in delta_crdt. Basically, if the first delta wasn't propagated within 10s, it would be garbage collected, and the other nodes would be none the wiser. This is now fixed in the current branch I'm working on (which uses a heavily overhauled delta_crdt). #92
from horde.
Here's a test that reproduces the issue (which I won't be adding to the repo since it takes longer than 10s to run):
test "cluster membership is propagated" do
{:ok, _} = Horde.Supervisor.start_link(name: :prop1, strategy: :one_for_one)
{:ok, _} = Horde.Supervisor.start_link(name: :prop2, strategy: :one_for_one)
Process.sleep(11000)
:ok = Horde.Cluster.set_members(:prop1, [:prop1, :prop2])
Process.sleep(1000)
{:ok, members} = Horde.Cluster.members(:prop1)
assert 2 = Enum.count(members)
{:ok, members} = Horde.Cluster.members(:prop2)
assert 2 = Enum.count(members)
end
from horde.
Cool! Happy to help :)
from horde.
Related Issues (20)
- ETS lookup crash in Registry.lookup
- Horde Process topology HOT 12
- DynamicSupervisor.start_child hangs on infinite timeout HOT 3
- Is it possible to start a Horde dynamic supervisor with a registered name? HOT 2
- match error when stopping a process HOT 1
- Stopping Child via Horde.DynamicSupervisor.terminate_child with via_tuple HOT 1
- Occasional Horde Registry Lookup Misses HOT 2
- GenServer.cast cant find process via {:via, Horde.Registry, ...} HOT 6
- race condition in name conflict in same registry process results in all processes losing HOT 20
- Default random node distribution strategy HOT 5
- Match error while doing process handoff in dynamic supervisor
- Use new PartitionSupervisor
- Timeouts and Crashes in the Cluster HOT 2
- Disappearing values from Horde.Registry after spawning more than two nodes. HOT 2
- Why we need to handle {:error, {:already_started, pid}} ? HOT 4
- SayHello GenServer never (re)started on `count3` node?
- uniform_random_distribution.ex not in deps 8.7 HOT 1
- Old child specs remain in Supervisor CRDT after process handoff
- Registry.lookup doesn't always return new item that was just registered HOT 13
- Example of How to Start Children like a Regular Supervisor
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from horde.