Comments (4)
Although the "infinite loop" problem exists, its not always infinite, as its conditional on whether process 1 comes back up, if it does (with same address and port it was originally attempting to connect to), the request that process 2 was attempting to make, will succeed.
Also to expound on the registry problem, it isnt that the registry isn't being updated, its that node2 is trying to call node1 after it dies, before the registry gets updated (and it thinks that the remote node is still there). If you run your examples again with 10 second intervals between, it should work (throw an error that remote node doesent exist).
However, even if "live update via zk watchers" did update the registry in near real time, there could still be issues when client makes a request nearly same time the requested node goes down. The underlying issue isn't the registry being updated, its the lack of failure on the request side. I.e. its just sitting for a potentially infinite amount of time waiting for node1 to come back up to execute the request.
It seems to me that the there needs to be a failure timeout/retry mechanism and the client node needs to fail after x amount of attempts. I'll open a separate issue with proposal.
from dcell.
@jasonayre +1 for the timeout feature. I've (dumb-assedly!) tried to use ruby timeout on top of it:
timeout(5) { cell.do_something_that_takes_time }
only to see it break everything.
I had noticed the pattern of bringing the process back to life with the same address, and we have implemented this for now until we get a better solution (the sysadmins don't like this port attribution, though).
from dcell.
I believe it's addressed in pull request #88
from dcell.
Please reopen if you still have this issue in master.
from dcell.
Related Issues (20)
- Cannot follow the configuration example, please help HOT 3
- 0.16.2 HOT 16
- unexpected zookeeper error when using DCell HOT 4
- Using it in forked / multithreaded env HOT 8
- `require 'dcell'` already throws `DCell::NotConfiguredError` at the end HOT 2
- Clear stale nodes HOT 10
- Make compatible with newest Celluloid version HOT 11
- Please note recommended version of zeromq library in your wiki HOT 5
- Setting the path for logging HOT 1
- Http gem needs to be updated for security reasons HOT 1
- registry: on node exit all nodes are cleared
- Remove redis from mandatory rspec requirements
- dcell node id is not unique
- dcell should not require precise port for incoming connection
- dcell 0.15 dependencies are not correct
- dcell needs a new maintainer HOT 11
- Thoughts about the future of dcell and celluloid-zmq HOT 37
- Implement Celluloid::Sync
- How to use DCell to connect the remote node and use the actor? HOT 4
- Unable to run spec on OSX with various MRI Rubies HOT 10
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 dcell.