diff options
author | kballou <kballou@devnulllabs.io> | 2014-10-20 16:30:10 -0600 |
---|---|---|
committer | kballou <kballou@devnulllabs.io> | 2014-10-20 16:30:10 -0600 |
commit | 482e23b272bbb5221e09634c16ab0be9edd40592 (patch) | |
tree | d319add510ab527680866ffaeb1569b6572c694c /lib/poolparty/scheduler.ex | |
parent | b50ed8072e6bc9aaa342f30520e979a38cc5370f (diff) | |
download | poolparty-482e23b272bbb5221e09634c16ab0be9edd40592.tar.gz poolparty-482e23b272bbb5221e09634c16ab0be9edd40592.tar.xz |
Add logging to pool party
Add basic debug logging to the pool.
Diffstat (limited to 'lib/poolparty/scheduler.ex')
-rw-r--r-- | lib/poolparty/scheduler.ex | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/poolparty/scheduler.ex b/lib/poolparty/scheduler.ex index e0cce5f..225556a 100644 --- a/lib/poolparty/scheduler.ex +++ b/lib/poolparty/scheduler.ex @@ -1,7 +1,9 @@ defmodule PoolParty.Scheduler do use GenServer + require Logger def start_link(pool_size, opts \\ []) do + Logger.debug("[#{__MODULE__}]: Starting Pool Scheduler") GenServer.start_link( __MODULE__, {pool_size}, @@ -9,6 +11,7 @@ defmodule PoolParty.Scheduler do end def init({pool_size}) do + Logger.debug("[#{__MODULE__}]: Initializing Pool Scheduler") {:ok, %{max_pool_size: pool_size, workers: [], queue: [], @@ -17,21 +20,26 @@ defmodule PoolParty.Scheduler do end def join(worker_pid) do + Logger.debug("[#{__MODULE__}]: Worker joining pool") GenServer.cast(__MODULE__, {:join, worker_pid}) end def ready({:result, result, worker_pid}) do + Logger.debug("[#{__MODULE__}]: Worker jumping into the pool") GenServer.cast(__MODULE__, {:ready, result, worker_pid}) end def process(func, args, from) do + Logger.debug("[#{__MODULE__}]: Casting work request") GenServer.cast(__MODULE__, {:process, func, args, from}) end def handle_cast({:process, func, args, from}, state) do + Logger.debug("[#{__MODULE__}]: Work request received") queue = state.queue ++ [{func, args, from}] case length(state.workers) do 0 -> + Logger.debug("[#{__MODULE__}]: No workers available") {:noreply, %{state| queue: queue}} _ -> {queue, workers, processing} = @@ -45,14 +53,17 @@ defmodule PoolParty.Scheduler do end def handle_cast({:join, pid}, state) do + Logger.debug("[#{__MODULE__}]: Worker joined pool") {:noreply, %{state| workers: [pid | state.workers]}} end def handle_cast({:leave, pid}, state) do + Logger.debug("[#{__MODULE__}]: Worker left pool") {:noreply, %{state| workers: state.workers -- [pid]}} end def handle_cast({:ready, result, pid}, state) do + Logger.debug("[#{__MODULE__}]: Worker making a splash in the pool") {client, processing} = HashDict.pop(state.processing, pid) send(client, {:result, result}) workers = [pid | state.workers] |