diff options
author | Jordan Bracco <href@random.sh> | 2020-07-07 16:32:28 +0200 |
---|---|---|
committer | Jordan Bracco <href@random.sh> | 2020-07-07 16:32:28 +0200 |
commit | 55e92f84b4ed531bd487952a71040a9c69dc2807 (patch) | |
tree | 9ad27f48369cc3be25be86e18196b6a1b8622dc4 /lib | |
parent | 0.1.0 (for realz) (diff) |
Fix decrement after max_retries been reached + telemetry events
Diffstat (limited to 'lib')
-rw-r--r-- | lib/concurrent_limiter.ex | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/concurrent_limiter.ex b/lib/concurrent_limiter.ex index a581447..e7b6b55 100644 --- a/lib/concurrent_limiter.ex +++ b/lib/concurrent_limiter.ex @@ -97,9 +97,11 @@ defmodule ConcurrentLimiter do max = max_running + max_waiting counter = inc(ref, name) max_retries = Keyword.get(opts, :max_retries) || max_retries + :telemetry.execute([:concurrent_limiter, :limit], %{counter: counter}, %{limiter: name}) cond do counter <= max_running -> + :telemetry.execute([:concurrent_limiter, :execution], %{counter: counter}, %{limiter: name}) try do fun.() after @@ -107,13 +109,17 @@ defmodule ConcurrentLimiter do end counter > max -> + :telemetry.execute([:concurrent_limiter, :overload], %{counter: counter}, %{limiter: name, scope: "max"}) dec(ref, name) {:error, :overload} retries + 1 > max_retries -> + :telemetry.execute([:concurrent_limiter, :max_retries], %{counter: counter}, %{limiter: name, retries: retries + 1}) + dec(ref, name) {:error, :overload} counter > max_running -> + :telemetry.execute([:concurrent_limiter, :wait], %{counter: counter}, %{limiter: name, retries: retries + 1}) wait(ref, name, fun, wait, opts, retries + 1) end end |