summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHubert Plociniczak <hubert@lshift.net>2008-08-27 12:51:47 +0100
committerHubert Plociniczak <hubert@lshift.net>2008-08-27 12:51:47 +0100
commit1dad9e3275aabcb10d7de4eb82d44d1b13c6983d (patch)
tree37d3f3544ed9ec4504f129ec7ae3b0a9fc4bcdae
parent47ff9bab0753cd0f601cbe9bd18a2017fcdbf8c3 (diff)
downloadrabbitmq-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.logrotate7
-rw-r--r--packaging/debs/Debian/debian/rabbitmq-server.logrotate7
-rw-r--r--src/rabbit_multi.erl38
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});