Current section

39 Versions

Jump to

Compare versions

3 files changed
+10 additions
-10 deletions
  @@ -60,4 +60,4 @@
60 60 {<<"optional">>,false},
61 61 {<<"repository">>,<<"hexpm">>},
62 62 {<<"requirement">>,<<"~> 3.0">>}]]}.
63 - {<<"version">>,<<"0.12.3">>}.
63 + {<<"version">>,<<"0.12.4">>}.
  @@ -46,7 +46,7 @@ defmodule Conduit.Plug.Retry do
46 46 end
47 47 rescue
48 48 error ->
49 - retry(message, next, retries, error, opts)
49 + retry(message, next, retries, error, System.stacktrace(), opts)
50 50 end
51 51
52 52 defp retry(message, _, retries, :nack, %{attempts: attempts})
  @@ -54,17 +54,17 @@ defmodule Conduit.Plug.Retry do
54 54 nack(message)
55 55 end
56 56
57 - defp retry(_, _, retries, error, %{attempts: attempts})
57 + defp retry(_, _, retries, error, stacktrace, %{attempts: attempts})
58 58 when retries >= attempts - 1 do
59 - reraise error, System.stacktrace()
59 + reraise error, stacktrace
60 60 end
61 61
62 - defp retry(message, next, retries, error, opts) do
62 + defp retry(message, next, retries, error, stacktrace, opts) do
63 63 delay = opts.delay * :math.pow(opts.backoff_factor, retries)
64 64 jitter = :rand.uniform() * delay * opts.jitter
65 65 wait_time = round(delay + jitter)
66 66
67 - log_error(error, wait_time)
67 + log_error(error, stacktrace, wait_time)
68 68
69 69 Process.sleep(wait_time)
70 70
  @@ -74,12 +74,12 @@ defmodule Conduit.Plug.Retry do
74 74 |> attempt(next, retries + 1, opts)
75 75 end
76 76
77 - defp log_error(:nack, wait_time) do
77 + defp log_error(:nack, _, wait_time) do
78 78 Logger.warn("Message will be retried in #{wait_time}ms because it was nacked")
79 79 end
80 80
81 - defp log_error(error, wait_time) do
82 - formatted_error = Exception.format(:error, error)
81 + defp log_error(error, stacktrace, wait_time) do
82 + formatted_error = Exception.format(:error, error, stacktrace)
83 83
84 84 Logger.warn([
85 85 "Message will be retried in #{wait_time}ms because an exception was raised\n",
  @@ -4,7 +4,7 @@ defmodule Conduit.Mixfile do
4 4 def project do
5 5 [
6 6 app: :conduit,
7 - version: "0.12.3",
7 + version: "0.12.4",
8 8 elixir: "~> 1.3",
9 9 build_embedded: Mix.env() == :prod,
10 10 start_permanent: Mix.env() == :prod,