diff options
| -rwxr-xr-x | scripts/rabbitmq-server | 2 | ||||
| -rw-r--r-- | src/rabbit_control.erl | 15 | ||||
| -rw-r--r-- | src/rabbit_reader.erl | 11 |
3 files changed, 19 insertions, 9 deletions
diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server index 74f4d8d233..c953a75312 100755 --- a/scripts/rabbitmq-server +++ b/scripts/rabbitmq-server @@ -37,7 +37,7 @@ CLUSTER_CONFIG_FILE=/etc/default/rabbitmq_cluster.config [ "x" = "x$LOG_BASE" ] && LOG_BASE=/var/log/rabbitmq [ "x" = "x$MNESIA_BASE" ] && MNESIA_BASE=/var/lib/rabbitmq/mnesia [ "x" = "x$MNESIA_DIR" ] && MNESIA_DIR=${MNESIA_BASE}/${NODENAME} -[ "x" = "x$NODE_ONLY" ] && START_RABBIT='-s rabbit' +[ "x" = "x$NODE_ONLY" ] && START_RABBIT='-noinput -s rabbit' ## Log rotation LOGS="${LOG_BASE}/${NODENAME}.log" diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl index a3f582d7f6..d4906d8f1e 100644 --- a/src/rabbit_control.erl +++ b/src/rabbit_control.erl @@ -113,8 +113,9 @@ virtual host, exchange name, routing key, queue name and arguments, in that order. <ConnectioInfoItem> must be a member of the list [pid, address, port, -peer_address, peer_port, state, channels, user, vhost, timeout, frame_max]. -The default is to display user, peer_address and peer_port. +peer_address, peer_port, state, channels, user, vhost, timeout, frame_max, +recv_oct, recv_cnt, send_oct, send_cnt, send_pend]. The default is to display +user, peer_address and peer_port. "), halt(1). @@ -218,8 +219,8 @@ action(list_bindings, Node, []) -> fun({#resource{name = ExchangeName, virtual_host = VirtualHost}, #resource{name = QueueName, virtual_host = VirtualHost}, RoutingKey, Arguments}) -> - io:format("~s ~s ~s ~s ~w~n", - [VirtualHost, ExchangeName, RoutingKey, QueueName, Arguments]) + io:format("~s@~s ~s ~s@~s ~w~n", + [ExchangeName, VirtualHost, RoutingKey, QueueName, VirtualHost, Arguments]) end, rpc_call(Node, rabbit_exchange, list_bindings, [])), ok; @@ -244,10 +245,8 @@ display_info_list(Results, InfoItemArgs) when is_list(Results) -> case Info of {_, #resource{virtual_host = VHostPath, name = Name}} -> io:format("~s@~s ", [Name, VHostPath]); - {address, {A,B,C,D}} when is_integer(A), is_integer(B), is_integer(C), is_integer(D) -> - io:format("~w.~w.~w.~w ", [A, B, C, D]); - {peer_address, {A,B,C,D}} when is_integer(A), is_integer(B), is_integer(C), is_integer(D) -> - io:format("~w.~w.~w.~w ", [A, B, C, D]); + {Key, IpAddress} when Key =:= address; Key =:= peer_address andalso is_tuple(IpAddress) -> + io:format("~s ", [inet_parse:ntoa(IpAddress)]); _ when is_binary(Data) -> io:format("~s ", [Data]); _ -> diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index cbadaff2c6..da8651da8f 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -52,6 +52,7 @@ -define(INFO_KEYS, [pid, address, port, peer_address, peer_port, + recv_oct, recv_cnt, send_oct, send_cnt, send_pend, state, channels, user, vhost, timeout, frame_max]). %% connection lifecycle @@ -663,6 +664,16 @@ i(peer_address, #v1{sock = Sock}) -> i(peer_port, #v1{sock = Sock}) -> {ok, {_, P}} = inet:peername(Sock), P; +i(SockStat, #v1{sock = Sock}) when SockStat =:= recv_oct; + SockStat =:= recv_cnt; + SockStat =:= send_oct; + SockStat =:= send_cnt; + SockStat =:= send_pend -> + case inet:getstat(Sock, [SockStat]) of + {ok, [{SockStat, StatVal}]} -> StatVal; + {error, einval} -> undefined; + {error, Error} -> throw({cannot_get_socket_stats, Error}) + end; i(state, #v1{connection_state = S}) -> S; i(channels, #v1{}) -> |
