upfluence-utils 0.11.4 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5084c4d4ec0053296da08af0f701e3533c3c04e097c58bd48d674ab6ce02f15
4
- data.tar.gz: 04dff5174d8d510c22c8236f54d1033100bdde9102955e66bb28e25e8c94146e
3
+ metadata.gz: f2c9dcbd049e1e8c27d2ec9f7075cccacb7f4814d23ea04def031a0f9f00957f
4
+ data.tar.gz: 1f6b5c5812beaccfbf78123004f503f9135c96aedef1097cede9df3f007c6e92
5
5
  SHA512:
6
- metadata.gz: 10db3f2f7d9e1ae72d51ae9f6007d994b6e1b7d86752a68c94d212c1bb894360c6bf7f7f88857afb67c8fe780077f72d251499b0146d32583aa4686f4a24568f
7
- data.tar.gz: 811cba7d199587b6d65ebac7a613c23e47f159c5e581d1d09340c34c76a684a8b1d1ae6a56f1a97eae93dabc717673246d8a65805aa35d32fd94834da2fe1cd5
6
+ metadata.gz: 7c9e85e446a91a43b0d71d855a3b5c8c601f84f77582b6f3f32c725eadc96682bed636d6987dbab210b98b64c437a92412df89e6ef4494a6b1b01d49e9aa4a79
7
+ data.tar.gz: 10f73661eccb80401be50c860b660b0be5707f60b9d864bbe6e49cd1e0e93a91ee1dc1fbcbdf99adb0f59936dcdd2115424657edb76d8345ab46c1dd95811232
@@ -18,7 +18,7 @@ module Upfluence
18
18
  end
19
19
  end
20
20
 
21
- def notify(error, _method, *_args)
21
+ def notify(error, *_args)
22
22
  Upfluence.logger.error(error.inspect)
23
23
  end
24
24
 
@@ -1,66 +1,116 @@
1
- require 'raven'
1
+ require 'sentry-ruby'
2
2
 
3
3
  module Upfluence
4
4
  module ErrorLogger
5
5
  class Sentry
6
- EXCLUDED_ERRORS = (Raven::Configuration::IGNORE_DEFAULT + ['Identity::Thrift::Forbidden'])
6
+ EXCLUDED_ERRORS = (::Sentry::Configuration::IGNORE_DEFAULT + ['Identity::Thrift::Forbidden'])
7
+ MAX_TAG_SIZE = 8 * 1024
7
8
 
8
9
  def initialize
9
- ::Raven.configure do |config|
10
- config.dsn = ENV['SENTRY_DSN']
11
- config.current_environment = Upfluence.env
10
+ @tag_extractors = []
11
+
12
+ ::Sentry.init do |config|
13
+ config.send_default_pii = true
14
+ config.dsn = ENV.fetch('SENTRY_DSN', nil)
15
+ config.environment = Upfluence.env
12
16
  config.excluded_exceptions = EXCLUDED_ERRORS
13
17
  config.logger = Upfluence.logger
14
- config.release = "#{ENV['PROJECT_NAME']}-#{ENV['SEMVER_VERSION']}"
15
- config.tags = {
16
- unit_name: unit_name,
17
- unit_type: unit_type
18
- }.select { |_, v| !v.nil? }
18
+ config.release = "#{ENV.fetch('PROJECT_NAME', nil)}-#{ENV.fetch('SEMVER_VERSION', nil)}"
19
+ config.enable_tracing = false
20
+ config.auto_session_tracking = false
21
+ end
22
+
23
+ ::Sentry.set_tags(
24
+ { unit_name: unit_name, unit_type: unit_type }.select { |_, v| v }
25
+ )
26
+
27
+ ::Sentry.with_scope do |scope|
28
+ scope.add_event_processor do |event, hint|
29
+ tags = @tag_extractors.map(&:extract).compact.reduce({}, &:merge)
30
+
31
+ exc = hint[:exception]
32
+
33
+ tags.merge!(exc.tags) if exc.respond_to? :tags
34
+
35
+ tx_name = transaction_name(tags)
36
+
37
+ event.transaction = tx_name if tx_name
38
+ event.extra.merge!(prepare_extra(tags))
39
+
40
+ event
41
+ end
19
42
  end
