diff options
author | Luke Bakken <luke@bakken.io> | 2019-04-26 15:24:11 -0700 |
---|---|---|
committer | Luke Bakken <lbakken@pivotal.io> | 2019-05-01 13:16:41 -0700 |
commit | 817ff5a73e0b42871cbd7503e346dfe26dc4f31a (patch) | |
tree | b9a93113df5cb94602558eb1013875aa45aaa480 | |
parent | 7688302a3485d54d7691bc8b29f6e7a0fe3e45a4 (diff) | |
download | rabbitmq-server-git-817ff5a73e0b42871cbd7503e346dfe26dc4f31a.tar.gz |
Add leader node to status, add mnevis TODOs
-rw-r--r-- | src/rabbit_mnesia.erl | 39 |
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)}}). |