erlangpl
erlangpl copied to clipboard
Make erlangpl more fault tolerant
Right now we're connecting to existing node on startup as cli arguments. Is there possibility to move this process as a WebSocket response? It would be nice to start erlangpl
as normal, go to browser and then select node. We can move current startup to special flag for example.
This idea comes from experiments with monitoring my poorly written Elixir app. When app crashes, or we cannot connect to node because of some errors, etc. we have to restart erlangpl
which comes with lost of our collected data (charts for example, or maybe some views in future), so keeping application alive all the time, and trying to reconnect would be better idea. Right now whole process is not enough fault tolerant 😉
Is there possibility to look for existing nodes on the same machine (127.0.0.1
), we could show list of possible nodes we would like to connect. We could as well create list of recent connected node, add them to favourite. It would make whole usage experience more easier and smoother.
I'd love to send PR with some help from you because I have no idea about Erlang and just a little about OTP. So if you could point me in the right direction, it would be much easier.
/ cc @michalslaski @arkgil
I haven't looked at the node connection code in depth, but I suppose that it would be possible. I think we could even list local nodes by querying epmd
(although Michał would have to confirm that).
Anyway, I think that idea is awesome! Would it be possible to create list of favourites and persist it through multiple sessions (e.g. I open erlangpl one day, and the node is still in favourites on other day)?
I'd really like to tackle this, but I'm not sure what are priorities for now, plus I'm still struggling with JS and graphs 😄
So maybe we could try to manage time as best as we can? I'll focus on JS part and you'll focus on Erlang part. With both startup experience and epl-sup-tree
. I only need WebSockets API exposed for every new feature and I'll take care of all JS.
For persistence we have localStorage
which is persistent as long as you keep your browser data I think, but it's perfect solution for that.
EDIT: Only limited to one browser but better this than nothing.
I've only been playing with EPL for a couple of days, but this is definitely a key feature. I restarted my Elixir app and EPL would not refresh. After I refreshed EPL manually, the app just crashed :( In theory, the user should be notified when the observed node goes down.
UI is separated so we can watch for WebSocket connection loss and show warning. I have a plan to create notifications system like Atom Editor has, but currently I have no time to work on this. Also if I could find some time I want to finish sup-tree rework introducing better layout, process labels and faster loading time. But thank you a lot for feedback. I'll try to come up with something, when I'll have some time!