Comments (4)
Oh and also, the source can be found here.
from horde.
Hi, thanks again for the bug report.
This is a tricky situation, because this is not an actual netsplit. In fact, both nodes are still in the cluster, but it may seem temporarily that they are not (if you . So if you send an actual message from one side to the other, you'll notice that it arrives and the cluster recognizes again that it is intact.
If you try send(v(3), :hello)
in the right pane, you'll see that it succeeds.
I am trying to use local_cluster
and schism
to add tests for these scenarios to Horde, so I'll leave this issue open until then.
from horde.
I've added an initial test to ensure that the supervisor performs as expected during and after a netsplit. See #93.
from horde.
Hi!
This is indeed a proper netsplit. The way I simulate it is by changing the cookie for one of the nodes and then using Node.disconnect
; see https://github.com/frekw/horde-test/blob/master/lib/hord_test.ex#L26-L31.
This is usually how I simulate netsplits when writing tests using local_cluster
as well!
However, I tried this exact test with #92 and then everything seems to be working as expected! 👍
When testing with #92 I did find another bug more closely related to what you describe, which is that if you change the cluster memberships for connected nodes it will fail to remove/restart processes running on nodes in the previous configuration (but not the new one). Not sure what the proper behaviour under those circumstances should be, but I think they should be treated the same way as a netsplit. Do you want me to file a different bug for that?
And lastly, thanks for all your hard work. This is a great library which fills a big gap in the Erlang/Elixir distribution story!
from horde.
Related Issues (20)
- 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
- [BUG]: Horde Supervisor behaves one_for_all no matter what HOT 8
- Include horde_process in the main repo HOT 12
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.