Skip to content

Instantly share code, notes, and snippets.

@dreverri
Forked from kellymclaughlin/pb_status_anon.txt
Created November 16, 2012 00:53
Show Gist options
  • Save dreverri/4082895 to your computer and use it in GitHub Desktop.
Save dreverri/4082895 to your computer and use it in GitHub Desktop.
How to get poolboy status for each Riak Vnode
PBStatusFun = fun() ->
VnodePids = [Pid || {_, Pid} <- riak_core_vnode_manager:all_index_pid(riak_kv_vnode)],
Links = [process_info(Pid, [links]) || Pid <- VnodePids],
WorkerPoolPids = [WPPid || [{links,[_, WPPid]}] <- Links],
WorkerPoolLinks = [process_info(Pid, [links]) || Pid <- WorkerPoolPids],
PoolboyPids = [PoolboyPid || [{links,[_, PoolboyPid]}] <- WorkerPoolLinks],
[poolboy:status(Pid) || Pid <- PoolboyPids]
end.
PBStatusFun = fun(Index) ->
{_, VnodePid} = riak_core_vnode_manager:get_vnode_pid(Index, riak_kv_vnode),
Links = process_info(VnodePid, [links]),
[{links,[_, WorkerPoolPid]}] = Links,
WorkerPoolLink = process_info(WorkerPoolPid, [links]),
[{links,[_, PoolboyPid]}] = WorkerPoolLink,
Status = poolboy:status(PoolboyPid),
io:format("Pool Pid: ~p Status: ~p~n", [PoolboyPid, Status])
end.
%% Paste this into console and then run: PBStatusFun().
-module(poolboy_helper).
-export([poolboy_status/0]).
poolboy_status() ->
[{Vnode, vnode_pool_status(VnodePid)} || {Vnode, VnodePid} <- riak_core_vnode_manager:all_index_pid(riak_kv_vnode)].
vnode_pool_status(VnodePid) ->
PoolboyPid = poolboy_pid(VnodePid),
poolboy:status(PoolboyPid).
poolboy_pid(VnodePid) ->
[_, WorkerPoolPid] = process_links(VnodePid),
[_, PoolboyPid] = process_links(WorkerPoolPid),
PoolboyPid.
process_links(Pid) ->
[{links, Links}] = process_info(Pid, [links]),
Links.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment