| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
| |
also, `get_key', not `get_env'.
|
| | |
|
| |
|
|
| |
Now checking for matching OTP & rabbit version
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
+ some other fixes based on the fact that now we firmly assume that the
cluster status is as up to date as it can be.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
also, remove `cluster'.
Description for the commands:
* recluster <clusternode>
Instruct an offline node to try to cluster with the nodes provided when
it comes back online. With "cluster" I mean cluster directly, only if the
other nodes think the node is in the cluster already.
This command is useful if we bring a node down and then change the cluster
while it is offline.
* change_node_type (ram|disc)
Changed the node to the provided node type. The change will fail if the
user is trying to create a standalone ram node.
* join_cluster clusternode
Same as before, but only takes one node as "discovery" node. We think
this is better since we don't really make any attempt to verify that
all the provided nodes are in the same cluster anyways.
|
| | |
|
| |\ |
|
| | | |
|
| | |
| |
| |
| |
| | |
...and reduce wait time for migrations we expect to fail, so we keep
the overall run time short.
|
| | |\ |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
and use that API throughout the code where appropriate
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | |\ \
| | |/ |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Now the `cluster_nodes.config; doesn't store a "config" anymore, but all
the information we need about the cluster nodes. This file is updated
whenever a new node comes up. Moreover, this file should be *always*
present, and it's set up in `rabbit:prepare/0'.
Now that we have this file, the various functions regarding the status
of the cluster (`all_clustered_nodes/0', `running_clustered_nodes/0;, etc.)
can "work" even when mnesia is down (and when the rode is a ram node).
Given the assumption that the status file is up to date, with the status
of the cluster (before the node went down if the node is down) a lot of
operations become easier.
I'd like a review at this point, the best thing is probably to diff directly
with default since a lot of previous commits are not relevant anymore.
The most noticeable changes compared to default:
* `join_cluster' works differently. The nodes provided will be used to
"discover" the cluster, and are not used to determine whether the node
should be ram or not. The node will be a disc node by default, and
can be initialized as RAM with the `--ram' flag. The old `cluster'
command is preserved, adapted to work with the new functions while
preserving similar semantics (we decide on whether the node is disc or
not by looking at the list of nodes provided).
* `force_cluster' has been removed.
* The `join_cluster' operation will fail if:
- The node is currently the only disc node of its cluster
- We can't connect to any of the nodes provided
- The node is currently already clustered with the cluster of the nodes
provided
* On default restart RAM nodes try to connect to the nodes that were first
given by the user, and are not aware of the changes that might have
occurred in the cluster when they were online. Since the cluster status
is kept updated on disk now, the RAM node will be aware of changes in the
cluster when restarted.
* Before starting up mnesia, the node contacts the nodes it thinks it's
clustered with, and if the nodes are not clustered with the node anymore
the startup procedure fail. We fail only when we know for sure that
something is wrong - e.g. it won't fail it it doesn't find any online
node
Things to do:
* Implement `uncluster'/`leave_cluster' to kick out a node from a cluster
from another node - this is easy.
* Implement something like `change_node_type', since given how `join_cluster'
works it is not possible right now.
* Rewrite the tests regarding to clustering.
* Think hard about what can go wrong regarding the cluster status file and
the relevant functions. The stuff in `rabbit_upgrade' is particularly
worrying, and I need to make sure that things will work when upgrading
rabbitmq, by reading old file or upgrading them.
* Split `init_db/4' in various functions. We have much stronger assumptions
now, for example we should never need to reset or wipe the schema in
there. In general it's an ugly function, expecially the optional upgrade
part
* Probably something else...
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
See comment above `check_mnesia_running/1' in `rabbit_mnesia'. In short,
the function to find out about all/running nodes in the cluster do not
work if mnesia is down and the node is a ram node, while we assumed
that they would always work. Moreover, the functions to get the cluster
disc nodes require mnesia to be up.
|
| | | |
| | |
| | |
| | | |
Also, I check that we're not joining a cluster we're already in.
|
| | | |
| | |
| | |
| | | |
config
|
| | | | |
|
| |\ \ \ |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
I'll also have to remove the `Force' parameter from `init_db', fixing
bug 24815.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since dump_tables won't work with the schema table (and works different to what
I had understood anyways) I don't think it's worth it to subscribe to the
table, and it's probably better to just modify the config file through
rabbit_node_monitor.
|
| | | | | |
|
| | |\ \ \
| | |_|/
| |/| | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | |/ /
| | |
| | |
| | | |
'DOWN' notification
|
| | | | |
|
| | |\ \ |
|
| | | | | |
|
| | | | | |
|
| | | |\ \ |
|
| | | | |\ \
| | | | |/
| | | |/| |
|