pyroscope 0.3.1-arm64-darwin → 0.3.2-arm64-darwin

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: 0b7eb0f69ff31b3fc5a6ac437cb4c4190da57cdfea4e81e87956259fcc2f19de
4
- data.tar.gz: 9eab2b1c0dd80f29ccf88d9a6e52c37093b0effd70d54eb6fb718546f375453e
3
+ metadata.gz: 3b416a6d4822ae46d7b09e82268653941e78c327d7f2d8bd6acf10d950cc5539
4
+ data.tar.gz: 81c775c9dc50ba60d0b05a36e3f2ba2f58e4cb911056da3839c56376e2ddd217
5
5
  SHA512:
6
- metadata.gz: 95f3c03936e81ffb9b1ee5fe3632c01e822548305d691db28ba721411e4ccba3964197aeee71b7d17ed6e771991441da03f50015108786ad0e05b5dd6d961905
7
- data.tar.gz: 0d411ee574f66eb488bc05f905ec52142061374e2bcdde83d028cb120b4f58167444b88dfa24b8fb5f343f1263ad12771b794f0da73f79a636d8f97ed3df4b3d
6
+ metadata.gz: 0a2e0b59a43d73e4840744ca285138364fe241e70ae8c2289ed2f629bfb89e15641e5e714d1101ef7d7eac5c0295c3d65ff8f8b598d99fe55a79eeea6eca9364
7
+ data.tar.gz: ad2f447c129dbe4cab53b586a27313fdbb33e28a285686913bae4bdd72296b78aa2c6d8977c48b7068b3fb241088564ee3343306cc65794644cfab545b91b9fd
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
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: arm64-darwin
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