@@ -89,7 +89,7 @@ defmodule Sentry.Client do
8989 { endpoint , auth_headers } ->
9090 { :ok ,
9191 Task.Supervisor . async_nolink ( Sentry.TaskSupervisor , fn ->
92- try_request ( :post , endpoint , auth_headers , body )
92+ try_request ( endpoint , auth_headers , { event , body } )
9393 |> maybe_call_after_send_event ( event )
9494 end ) }
9595
@@ -101,7 +101,7 @@ defmodule Sentry.Client do
101101 defp do_send_event ( event , body , :sync ) do
102102 case get_headers_and_endpoint ( ) do
103103 { endpoint , auth_headers } ->
104- try_request ( :post , endpoint , auth_headers , body )
104+ try_request ( endpoint , auth_headers , { event , body } )
105105 |> maybe_call_after_send_event ( event )
106106
107107 _ ->
@@ -113,7 +113,7 @@ defmodule Sentry.Client do
113113 case get_headers_and_endpoint ( ) do
114114 { endpoint , auth_headers } ->
115115 Task.Supervisor . start_child ( Sentry.TaskSupervisor , fn ->
116- try_request ( :post , endpoint , auth_headers , body )
116+ try_request ( endpoint , auth_headers , { event , body } )
117117 |> maybe_call_after_send_event ( event )
118118 end )
119119
@@ -124,20 +124,27 @@ defmodule Sentry.Client do
124124 end
125125 end
126126
127- defp try_request ( method , url , headers , body , current_attempt \\ 1 )
127+ defp try_request ( url , headers , event_body_tuple , current_attempt \\ 1 )
128128
129- defp try_request ( _ , _ , _ , _ , current_attempt )
129+ defp try_request ( _ , _ , _ , current_attempt )
130130 when current_attempt > @ max_attempts ,
131131 do: :error
132132
133- defp try_request ( method , url , headers , body , current_attempt ) do
134- case request ( method , url , headers , body ) do
133+ defp try_request ( url , headers , { event , body } , current_attempt ) do
134+ case request ( url , headers , body ) do
135135 { :ok , id } ->
136136 { :ok , id }
137137
138- :error ->
139- sleep ( current_attempt )
140- try_request ( method , url , headers , body , current_attempt + 1 )
138+ { :error , error } ->
139+ if ( current_attempt == 1 ) do
140+ log_api_error ( "Event ID: #{ event . event_id } - #{ inspect ( error ) } - #{ body } " )
141+ else
142+ log_api_error ( "Event ID: #{ event . event_id } - #{ inspect ( error ) } " )
143+ end
144+
145+ if current_attempt < @ max_attempts , do: sleep ( current_attempt )
146+
147+ try_request ( url , headers , { event , body } , current_attempt + 1 )
141148 end
142149 end
143150
@@ -146,27 +153,26 @@ defmodule Sentry.Client do
146153
147154 Hackney options can be set via the `hackney_opts` configuration option.
148155 """
149- @ spec request ( atom ( ) , String . t ( ) , list ( { String . t ( ) , String . t ( ) } ) , String . t ( ) ) ::
156+ @ spec request ( String . t ( ) , list ( { String . t ( ) , String . t ( ) } ) , String . t ( ) ) ::
150157 { :ok , String . t ( ) } | :error
151- def request ( method , url , headers , body ) do
158+ def request ( url , headers , body ) do
152159 hackney_opts =
153160 Config . hackney_opts ( )
154161 |> Keyword . put_new ( :pool , @ hackney_pool_name )
155162
156- with { :ok , 200 , _ , client } <- :hackney . request ( method , url , headers , body , hackney_opts ) ,
163+ with { :ok , 200 , _ , client } <- :hackney . request ( :post , url , headers , body , hackney_opts ) ,
157164 { :ok , body } <- :hackney . body ( client ) ,
158165 { :ok , json } <- Poison . decode ( body ) do
159166 { :ok , Map . get ( json , "id" ) }
160167 else
161168 { :ok , status , headers , client } ->
162169 :hackney . skip_body ( client )
163170 error_header = :proplists . get_value ( "X-Sentry-Error" , headers , "" )
164- log_api_error ( " #{ body } \n Received #{ status } from Sentry server: #{ error_header } ")
165- :error
171+ error = "Received #{ status } from Sentry server: #{ error_header } "
172+ { :error , error }
166173
167174 e ->
168- log_api_error ( "#{ inspect ( e ) } \n #{ body } " )
169- :error
175+ { :error , e }
170176 end
171177 end
172178
@@ -329,13 +335,10 @@ defmodule Sentry.Client do
329335 end )
330336 end
331337
332- defp sleep ( attempt_number ) do
333- # sleep 2^n seconds
334- :math . pow ( 2 , attempt_number )
335- |> Kernel . * ( 1000 )
336- |> Kernel . round ( )
337- |> :timer . sleep ( )
338- end
338+ defp sleep ( 1 ) , do: :timer . sleep ( 2000 )
339+ defp sleep ( 2 ) , do: :timer . sleep ( 4000 )
340+ defp sleep ( 3 ) , do: :timer . sleep ( 8000 )
341+ defp sleep ( _ ) , do: :timer . sleep ( 8000 )
339342
340343 defp sample_event? ( 1 ) , do: true
341344 defp sample_event? ( 1.0 ) , do: true
0 commit comments