Skip to content

Commit 0c83274

Browse files
mixalturekmitsuhiko
authored andcommitted
feat: name sender thread spawned by Sentry client. (#126)
1 parent 09e75f0 commit 0c83274

File tree

1 file changed

+50
-44
lines changed

1 file changed

+50
-44
lines changed

src/transport.rs

Lines changed: 50 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ fn parse_retry_after(s: &str) -> Option<SystemTime> {
119119
}
120120
}
121121

122+
/// # Panics
123+
///
124+
/// Panics if the OS fails to create thread.
122125
fn spawn_http_sender(
123126
client: Client,
124127
receiver: Receiver<Option<Event<'static>>>,
@@ -130,58 +133,61 @@ fn spawn_http_sender(
130133
) -> JoinHandle<()> {
131134
let mut disabled = SystemTime::now();
132135

133-
thread::spawn(move || {
134-
let url = dsn.store_api_url().to_string();
136+
thread::Builder::new()
137+
.name("sentry-transport".to_string())
138+
.spawn(move || {
139+
let url = dsn.store_api_url().to_string();
135140

136-
while let Some(event) = receiver.recv().unwrap_or(None) {
137-
// on drop we want to not continue processing the queue.
138-
if shutdown_immediately.load(Ordering::SeqCst) {
139-
let mut size = queue_size.lock().unwrap();
140-
*size = 0;
141-
signal.notify_all();
142-
break;
143-
}
141+
while let Some(event) = receiver.recv().unwrap_or(None) {
142+
// on drop we want to not continue processing the queue.
143+
if shutdown_immediately.load(Ordering::SeqCst) {
144+
let mut size = queue_size.lock().unwrap();
145+
*size = 0;
146+
signal.notify_all();
147+
break;
148+
}
144149

145-
// while we are disabled due to rate limits, skip
146-
let now = SystemTime::now();
147-
if let Ok(time_left) = disabled.duration_since(now) {
148-
sentry_debug!(
149-
"Skipping event send because we're disabled due to rate limits for {}s",
150-
time_left.as_secs()
151-
);
152-
continue;
153-
}
150+
// while we are disabled due to rate limits, skip
151+
let now = SystemTime::now();
152+
if let Ok(time_left) = disabled.duration_since(now) {
153+
sentry_debug!(
154+
"Skipping event send because we're disabled due to rate limits for {}s",
155+
time_left.as_secs()
156+
);
157+
continue;
158+
}
154159

155-
match client
156-
.post(url.as_str())
157-
.json(&event)
158-
.header("X-Sentry-Auth", dsn.to_auth(Some(&user_agent)).to_string())
159-
.send()
160-
{
161-
Ok(resp) => {
162-
if resp.status() == 429 {
163-
if let Some(retry_after) = resp
164-
.headers()
165-
.get(RETRY_AFTER)
166-
.and_then(|x| x.to_str().ok())
167-
.and_then(parse_retry_after)
168-
{
169-
disabled = retry_after;
160+
match client
161+
.post(url.as_str())
162+
.json(&event)
163+
.header("X-Sentry-Auth", dsn.to_auth(Some(&user_agent)).to_string())
164+
.send()
165+
{
166+
Ok(resp) => {
167+
if resp.status() == 429 {
168+
if let Some(retry_after) = resp
169+
.headers()
170+
.get(RETRY_AFTER)
171+
.and_then(|x| x.to_str().ok())
172+
.and_then(parse_retry_after)
173+
{
174+
disabled = retry_after;
175+
}
170176
}
171177
}
178+
Err(err) => {
179+
sentry_debug!("Failed to send event: {}", err);
180+
}
172181
}
173-
Err(err) => {
174-
sentry_debug!("Failed to send event: {}", err);
175-
}
176-
}
177182

178-
let mut size = queue_size.lock().unwrap();
179-
*size -= 1;
180-
if *size == 0 {
181-
signal.notify_all();
183+
let mut size = queue_size.lock().unwrap();
184+
*size -= 1;
185+
if *size == 0 {
186+
signal.notify_all();
187+
}
182188
}
183-
}
184-
})
189+
})
190+
.unwrap() // TODO: Panic, change API to return Result?
185191
}
186192

187193
impl HttpTransport {

0 commit comments

Comments
 (0)