honeybadger 5.13.0 → 5.13.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/lib/honeybadger/config/defaults.rb +1 -1
- data/lib/honeybadger/config.rb +0 -1
- data/lib/honeybadger/events_worker.rb +7 -1
- data/lib/honeybadger/notification_subscriber.rb +10 -3
- data/lib/honeybadger/plugins/rails.rb +10 -8
- data/lib/honeybadger/util/sql.rb +16 -19
- data/lib/honeybadger/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de851e791df98653d1e5af860eba6f9dec3cc39666cff9e6e8bfc04dcfd81e5d
|
4
|
+
data.tar.gz: 618b8fd621606d0e8db648807e308a67b9c0212a0dea0e66c4bd54cf9e671cf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5b1db0b353ff7000b6b32c7664e69003a9bb69a75282392f639df5b8b352c65b7f4bd3a4736fbfd96a44d3d0070dc9c1ef348d98878cb93f22f7cb73b856a5a
|
7
|
+
data.tar.gz: 8aea0c27bd056a5cfc41114ee0a160e00c30aa8752fcec84b215706a23b6329a6f1648106176f9ca8f484e7518716c4348e9aaf1989ee70dcbfe9de415f32e1e
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
3
|
|
4
|
+
## [5.13.2](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.13.1...v5.13.2) (2024-07-03)
|
5
|
+
|
6
|
+
|
7
|
+
### Bug Fixes
|
8
|
+
|
9
|
+
* buffer more and warn less ([#575](https://github.com/honeybadger-io/honeybadger-ruby/issues/575)) ([8e99e17](https://github.com/honeybadger-io/honeybadger-ruby/commit/8e99e17af65e8d0002e5e8204d5ded1cea891e86))
|
10
|
+
|
11
|
+
## [5.13.1](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.13.0...v5.13.1) (2024-07-01)
|
12
|
+
|
13
|
+
|
14
|
+
### Bug Fixes
|
15
|
+
|
16
|
+
* do not check for rails console ([#574](https://github.com/honeybadger-io/honeybadger-ruby/issues/574)) ([ba74af8](https://github.com/honeybadger-io/honeybadger-ruby/commit/ba74af8b55393ea0a96962085ea48c4376380be3))
|
17
|
+
* ignore content-less SQL statements ([#572](https://github.com/honeybadger-io/honeybadger-ruby/issues/572)) ([e7ecd36](https://github.com/honeybadger-io/honeybadger-ruby/commit/e7ecd36969922496e276a246406fe7d792de00e3))
|
18
|
+
* sanitize SQL when reporting SQL queries ([#571](https://github.com/honeybadger-io/honeybadger-ruby/issues/571)) ([40d4a79](https://github.com/honeybadger-io/honeybadger-ruby/commit/40d4a79a5c1f758fe49779e63697d56599537235))
|
19
|
+
|
4
20
|
## [5.13.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.12.0...v5.13.0) (2024-06-18)
|
5
21
|
|
6
22
|
|
data/lib/honeybadger/config.rb
CHANGED
@@ -39,13 +39,14 @@ module Honeybadger
|
|
39
39
|
@pid = Process.pid
|
40
40
|
@send_queue = []
|
41
41
|
@last_sent = nil
|
42
|
+
@dropped_events = 0
|
42
43
|
end
|
43
44
|
|
44
45
|
def push(msg)
|
45
46
|
return false unless start
|
46
47
|
|
47
48
|
if queue.size >= config.events_max_queue_size
|
48
|
-
|
49
|
+
@dropped_events += 1
|
49
50
|
return false
|
50
51
|
end
|
51
52
|
|
@@ -207,7 +208,12 @@ module Honeybadger
|
|
207
208
|
send_now(mutex.synchronize { send_queue })
|
208
209
|
mutex.synchronize do
|
209
210
|
@last_sent = Time.now
|
211
|
+
debug { sprintf('Sending %s events', send_queue.length) }
|
210
212
|
send_queue.clear
|
213
|
+
if @dropped_events > 0
|
214
|
+
warn { sprintf('Dropped %s messages due to exceeding max queue size of %s', @dropped_events, config.events_max_queue_size) }
|
215
|
+
end
|
216
|
+
@dropped_events = 0
|
211
217
|
end
|
212
218
|
end
|
213
219
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'honeybadger/instrumentation_helper'
|
2
|
+
require 'honeybadger/util/sql'
|
2
3
|
|
3
4
|
module Honeybadger
|
4
5
|
class NotificationSubscriber
|
@@ -9,7 +10,7 @@ module Honeybadger
|
|
9
10
|
def finish(name, id, payload)
|
10
11
|
@finish_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
11
12
|
|
12
|
-
return unless process?(name)
|
13
|
+
return unless process?(name, payload)
|
13
14
|
|
14
15
|
payload = {
|
15
16
|
instrumenter_id: id,
|
@@ -23,7 +24,7 @@ module Honeybadger
|
|
23
24
|
Honeybadger.event(name, payload)
|
24
25
|
end
|
25
26
|
|
26
|
-
def process?(event)
|
27
|
+
def process?(event, payload)
|
27
28
|
true
|
28
29
|
end
|
29
30
|
|
@@ -58,10 +59,16 @@ module Honeybadger
|
|
58
59
|
class ActiveRecordSubscriber < NotificationSubscriber
|
59
60
|
def format_payload(payload)
|
60
61
|
{
|
61
|
-
query: payload[:sql].
|
62
|
+
query: Util::SQL.obfuscate(payload[:sql], payload[:connection].adapter_name),
|
62
63
|
async: payload[:async]
|
63
64
|
}
|
64
65
|
end
|
66
|
+
|
67
|
+
def process?(event, payload)
|
68
|
+
return false if payload[:name] == "SCHEMA"
|
69
|
+
return false if payload[:sql]&.match?(/^(begin|commit)( transaction)?$/i)
|
70
|
+
true
|
71
|
+
end
|
65
72
|
end
|
66
73
|
|
67
74
|
class ActiveJobSubscriber < NotificationSubscriber
|
@@ -71,16 +71,18 @@ module Honeybadger
|
|
71
71
|
end
|
72
72
|
|
73
73
|
Plugin.register :rails do
|
74
|
-
requirement {
|
74
|
+
requirement { defined?(::Rails.application) && ::Rails.application }
|
75
75
|
|
76
76
|
execution do
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
77
|
+
if config.load_plugin_insights?(:rails)
|
78
|
+
::ActiveSupport::Notifications.subscribe(/(process_action|send_file|redirect_to|halted_callback|unpermitted_parameters)\.action_controller/, Honeybadger::ActionControllerSubscriber.new)
|
79
|
+
::ActiveSupport::Notifications.subscribe(/(write_fragment|read_fragment|expire_fragment|exist_fragment\?)\.action_controller/, Honeybadger::ActionControllerCacheSubscriber.new)
|
80
|
+
::ActiveSupport::Notifications.subscribe(/cache_(read|read_multi|generate|fetch_hit|write|write_multi|increment|decrement|delete|delete_multi|cleanup|prune|exist\?)\.active_support/, Honeybadger::ActiveSupportCacheSubscriber.new)
|
81
|
+
::ActiveSupport::Notifications.subscribe(/^render_(template|partial|collection)\.action_view/, Honeybadger::ActionViewSubscriber.new)
|
82
|
+
::ActiveSupport::Notifications.subscribe("sql.active_record", Honeybadger::ActiveRecordSubscriber.new)
|
83
|
+
::ActiveSupport::Notifications.subscribe("process.action_mailer", Honeybadger::ActionMailerSubscriber.new)
|
84
|
+
::ActiveSupport::Notifications.subscribe(/(service_upload|service_download)\.active_storage/, Honeybadger::ActiveStorageSubscriber.new)
|
85
|
+
end
|
84
86
|
end
|
85
87
|
end
|
86
88
|
end
|
data/lib/honeybadger/util/sql.rb
CHANGED
@@ -1,32 +1,29 @@
|
|
1
1
|
module Honeybadger
|
2
2
|
module Util
|
3
3
|
class SQL
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
Replacement = "?".freeze
|
10
|
-
EmptyReplacement = "".freeze
|
11
|
-
DoubleQuoters = /(postgres|sqlite|postgis)/.freeze
|
4
|
+
ESCAPE_QUOTES = /(\\"|\\')/
|
5
|
+
SQUOTE_DATA = /'(?:[^']|'')*'/
|
6
|
+
DQUOTE_DATA = /"(?:[^"]|"")*"/
|
7
|
+
NUMBER_DATA = /\b\d+\b/
|
8
|
+
DOUBLE_QUOTERS = /(postgres|sqlite|postgis)/i
|
12
9
|
|
13
10
|
def self.obfuscate(sql, adapter)
|
14
|
-
force_utf_8(sql.dup).tap do |s|
|
15
|
-
s.gsub!(
|
16
|
-
s.gsub!(
|
17
|
-
s.gsub!(
|
18
|
-
s.gsub!(
|
19
|
-
s.gsub!(
|
20
|
-
s.
|
11
|
+
force_utf_8(sql.to_s.dup).tap do |s|
|
12
|
+
s.gsub!(/\s+/, " ")
|
13
|
+
s.gsub!(ESCAPE_QUOTES, "".freeze)
|
14
|
+
s.gsub!(SQUOTE_DATA, "'?'".freeze)
|
15
|
+
s.gsub!(DQUOTE_DATA, '"?"'.freeze) unless adapter.to_s.match?(DOUBLE_QUOTERS)
|
16
|
+
s.gsub!(NUMBER_DATA, "?".freeze)
|
17
|
+
s.strip!
|
21
18
|
end
|
22
19
|
end
|
23
20
|
|
24
21
|
def self.force_utf_8(string)
|
25
22
|
string.encode(
|
26
|
-
Encoding.find(
|
27
|
-
invalid: :replace,
|
28
|
-
undef: :replace,
|
29
|
-
replace:
|
23
|
+
Encoding.find("UTF-8"),
|
24
|
+
invalid: :replace,
|
25
|
+
undef: :replace,
|
26
|
+
replace: ""
|
30
27
|
)
|
31
28
|
end
|
32
29
|
end
|
data/lib/honeybadger/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: honeybadger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.13.
|
4
|
+
version: 5.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Honeybadger Industries LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Make managing application errors a more pleasant experience.
|
14
14
|
email:
|