summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Bakken <luke@bakken.io>2019-04-26 15:24:11 -0700
committerLuke Bakken <lbakken@pivotal.io>2019-05-01 13:16:41 -0700
commit817ff5a73e0b42871cbd7503e346dfe26dc4f31a (patch)
treeb9a93113df5cb94602558eb1013875aa45aaa480
parent7688302a3485d54d7691bc8b29f6e7a0fe3e45a4 (diff)
downloadrabbitmq-server-git-817ff5a73e0b42871cbd7503e346dfe26dc4f31a.tar.gz
Add leader node to status, add mnevis TODOs
-rw-r--r--src/rabbit_mnesia.erl39
1 files changed, 29 insertions, 10 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 7a079abf1c..2b666841e1 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -444,18 +444,23 @@ status() ->
[{nodes, (IfNonEmpty(disc, cluster_nodes(disc)) ++
IfNonEmpty(ram, cluster_nodes(ram)))}] ++
case is_running() of
- true -> RunningNodes = cluster_nodes(running),
- [{running_nodes, RunningNodes},
- {cluster_name, rabbit_nodes:cluster_name()},
- {partitions, mnesia_partitions(RunningNodes)}];
- false -> []
+ true ->
+ RunningNodes = cluster_nodes(running),
+ [{running_nodes, RunningNodes},
+ {cluster_name, rabbit_nodes:cluster_name()},
+ {partitions, mnesia_partitions(RunningNodes)},
+ {leader, get_leader()}];
+ false ->
+ []
end.
mnesia_partitions(Nodes) ->
Replies = rabbit_node_monitor:partitions(Nodes),
[Reply || Reply = {_, R} <- Replies, R =/= []].
-is_running() -> mnesia:system_info(is_running) =:= yes.
+is_running() ->
+ % TODO mnevis
+ mnesia:system_info(is_running) =:= yes.
-spec is_clustered() -> boolean().
@@ -501,6 +506,7 @@ cluster_status_from_mnesia() ->
false ->
{error, mnesia_not_running};
true ->
+ % TODO mnevis
%% If the tables are not present, it means that
%% `init_db/3' hasn't been run yet. In other words, either
%% we are a virgin node or a restarted RAM node. In both
@@ -842,15 +848,16 @@ schema_ok_or_move() ->
%% We only care about disc nodes since ram nodes are supposed to catch
%% up only
create_schema() ->
+ % TODO mnevis
% io:format("Create schema ~n"),
% stop_mnesia(),
% rabbit_misc:ensure_ok(mnesia:create_schema([node()]), cannot_create_schema),
% start_mnesia(),
- case ra:members(mnevis_node:node_id()) of
- {ok, _, {_, Node}} when Node == node() ->
- io:format("Create tables ~n"),
+ case is_leader(node()) of
+ true ->
+ io:format("Create tables ~n"),
ok = rabbit_table:create();
- _ ->
+ false ->
wait_for_tables()
end,
io:format("Check integrity ~n"),
@@ -1071,6 +1078,18 @@ me_in_nodes(Nodes) -> lists:member(node(), Nodes).
nodes_excl_me(Nodes) -> Nodes -- [node()].
+is_leader(Node) ->
+ case ra:members(mnevis_node:node_id()) of
+ {ok, _, {_, Node}} ->
+ true;
+ _ ->
+ false
+ end.
+
+get_leader() ->
+ {ok, _, {_, Node}} = ra:members(mnevis_node:node_id()),
+ Node.
+
-spec e(any()) -> no_return().
e(Tag) -> throw({error, {Tag, error_description(Tag)}}).