Packages
poolex
1.6.3
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.0
1.5.0-rc.0
1.4.2
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.0
1.0.0
1.0.0-rc.0
0.10.0
0.9.0
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.0
0.8.0-rc.1
0.8.0-rc.0
0.7.6
0.7.5
0.7.4
retired
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.1
retired
0.3.0
retired
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
The library for managing pools of workers.
Current section
Files
Jump to
Current section
Files
lib/poolex/private/debug_info.ex
defmodule Poolex.Private.DebugInfo do
@moduledoc """
Information with the current state of the pool.
Can be used for debugging.
"""
defstruct busy_workers_count: 0,
busy_workers_impl: nil,
busy_workers_pids: [],
failed_to_start_workers_count: 0,
idle_overflowed_workers_count: 0,
idle_overflowed_workers_impl: nil,
idle_overflowed_workers_pids: [],
idle_workers_count: 0,
idle_workers_impl: nil,
idle_workers_pids: [],
max_overflow: 0,
max_pool_size: :infinity,
min_pool_size: 0,
overflow: 0,
total_workers_count: 0,
waiting_callers_impl: nil,
waiting_callers: [],
worker_args: [],
worker_module: nil,
worker_shutdown_delay: 0,
worker_start_fun: nil
@type t() :: %__MODULE__{
busy_workers_count: non_neg_integer(),
busy_workers_impl: module(),
busy_workers_pids: list(pid()),
failed_to_start_workers_count: non_neg_integer(),
idle_overflowed_workers_count: non_neg_integer(),
idle_overflowed_workers_impl: module(),
idle_overflowed_workers_pids: list(pid()),
idle_workers_count: non_neg_integer(),
idle_workers_impl: module(),
idle_workers_pids: list(pid()),
max_overflow: non_neg_integer(),
max_pool_size: pos_integer() | :infinity,
min_pool_size: non_neg_integer(),
overflow: non_neg_integer(),
total_workers_count: non_neg_integer(),
waiting_callers_impl: module(),
waiting_callers: list(Poolex.Caller.t()),
worker_args: list(any()),
worker_module: module(),
worker_shutdown_delay: timeout(),
worker_start_fun: atom()
}
@doc """
Returns detailed information about started pool.
Primarily needed to help with debugging. **Avoid using this function in production.**
## Fields
* `busy_workers_count` - how many workers are busy right now.
* `busy_workers_impl` - implementation of busy workers.
* `busy_workers_pids` - list of busy workers.
* `failed_to_start_workers_count` - how many workers failed to start.
* `idle_overflowed_workers_count` - how many idle overflowed workers are there.
* `idle_overflowed_workers_impl` - implementation of idle overflowed workers.
* `idle_overflowed_workers_pids` - list of idle overflowed workers.
* `idle_workers_count` - how many workers are ready to work.
* `idle_workers_impl` - implementation of idle workers.
* `idle_workers_pids` - list of idle workers.
* `max_overflow` - how many workers can be created over the limit.
* `overflow` - current count of workers launched over limit.
* `waiting_caller_pids` - list of callers processes.
* `worker_args` - what parameters are used to start the worker.
* `worker_module` - name of a module that describes a worker.
* `worker_shutdown_delay` - how long to wait before shutting down a worker.
* `worker_start_fun` - what function is used to start the worker.
## Examples
iex> Poolex.start(pool_id: :my_pool_3, worker_module: Agent, worker_args: [fn -> 0 end], workers_count: 5)
iex> debug_info = %Poolex.Private.DebugInfo{} = Poolex.Private.DebugInfo.get_debug_info(:my_pool_3)
iex> debug_info.busy_workers_count
0
iex> debug_info.idle_workers_count
5
"""
@spec get_debug_info(Poolex.pool_id()) :: t()
def get_debug_info(pool_id) do
GenServer.call(pool_id, :get_debug_info)
end
end