diff options
author | Hubert Plociniczak <hubert@lshift.net> | 2008-08-27 12:51:47 +0100 |
---|---|---|
committer | Hubert Plociniczak <hubert@lshift.net> | 2008-08-27 12:51:47 +0100 |
commit | 1dad9e3275aabcb10d7de4eb82d44d1b13c6983d (patch) | |
tree | 37d3f3544ed9ec4504f129ec7ae3b0a9fc4bcdae | |
parent | 47ff9bab0753cd0f601cbe9bd18a2017fcdbf8c3 (diff) | |
download | rabbitmq-server-1dad9e3275aabcb10d7de4eb82d44d1b13c6983d.tar.gz |
Added rotate_logs_all command to rabbitmq_multi.
logrotate uses this command to correctly swap
handlers on all nodes.
-rw-r--r-- | packaging/RPMS/Fedora/rabbitmq-server.logrotate | 7 | ||||
-rw-r--r-- | packaging/debs/Debian/debian/rabbitmq-server.logrotate | 7 | ||||
-rw-r--r-- | src/rabbit_multi.erl | 38 |
3 files changed, 37 insertions, 15 deletions
diff --git a/packaging/RPMS/Fedora/rabbitmq-server.logrotate b/packaging/RPMS/Fedora/rabbitmq-server.logrotate index e366f36a..8b5811d8 100644 --- a/packaging/RPMS/Fedora/rabbitmq-server.logrotate +++ b/packaging/RPMS/Fedora/rabbitmq-server.logrotate @@ -1,13 +1,12 @@ -/var/log/rabbitmq/*.log /var/log/rabbitmq/*.err { +/var/log/rabbitmq/*.log { weekly missingok - rotate 10 + rotate 20 compress delaycompress notifempty - create 644 rabbitmq rabbitmq sharedscripts postrotate - /usr/sbin/rabbitmqctl reopen_logs + /usr/sbin/rabbitmq-multi rotate_logs_all > /dev/null 2>&1 endscript }
\ No newline at end of file diff --git a/packaging/debs/Debian/debian/rabbitmq-server.logrotate b/packaging/debs/Debian/debian/rabbitmq-server.logrotate index e366f36a..8b5811d8 100644 --- a/packaging/debs/Debian/debian/rabbitmq-server.logrotate +++ b/packaging/debs/Debian/debian/rabbitmq-server.logrotate @@ -1,13 +1,12 @@ -/var/log/rabbitmq/*.log /var/log/rabbitmq/*.err { +/var/log/rabbitmq/*.log { weekly missingok - rotate 10 + rotate 20 compress delaycompress notifempty - create 644 rabbitmq rabbitmq sharedscripts postrotate - /usr/sbin/rabbitmqctl reopen_logs + /usr/sbin/rabbitmq-multi rotate_logs_all > /dev/null 2>&1 endscript }
\ No newline at end of file diff --git a/src/rabbit_multi.erl b/src/rabbit_multi.erl index cd92f1ac..29f12ff7 100644 --- a/src/rabbit_multi.erl +++ b/src/rabbit_multi.erl @@ -69,8 +69,9 @@ usage() -> Available commands: - start_all <NodeCount> - start a local cluster of RabbitMQ nodes. - stop_all - stops all local RabbitMQ nodes. + start_all <NodeCount> - start a local cluster of RabbitMQ nodes. + stop_all - stops all local RabbitMQ nodes. + rotate_logs_all [Suffix] - rotate logs for all local RabbitMQ nodes. "), halt(3). @@ -89,11 +90,19 @@ action(start_all, [NodeCount], RpcTimeout) -> action(stop_all, [], RpcTimeout) -> io:format("Stopping all nodes...~n", []), - case read_pids_file() of - [] -> throw(no_nodes_running); - NodePids -> stop_nodes(NodePids, RpcTimeout), - delete_pids_file() - end. + call_all_nodes(fun(NodePids) -> + stop_nodes(NodePids, RpcTimeout), + delete_pids_file() end); + +action(rotate_logs_all, [], RpcTimeout) -> + action(rotate_logs_all, [""], RpcTimeout); + +action(rotate_logs_all, [Suffix], RpcTimeout) -> + io:format("Rotating logs for all nodes...~n", []), + call_all_nodes(fun(NodePids) -> + rotate_logs(NodePids, + list_to_binary(Suffix), + RpcTimeout) end). %% PNodePid is the list of PIDs %% Running is a boolean exhibiting success at some moment @@ -272,6 +281,21 @@ is_dead(Pid) -> end end}]). +rotate_logs([], _, _) -> ok; +rotate_logs([{Node, _} | Rest], BinarySuffix, RpcTimeout) -> + io:format("Rotating logs for node ~p~n", [Node]), + case rpc:call(Node, rabbit, rotate_logs, [BinarySuffix], RpcTimeout) of + {badrpc, _} -> io:format("timeout"), + throw(rotate_logs_failed); + ok -> rotate_logs(Rest, BinarySuffix, RpcTimeout) + end. + +call_all_nodes(Func) -> + case read_pids_file() of + [] -> throw(no_nodes_running); + NodePids -> Func(NodePids) + end. + getenv(Var) -> case os:getenv(Var) of false -> throw({missing_env_var, Var}); |