@@ -78,7 +78,7 @@ macro_rules! implement_http_transport {
78
78
shutdown_signal: Arc <Condvar >,
79
79
shutdown_immediately: Arc <AtomicBool >,
80
80
queue_size: Arc <Mutex <usize >>,
81
- _handle : Option <JoinHandle <( ) >>,
81
+ handle : Option <JoinHandle <( ) >>,
82
82
}
83
83
84
84
impl $typename {
@@ -104,7 +104,7 @@ macro_rules! implement_http_transport {
104
104
#[ allow( clippy:: mutex_atomic) ]
105
105
let queue_size = Arc :: new( Mutex :: new( 0 ) ) ;
106
106
let http_client = http_client( options, $hc_client) ;
107
- let _handle = Some ( spawn(
107
+ let handle = Some ( spawn(
108
108
options,
109
109
receiver,
110
110
shutdown_signal. clone( ) ,
@@ -117,7 +117,7 @@ macro_rules! implement_http_transport {
117
117
shutdown_signal,
118
118
shutdown_immediately,
119
119
queue_size,
120
- _handle ,
120
+ handle ,
121
121
}
122
122
}
123
123
}
@@ -135,14 +135,18 @@ macro_rules! implement_http_transport {
135
135
136
136
fn shutdown( & self , timeout: Duration ) -> bool {
137
137
sentry_debug!( "shutting down http transport" ) ;
138
- let guard = self . queue_size. lock( ) . unwrap( ) ;
139
- if * guard == 0 {
138
+ if * self . queue_size. lock( ) . unwrap( ) == 0 {
140
139
true
141
140
} else {
142
141
if let Ok ( sender) = self . sender. lock( ) {
143
142
sender. send( None ) . ok( ) ;
144
143
}
145
- self . shutdown_signal. wait_timeout( guard, timeout) . is_ok( )
144
+ let guard = self . queue_size. lock( ) . unwrap( ) ;
145
+ if * guard > 0 {
146
+ self . shutdown_signal. wait_timeout( guard, timeout) . is_ok( )
147
+ } else {
148
+ true
149
+ }
146
150
}
147
151
}
148
152
}
@@ -152,7 +156,11 @@ macro_rules! implement_http_transport {
152
156
sentry_debug!( "dropping http transport" ) ;
153
157
self . shutdown_immediately. store( true , Ordering :: SeqCst ) ;
154
158
if let Ok ( sender) = self . sender. lock( ) {
155
- sender. send( None ) . ok( ) ;
159
+ if sender. send( None ) . is_ok( ) {
160
+ if let Some ( handle) = self . handle. take( ) {
161
+ handle. join( ) . ok( ) ;
162
+ }
163
+ }
156
164
}
157
165
}
158
166
}
@@ -225,6 +233,7 @@ implement_http_transport! {
225
233
let mut body = Vec :: new( ) ;
226
234
envelope. to_writer( & mut body) . unwrap( ) ;
227
235
236
+ sentry_debug!( "Sending envelope" ) ;
228
237
match http_client
229
238
. post( url. as_str( ) )
230
239
. body( body)
@@ -242,9 +251,13 @@ implement_http_transport! {
242
251
disabled = Some ( retry_after) ;
243
252
}
244
253
}
254
+ match resp. text( ) {
255
+ Err ( err) => { sentry_debug!( "Failed to read sentry response: {}" , err) ; } ,
256
+ Ok ( text) => { sentry_debug!( "Get response: `{}`" , text) ; } ,
257
+ }
245
258
}
246
259
Err ( err) => {
247
- sentry_debug!( "Failed to send event : {}" , err) ;
260
+ sentry_debug!( "Failed to send envelope : {}" , err) ;
248
261
}
249
262
}
250
263
0 commit comments