20
43
  end
21
44
 
22
- def notify(error, method, *args)
23
- begin
24
- Raven.capture_exception(
25
- error,
26
- extra: { method: method, arguments: args.map(&:inspect) },
27
- tags: { method: method }
28
- )
29
- rescue Raven::Error => e
30
- Upfluence.logger.error e.message
45
+ def append_tag_extractors(klass)
46
+ @tag_extractors << klass
47
+ end
48
+
49
+ def notify(error, *args)
50
+ ::Sentry.with_scope do |scope|
51
+ context = args.reduce({}) do |acc, arg|
52
+ v = if arg.is_a?(Hash)
53
+ arg
54
+ else
55
+ key = acc.empty? ? 'method' : "arg_#{acc.length}"
56
+ { key => arg.inspect }
57
+ end
58
+
59
+ acc.merge(v)
60
+ end
61
+
62
+ scope.set_extras(prepare_extra(context))
63
+
64
+ ::Sentry.capture_exception(error)
31
65
  end
66
+ rescue ::Sentry::Error => e
67
+ Upfluence.logger.warning e.message
32
68
  end
33
69
 
34
70
  def user=(user)
35
- Raven.user_context(id: user.id, email: user.email)
71
+ ::Sentry.set_user(id: user.id, email: user.email)
36
72
  end
37
73
 
38
74
  def middleware
39
- ::Raven::Rack
75
+ ::Sentry::Rack::CaptureExceptions
40
76
  end
41
77
 
42
78
  def ignore_exception(*klss)
43
79
  klss.each do |kls|
44
- puts kls
45
80
  case kls.class
46
81
  when Class
47
- Raven.configuration.excluded_exceptions << kls.name
82
+ ::Sentry.configuration.excluded_exceptions << kls.name
48
83
  when String
49
- Raven.configuration.excluded_exceptions << kls
84
+ ::Sentry.configuration.excluded_exceptions << kls
50
85
  else
51
- Upfluence.logger.warn e.message
86
+ Upfluence.logger.warn "Unexcepted argument for ignore_exception #{kls}"
52
87
  end
53
88
  end
54
89
  end
55
90
 
56
91
  private
57
92
 
93
+ def prepare_extra(tags)
94
+ tags.select { |_k, v| v.respond_to?(:size) && v.size < MAX_TAG_SIZE }
95
+ end
96
+
97
+ def transaction_name(tags)
98
+ return tags['transaction'] if tags['transaction']
99
+
100
+ svc = tags['thrift.request.service']
101
+ mth = tags['thrift.request.method']
102
+
103
+ return "#{svc}##{mth}" if svc && mth
104
+
105
+ nil
106
+ end
107
+
58
108
  def unit_name
59
- ENV['UNIT_NAME'].split('.').first if ENV['UNIT_NAME']
109
+ ENV['UNIT_NAME']&.split('.')&.first
60
110
  end
61
111
 
62
112
  def unit_type
63
- unit_name.split('@').first if unit_name
113
+ unit_name&.split('@')&.first
64
114
  end
65
115
  end
66
116
  end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.11.4'.freeze
3
+ VERSION = '0.12.0'.freeze
4
4
  end
5
5
  end
data/rbutils.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_runtime_dependency 'upfluence-thrift'
24
24
  spec.add_runtime_dependency 'sinatra'
25
25
  spec.add_runtime_dependency 'redis'
26
- spec.add_runtime_dependency 'sentry-raven'
26
+ spec.add_runtime_dependency 'sentry-ruby'
27
27
  spec.add_runtime_dependency 'sinatra-contrib'
28
28
  spec.add_runtime_dependency 'activesupport'
29
29
  spec.add_runtime_dependency 'puma'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.4
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-05 00:00:00.000000000 Z
11
+ date: 2023-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: sentry-raven
98
+ name: sentry-ruby
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="