pyroscope 0.3.1-x86_64-linux → 0.3.2-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d5246487a997d5c324867807c3c3e39213d0fd3856eba3e83e5931862eed37a2
4
- data.tar.gz: 61a63fd184f87f3513b67328a6ea40f26393de5b1152e963c63d722693673e85
3
+ metadata.gz: 0357ffeb818718a812ed4bf7fcf606f8a76eeb0d8b2c32921a84763ade61631b
4
+ data.tar.gz: 6dea904d0841a5f87477105d2d58ea19a7357bc9eb982d165582e21302d275cd
5
5
  SHA512:
6
- metadata.gz: 16ab8963dbcabd6a26cd7457bc50dcaab771ecfdd7f2ee7216b0eb0b24cde58aa2f80b071ded8e4f325a6bcb4541356264d9677a051087e5b73bc2d19b8e94c4
7
- data.tar.gz: cea28aa3b9454b7413444976369e1efff4ca666ac2f99e6a3a54c5346ce0eb6325a2eef3b79e17d8c364fced4971aa067a42d5c864b34efd5ef3c9a8a9d27a70
6
+ metadata.gz: 8758d7332fb1b03028038af6a0718bc7a43ee1bce036d33735ac5618dc01218ab8a1faede0e2369c5be67cb845949f576d16f709d7354cbd95562bcc4d0675d8
7
+ data.tar.gz: 88eb85ba14f0fd13448451d8e81e91f7ed667bd42cc32a6ec2b6e39cd31e4307e3a749cad146f159bb2c459a79f0e3463f5294bf20fc69ce757176cd3687bf85
data/ext/rbspy/src/lib.rs CHANGED
@@ -1,11 +1,80 @@
1
1
  use ffikit::Signal;
2
- use pyroscope::backend::Tag;
2
+ use pyroscope::backend::{Report, StackFrame, Tag};
3
3
  use pyroscope::PyroscopeAgent;
4
4
  use pyroscope_rbspy::{rbspy_backend, RbspyConfig};
5
5
  use std::collections::hash_map::DefaultHasher;
6
6
  use std::ffi::CStr;
7
7
  use std::hash::Hasher;
8
8
  use std::os::raw::c_char;
9
+ use std::env;
10
+
11
+ pub fn transform_report(report: Report) -> Report {
12
+ let cwd = env::current_dir().unwrap();
13
+ let cwd = cwd.to_str().unwrap_or("");
14
+
15
+ let data = report
16
+ .data
17
+ .iter()
18
+ .map(|(stacktrace, count)| {
19
+ let new_frames = stacktrace
20
+ .frames
21
+ .iter()
22
+ .map(|frame| {
23
+ let frame = frame.to_owned();
24
+ let mut s = frame.filename.unwrap();
25
+ match s.find(cwd) {
26
+ Some(i) => {
27
+ s = s[(i+cwd.len()+1)..].to_string();
28
+ }
29
+ None => {
30
+ match s.find("/gems/") {
31
+ Some(i) => {
32
+ s = s[(i+1)..].to_string();
33
+ }
34
+ None => {
35
+ match s.find("/ruby/") {
36
+ Some(i) => {
37
+ s = s[(i+6)..].to_string();
38
+ match s.find("/") {
39
+ Some(i) => {
40
+ s = s[(i+1)..].to_string();
41
+ }
42
+ None => {
43
+ }
44
+ }
45
+ }
46
+ None => {
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ // something
55
+ StackFrame::new(
56
+ frame.module,
57
+ frame.name,
58
+ Some(s.to_string()),
59
+ frame.relative_path,
60
+ frame.absolute_path,
61
+ frame.line,
62
+ )
63
+ })
64
+ .collect();
65
+
66
+ let mut mystack = stacktrace.to_owned();
67
+
68
+ mystack.frames = new_frames;
69
+
70
+ (mystack, count.to_owned())
71
+ })
72
+ .collect();
73
+
74
+ let new_report = Report::new(data).metadata(report.metadata.clone());
75
+
76
+ new_report
77
+ }
9
78
 
10
79
  #[no_mangle]
11
80
  pub extern "C" fn initialize_agent(
@@ -52,6 +121,7 @@ pub extern "C" fn initialize_agent(
52
121
 
53
122
  let mut agent_builder = PyroscopeAgent::builder(server_address, application_name)
54
123
  .backend(rbspy)
124
+ .func(transform_report)
55
125
  .tags(tags);
56
126
 
57
127
  if auth_token != "" {
@@ -1,3 +1,3 @@
1
1
  module Pyroscope
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.3.2'.freeze
3
3
  end
data/lib/rbspy/rbspy.so CHANGED
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pyroscope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Pyroscope Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-19 00:00:00.000000000 Z
11
+ date: 2022-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi