karafka-core 2.5.6 → 2.5.7
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/.github/workflows/ci.yml +2 -3
- data/.github/workflows/push.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +1 -1
- data/karafka-core.gemspec +1 -1
- data/lib/karafka/core/configurable/node.rb +10 -9
- data/lib/karafka/core/contractable/result.rb +6 -1
- data/lib/karafka/core/monitoring/notifications.rb +11 -4
- data/lib/karafka/core/monitoring/statistics_decorator.rb +4 -2
- data/lib/karafka/core/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: 67cafa1111ce6ff11e3639edc28f436ea538dc3acdbd7db59a3e85e2b16c3c79
|
4
|
+
data.tar.gz: 88501c54d507465eee6e438d58a51c3b1225b060c24649bb00d923c8d5eb7d9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 421b6144707c52cb077c36e54bc1936692d27704d5af83b601827b3201a9db91d4abd0777373d60b9e21784f2769f50a3a27c00e94b38372e2986bde2e40cfbf
|
7
|
+
data.tar.gz: 0504c6cf7a700c0ebf8db610b9cf26ca93472b735269f78c03c17c2c176b14404625eaa009fb46d7b2013878e830e4cfc09408b7a6e76f0a08e436231729d824
|
data/.github/workflows/ci.yml
CHANGED
@@ -26,7 +26,6 @@ jobs:
|
|
26
26
|
- '3.4'
|
27
27
|
- '3.3'
|
28
28
|
- '3.2'
|
29
|
-
- '3.1'
|
30
29
|
include:
|
31
30
|
- ruby: '3.4'
|
32
31
|
coverage: 'true'
|
@@ -39,7 +38,7 @@ jobs:
|
|
39
38
|
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
|
40
39
|
|
41
40
|
- name: Set up Ruby
|
42
|
-
uses: ruby/setup-ruby@
|
41
|
+
uses: ruby/setup-ruby@1c58d16f1a2d74dc895c05f92d1e31ffe691110e # v1.261.0
|
43
42
|
with:
|
44
43
|
ruby-version: ${{matrix.ruby}}
|
45
44
|
bundler: 'latest'
|
@@ -71,7 +70,7 @@ jobs:
|
|
71
70
|
with:
|
72
71
|
fetch-depth: 0
|
73
72
|
- name: Set up Ruby
|
74
|
-
uses: ruby/setup-ruby@
|
73
|
+
uses: ruby/setup-ruby@1c58d16f1a2d74dc895c05f92d1e31ffe691110e # v1.261.0
|
75
74
|
with:
|
76
75
|
ruby-version: 3.4
|
77
76
|
self-hosted: false
|
data/.github/workflows/push.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.4.
|
1
|
+
3.4.6
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Karafka Core Changelog
|
2
2
|
|
3
|
+
## 2.5.7 (2025-09-28)
|
4
|
+
- [Enhancement] Optimize `Node#deep_dup` to reduce array allocations during configuration deep copying.
|
5
|
+
- [Enhancement] Optimize `Result#initialize` to use shared `EMPTY_HASH` constant for successful validations.
|
6
|
+
- [Enhancement] Optimize `StatisticsDecorator#append` string concatenation to reduce allocations.
|
7
|
+
- [Enhancement] Optimize `Notifications#instrument` payload handling to avoid unnecessary hash merges for empty payloads.
|
8
|
+
- [Change] Remove Ruby 3.1 support due to EOL.
|
9
|
+
|
3
10
|
## 2.5.6 (2025-09-02)
|
4
11
|
- [Change] Normalize how libs and dependencies are required (no functional change for the end user)
|
5
12
|
- [Change] Set minimum `karafka-rdkafka` on `0.20.0` to support new features and allow for open range as both `waterdrop` and `karafka` manage this.
|
data/Gemfile.lock
CHANGED
data/karafka-core.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.add_dependency 'karafka-rdkafka', '>= 0.20.0'
|
20
20
|
spec.add_dependency 'logger', '>= 1.6.0'
|
21
21
|
|
22
|
-
spec.required_ruby_version = '>= 3.
|
22
|
+
spec.required_ruby_version = '>= 3.2.0'
|
23
23
|
|
24
24
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
|
25
25
|
spec.require_paths = %w[lib]
|
@@ -85,15 +85,16 @@ module Karafka
|
|
85
85
|
def deep_dup
|
86
86
|
dupped = Node.new(node_name, nestings)
|
87
87
|
|
88
|
-
|
89
|
-
if value.is_a?(Leaf)
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
88
|
+
children.each do |value|
|
89
|
+
dupped.children << if value.is_a?(Leaf)
|
90
|
+
# After inheritance we need to reload the state so the leafs are
|
91
|
+
# recompiled again
|
92
|
+
value = value.dup
|
93
|
+
value.compiled = false
|
94
|
+
value
|
95
|
+
else
|
96
|
+
value.deep_dup
|
97
|
+
end
|
97
98
|
end
|
98
99
|
|
99
100
|
dupped
|
@@ -7,6 +7,11 @@ module Karafka
|
|
7
7
|
class Result
|
8
8
|
attr_reader :errors
|
9
9
|
|
10
|
+
# Empty hash that we use when no errors to save on allocations
|
11
|
+
EMPTY_HASH = {}.freeze
|
12
|
+
|
13
|
+
private_constant :EMPTY_HASH
|
14
|
+
|
10
15
|
# Builds a result object and remaps (if needed) error keys to proper error messages
|
11
16
|
#
|
12
17
|
# @param errors [Array<Array>] array with sub-arrays with paths and error keys
|
@@ -14,7 +19,7 @@ module Karafka
|
|
14
19
|
def initialize(errors, contract)
|
15
20
|
# Short track to skip object allocation for the happy path
|
16
21
|
if errors.empty?
|
17
|
-
@errors =
|
22
|
+
@errors = EMPTY_HASH
|
18
23
|
return
|
19
24
|
end
|
20
25
|
|
@@ -139,10 +139,17 @@ module Karafka
|
|
139
139
|
return
|
140
140
|
end
|
141
141
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
142
|
+
final_payload = if time
|
143
|
+
if payload.empty?
|
144
|
+
{ time: time }
|
145
|
+
else
|
146
|
+
payload.merge(time: time)
|
147
|
+
end
|
148
|
+
else
|
149
|
+
payload
|
150
|
+
end
|
151
|
+
|
152
|
+
event = Event.new(event_id, final_payload)
|
146
153
|
|
147
154
|
assigned_listeners.each do |listener|
|
148
155
|
if listener.is_a?(Proc)
|
@@ -96,7 +96,9 @@ module Karafka
|
|
96
96
|
return unless result.is_a?(Numeric)
|
97
97
|
return if current.frozen?
|
98
98
|
|
99
|
-
|
99
|
+
key_str = key.to_s
|
100
|
+
freeze_duration_key = "#{key_str}_fd"
|
101
|
+
delta_key = "#{key_str}_d"
|
100
102
|
|
101
103
|
if result.zero?
|
102
104
|
current[freeze_duration_key] = previous[freeze_duration_key] || 0
|
@@ -105,7 +107,7 @@ module Karafka
|
|
105
107
|
current[freeze_duration_key] = 0
|
106
108
|
end
|
107
109
|
|
108
|
-
current[
|
110
|
+
current[delta_key] = result
|
109
111
|
end
|
110
112
|
end
|
111
113
|
end
|
data/lib/karafka/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
@@ -109,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
109
|
requirements:
|
110
110
|
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 3.
|
112
|
+
version: 3.2.0
|
113
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|