pyroscope 0.3.1-aarch64-linux → 0.3.2-aarch64-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: ee2c1dba441e9d5a2b56b8c43e1dd161ad3bfdcb8182f65162e048505e2c8caf
4
- data.tar.gz: 276b3292df0609fdca21471d188a4a79b6aa7dcbbcbc3e8c64674d4c5d46621a
3
+ metadata.gz: d961eb1511f2da0db538f6d6667bdec6450fc7984d7cd8bc3ae22215b2fa47f8
4
+ data.tar.gz: 2f791e0636fc5515ce490db4516a02fe82baf50341e1c9c8199a949385a65320
5
5
  SHA512:
6
- metadata.gz: fcd551822fb88c6959bbb15421730af6f103c291c62e39359acf4236e1aff57a0393c3156d86071fd066dd9ebd2f7fc64e77f3259b9e81f1d3de0c400f10a735
7
- data.tar.gz: 33389934d411b0440e6ad28aefbe4850e9f27d5e9cecb236c9d37845ba0fdd2e6c9acad48f4fa994b230cdeb5606f10b8f4e90a4a2ae23b80b34db7df12bd275
6
+ metadata.gz: c2f61b99809331a28411b914f785b2fdde2bad19bdf5d0538a5a001c837854253191ad7cf3687a41e93e55ca3e3e117476ddaa41fecdcbbbcec76f4dd50299c1
7
+ data.tar.gz: cb6e1f024f6e7a2b12ccb973b1ab8f5e051f9f5faab1e03a93facbef405e02f21b059e174fc16d93bc7508c27395ab8afdd022f22b583741304fa083a17be2a9
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: aarch64-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