Skip to content

Commit 1fa9ebb

Browse files
committed
imp(agent): thread-safe tagging api
1 parent 92d3512 commit 1fa9ebb

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/pyroscope.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,35 @@ impl PyroscopeAgent {
400400
Ok(())
401401
}
402402

403+
pub fn tag_wrapper(
404+
&self,
405+
) -> (
406+
impl Fn(String, String) -> Result<()>,
407+
impl Fn(String, String) -> Result<()>,
408+
) {
409+
let backend_add = self.backend.backend.clone();
410+
let backend_remove = self.backend.backend.clone();
411+
412+
(
413+
move |key, value| {
414+
let thread_id = crate::utils::pthread_self()?;
415+
let rule = Rule::ThreadTag(thread_id, Tag::new(key, value));
416+
let backend = backend_add.lock()?;
417+
backend.as_ref().unwrap().add_rule(rule)?;
418+
419+
Ok(())
420+
},
421+
move |key, value| {
422+
let thread_id = crate::utils::pthread_self()?;
423+
let rule = Rule::ThreadTag(thread_id, Tag::new(key, value));
424+
let backend = backend_remove.lock()?;
425+
backend.as_ref().unwrap().remove_rule(rule)?;
426+
427+
Ok(())
428+
},
429+
)
430+
}
431+
403432
pub fn add_global_tag(&mut self, tag: Tag) -> Result<()> {
404433
let rule = Rule::GlobalTag(tag);
405434
self.backend.add_rule(rule)?;

src/utils.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ pub fn pthread_self() -> Result<u64> {
8181
Ok(thread_id)
8282
}
8383

84+
#[cfg(test)]
8485
mod pthread_self_tests {
8586
use crate::utils::pthread_self;
8687

0 commit comments

Comments
 (0)