瀏覽代碼

Fix issue#814 - Cannot remove a 'DOWN' node from the cluster

Feng Lee 9 年之前
父節點
當前提交
ed730f6827
共有 3 個文件被更改,包括 7 次插入5 次删除
  1. 1 1
      rebar.config
  2. 4 2
      src/emqttd_cluster.erl
  3. 2 2
      src/emqttd_mnesia.erl

+ 1 - 1
rebar.config

@@ -1,4 +1,4 @@
 {deps, [
-{gproc,".*",{git,"https://github.com/uwiger/gproc",""}},{lager,".*",{git,"https://github.com/basho/lager","master"}},{gen_logger,".*",{git,"https://github.com/emqtt/gen_logger",""}},{esockd,".*",{git,"https://github.com/emqtt/esockd","emq20"}},{mochiweb,".*",{git,"https://github.com/emqtt/mochiweb",""}}
+{gproc,".*",{git,"https://github.com/uwiger/gproc",""}},{lager,".*",{git,"https://github.com/basho/lager","master"}},{gen_logger,".*",{git,"https://github.com/emqtt/gen_logger",""}},{esockd,".*",{git,"https://github.com/emqtt/esockd","master"}},{mochiweb,".*",{git,"https://github.com/emqtt/mochiweb",""}}
 ]}.
 {erl_opts, [{parse_transform,lager_transform}]}.

+ 4 - 2
src/emqttd_cluster.erl

@@ -77,8 +77,10 @@ remove(Node) ->
                 ok    -> rpc:call(Node, ?MODULE, reboot, []);
                 Error -> Error
             end;
-        Error ->
-            {error, Error}
+        {badrpc, nodedown} ->
+            emqttd_mnesia:remove_from_cluster(Node);
+        {badrpc, Reason} ->
+            {error, Reason}
     end.
 
 %% @doc Cluster status

+ 2 - 2
src/emqttd_mnesia.erl

@@ -187,8 +187,8 @@ remove_from_cluster(Node) when Node =/= node() ->
             ensure_ok(del_schema_copy(Node)),
             ensure_ok(rpc:call(Node, ?MODULE, delete_schema, []));
         {true, false} ->
-            ensure_ok(del_schema_copy(Node)),
-            ensure_ok(rpc:call(Node, ?MODULE, delete_schema, []));
+            ensure_ok(del_schema_copy(Node));
+            %ensure_ok(rpc:call(Node, ?MODULE, delete_schema, []));
         {false, _} ->
             {error, node_not_in_cluster}
     end.