airbrake-ruby 4.13.1 → 4.13.2
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 +4 -4
- data/lib/airbrake-ruby.rb +0 -1
- data/lib/airbrake-ruby/async_sender.rb +6 -29
- data/lib/airbrake-ruby/notice.rb +1 -1
- data/lib/airbrake-ruby/notice_notifier.rb +1 -1
- data/lib/airbrake-ruby/thread_pool.rb +9 -1
- data/lib/airbrake-ruby/version.rb +1 -1
- data/spec/async_sender_spec.rb +0 -9
- data/spec/thread_pool_spec.rb +9 -0
- 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: b4ca256b96d64ce95df54220e572323892f0b3496710a7273409306f2b0a7088
|
4
|
+
data.tar.gz: a5b264fb9ac50c258bd7f239af074b20b8bd1515a9a94241f98c602d700d5255
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eba8e8d34d8de98fe34bfea5a3b48393e59d04473f81721565bea42fef486f06ab5b01899e16ed9d2517f6349137e05d1df04f851f48bfb0a998a9c23912daf3
|
7
|
+
data.tar.gz: 39b6d21b0007e6e14f31903a82d8871f45a47a6d27ecef6df65cff7ba6db95ae2b4e81a8bb84e227b2f65cf7ed2cc6fe06bf1b3c2dc880f3423232a25d39224a
|
data/lib/airbrake-ruby.rb
CHANGED
@@ -7,12 +7,6 @@ module Airbrake
|
|
7
7
|
class AsyncSender
|
8
8
|
include Loggable
|
9
9
|
|
10
|
-
# @return [String]
|
11
|
-
WILL_NOT_DELIVER_MSG =
|
12
|
-
"%<log_label>s AsyncSender has reached its capacity of %<capacity>s " \
|
13
|
-
"and the following notice will not be delivered " \
|
14
|
-
"Error: %<type>s - %<message>s\nBacktrace: %<backtrace>s\n".freeze
|
15
|
-
|
16
10
|
def initialize(method = :post)
|
17
11
|
@config = Airbrake::Config.instance
|
18
12
|
@method = method
|
@@ -20,12 +14,13 @@ module Airbrake
|
|
20
14
|
|
21
15
|
# Asynchronously sends a notice to Airbrake.
|
22
16
|
#
|
23
|
-
# @param [
|
24
|
-
# library
|
17
|
+
# @param [Hash] payload Whatever needs to be sent
|
25
18
|
# @return [Airbrake::Promise]
|
26
|
-
def send(
|
27
|
-
unless thread_pool << [
|
28
|
-
return
|
19
|
+
def send(payload, promise, endpoint = @config.endpoint)
|
20
|
+
unless thread_pool << [payload, promise, endpoint]
|
21
|
+
return promise.reject(
|
22
|
+
"AsyncSender has reached its capacity of #{@config.queue_size}",
|
23
|
+
)
|
29
24
|
end
|
30
25
|
|
31
26
|
promise
|
@@ -58,23 +53,5 @@ module Airbrake
|
|
58
53
|
)
|
59
54
|
end
|
60
55
|
end
|
61
|
-
|
62
|
-
def will_not_deliver(notice, promise)
|
63
|
-
error = notice[:errors].first
|
64
|
-
|
65
|
-
logger.error(
|
66
|
-
format(
|
67
|
-
WILL_NOT_DELIVER_MSG,
|
68
|
-
log_label: LOG_LABEL,
|
69
|
-
capacity: @config.queue_size,
|
70
|
-
type: error[:type],
|
71
|
-
message: error[:message],
|
72
|
-
backtrace: error[:backtrace].map do |line|
|
73
|
-
"#{line[:file]}:#{line[:line]} in `#{line[:function]}'"
|
74
|
-
end.join("\n"),
|
75
|
-
),
|
76
|
-
)
|
77
|
-
promise.reject("AsyncSender has reached its capacity of #{@config.queue_size}")
|
78
|
-
end
|
79
56
|
end
|
80
57
|
end
|
data/lib/airbrake-ruby/notice.rb
CHANGED
@@ -9,7 +9,7 @@ module Airbrake
|
|
9
9
|
# @return [Array<Class>] filters to be executed first
|
10
10
|
DEFAULT_FILTERS = [
|
11
11
|
Airbrake::Filters::SystemExitFilter,
|
12
|
-
Airbrake::Filters::GemRootFilter
|
12
|
+
Airbrake::Filters::GemRootFilter,
|
13
13
|
|
14
14
|
# Optional filters (must be included by users):
|
15
15
|
# Airbrake::Filters::ThreadFilter
|
@@ -45,7 +45,15 @@ module Airbrake
|
|
45
45
|
# @return [Boolean] true if the message was successfully sent to the pool,
|
46
46
|
# false if the queue is full
|
47
47
|
def <<(message)
|
48
|
-
|
48
|
+
if backlog >= @queue_size
|
49
|
+
logger.error(
|
50
|
+
"#{LOG_LABEL} ThreadPool has reached its capacity of " \
|
51
|
+
"#{@queue_size} and the following message will not be " \
|
52
|
+
"processed: #{message.inspect}",
|
53
|
+
)
|
54
|
+
return false
|
55
|
+
end
|
56
|
+
|
49
57
|
@queue << message
|
50
58
|
true
|
51
59
|
end
|
data/spec/async_sender_spec.rb
CHANGED
@@ -58,15 +58,6 @@ RSpec.describe Airbrake::AsyncSender do
|
|
58
58
|
'error' => "AsyncSender has reached its capacity of 1",
|
59
59
|
)
|
60
60
|
end
|
61
|
-
|
62
|
-
it "logs discarded notice" do
|
63
|
-
expect(Airbrake::Loggable.instance).to receive(:error).with(
|
64
|
-
/reached its capacity/,
|
65
|
-
).at_least(:once)
|
66
|
-
|
67
|
-
15.times { subject.send(notice, Airbrake::Promise.new) }
|
68
|
-
subject.close
|
69
|
-
end
|
70
61
|
end
|
71
62
|
end
|
72
63
|
end
|
data/spec/thread_pool_spec.rb
CHANGED
@@ -51,6 +51,15 @@ RSpec.describe Airbrake::ThreadPool do
|
|
51
51
|
|
52
52
|
expect(tasks.size).to be_zero
|
53
53
|
end
|
54
|
+
|
55
|
+
it "logs discarded tasks" do
|
56
|
+
expect(Airbrake::Loggable.instance).to receive(:error).with(
|
57
|
+
/reached its capacity/,
|
58
|
+
).exactly(15).times
|
59
|
+
|
60
|
+
15.times { subject << 1 }
|
61
|
+
subject.close
|
62
|
+
end
|
54
63
|
end
|
55
64
|
end
|
56
65
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airbrake-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.13.
|
4
|
+
version: 4.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airbrake Technologies, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbtree3
|