|
|
@@ -87,7 +87,10 @@ do(Args) ->
|
|
|
%% a "pong"
|
|
|
io:format("pong\n");
|
|
|
["stop"] ->
|
|
|
- case rpc:call(TargetNode, emqx_machine, graceful_shutdown, [], ?SHUTDOWN_TIMEOUT_MS) of
|
|
|
+ Pid = start_shutdown_status(),
|
|
|
+ Res = rpc:call(TargetNode, emqx_machine, graceful_shutdown, [], ?SHUTDOWN_TIMEOUT_MS),
|
|
|
+ true = stop_shutdown_status(Pid),
|
|
|
+ case Res of
|
|
|
ok ->
|
|
|
ok;
|
|
|
{badrpc, timeout} ->
|
|
|
@@ -152,6 +155,18 @@ do(Args) ->
|
|
|
end,
|
|
|
net_kernel:stop().
|
|
|
|
|
|
+start_shutdown_status() ->
|
|
|
+ spawn_link(fun shutdown_status_loop/0).
|
|
|
+
|
|
|
+stop_shutdown_status(Pid) ->
|
|
|
+ true = unlink(Pid),
|
|
|
+ true = exit(Pid, stop).
|
|
|
+
|
|
|
+shutdown_status_loop() ->
|
|
|
+ timer:sleep(10_000),
|
|
|
+ io:format("EMQX is shutting down, please wait...\n", []),
|
|
|
+ shutdown_status_loop().
|
|
|
+
|
|
|
parse_eval_args(Args) ->
|
|
|
% shells may process args into more than one, and end up stripping
|
|
|
% spaces, so this converts all of that to a single string to parse
|