Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make ered an application with its own supervision tree #41

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

zuiderkwast
Copy link
Collaborator

This PR contains some separate commits. It might be better to review them one by one.

  • Merge ered and ered_cluster processes

    The command handling code is moved from ered to ered_cluster. The ered
    module becomes just an API module without a process of its own. This
    eliminates some duplicated structures and copying between processes.

    Change ered_client_sup into to simple_one_for_one supervisor.

  • App and supervision tree

    Ered becomes an application with its own supervision tree.

    In the API, connect_cluster/2 replaces start_link/2 and close/1 replaces
    stop/1. The processes are added to ered's own supervision tree. An ered
    instance monitors the caller and closes down if the owner dies, much like
    the controlling process concept in gen_tcp and ssl.

  • Add info message 'cluster_stopped' sent in ered_cluster:terminate/1

    The process traps exits so terminate/1 will run even if the process
    crashes.

  • Unify info messages from ered_client and ered_cluster

    Make the messages sent by a standalone ered_client match those sent
    by a cluster client for each client, i.e. a map with the keys
    msg_type, reason, client_id, addr and the optional fields
    cluster_id and master.

The command handling code is moved from ered to ered_cluster. The ered
module becomes just an API module without a process of its own. This
eliminates some duplicated structures and copying between processes.

Change ered_client_sup into to simple_one_for_one supervisor.

No API changes.
Ered becomes an application with its own supervision tree.

In the API, connect_cluster/2 replaces start_link/2 and close/1 replaces
stop/1. The processes are added to ered's own supervision tree. An ered
instance monitors the caller and closes down if the owner dies, much like
the controlling process concept in gen_tcp and ssl.
The process traps exits so terminate/1 will run even if the process
crashes.
Make the messages sent by a standalone ered_client match those sent
by a cluster client for each client, i.e. a map with the keys
msg_type, reason, client_id, addr and the optional fields
cluster_id and master.
test/ered_SUITE.erl Outdated Show resolved Hide resolved
test/ered_SUITE.erl Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
Signed-off-by: Viktor Söderqvist <viktor.soderqvist@est.tech>
README.md Outdated Show resolved Hide resolved
Signed-off-by: Viktor Söderqvist <viktor.soderqvist@est.tech>

Co-authored-by: Björn Svensson <bjorn.a.svensson@est.tech>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants