karafka-core 2.5.7 → 2.5.9
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 +44 -39
- data/.github/workflows/push.yml +3 -3
- data/.github/workflows/trigger-wiki-refresh.yml +1 -1
- data/.github/workflows/verify-action-pins.yml +1 -1
- data/.gitignore +0 -1
- data/.rubocop.yml +37 -0
- data/.ruby-version +1 -1
- data/.yard-lint.yml +275 -0
- data/CHANGELOG.md +12 -4
- data/Gemfile +5 -7
- data/Gemfile.lint +13 -0
- data/Gemfile.lint.lock +103 -0
- data/Gemfile.lock +19 -24
- data/Rakefile +14 -2
- data/karafka-core.gemspec +21 -21
- data/lib/karafka/core/configurable/node.rb +39 -39
- data/lib/karafka/core/configurable.rb +8 -10
- data/lib/karafka/core/contractable/contract.rb +6 -9
- data/lib/karafka/core/contractable/result.rb +10 -10
- data/lib/karafka/core/helpers/rspec_locator.rb +10 -10
- data/lib/karafka/core/helpers/time.rb +1 -1
- data/lib/karafka/core/monitoring/event.rb +1 -1
- data/lib/karafka/core/monitoring/monitor.rb +8 -12
- data/lib/karafka/core/monitoring/notifications.rb +25 -14
- data/lib/karafka/core/monitoring/statistics_decorator.rb +71 -54
- data/lib/karafka/core/version.rb +1 -1
- data/lib/karafka/core.rb +1 -1
- data/lib/karafka-core.rb +26 -26
- data/package-lock.json +331 -0
- data/package.json +9 -0
- data/renovate.json +28 -6
- data/test/lib/karafka/core/configurable/leaf_test.rb +3 -0
- data/test/lib/karafka/core/configurable/node_test.rb +3 -0
- data/test/lib/karafka/core/configurable_test.rb +504 -0
- data/test/lib/karafka/core/contractable/contract_test.rb +241 -0
- data/test/lib/karafka/core/contractable/result_test.rb +106 -0
- data/test/lib/karafka/core/contractable/rule_test.rb +5 -0
- data/test/lib/karafka/core/contractable_test.rb +3 -0
- data/test/lib/karafka/core/helpers/time_test.rb +29 -0
- data/test/lib/karafka/core/instrumentation/callbacks_manager_test.rb +81 -0
- data/test/lib/karafka/core/instrumentation_test.rb +35 -0
- data/test/lib/karafka/core/monitoring/event_test.rb +25 -0
- data/test/lib/karafka/core/monitoring/monitor_test.rb +237 -0
- data/test/lib/karafka/core/monitoring/notifications_test.rb +275 -0
- data/test/lib/karafka/core/monitoring/statistics_decorator_test.rb +284 -0
- data/test/lib/karafka/core/monitoring_test.rb +3 -0
- data/test/lib/karafka/core/patches/rdkafka/bindings_test.rb +25 -0
- data/test/lib/karafka/core/taggable/tags_test.rb +66 -0
- data/test/lib/karafka/core/taggable_test.rb +36 -0
- data/test/lib/karafka/core/version_test.rb +5 -0
- data/test/lib/karafka/core_test.rb +13 -0
- data/test/lib/karafka-core_test.rb +3 -0
- data/test/support/class_builder.rb +24 -0
- data/test/support/describe_current_helper.rb +85 -0
- data/test/test_helper.rb +55 -0
- metadata +32 -5
- data/.coditsu/ci.yml +0 -3
- data/.diffend.yml +0 -3
- data/.rspec +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f40905132baef109ff513aedd80d0be8aa041a4bc44117e2e897e554daa9b47c
|
|
4
|
+
data.tar.gz: d4fbaeb025d4f79d834aea13f4defd294f7d874c628973ce5279b840b713d006
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ae8c3a4772bb914737111319cab6706a45a6af62826a16cb357d43a7521f0b390e2ab338e2e818c24c738d586d1feb89c18799b055d83ce4f089b9642c36910
|
|
7
|
+
data.tar.gz: fbeaeac510a0b2ad3ef23cca8d5a5b958a9e6debbe98899fb4590f3a1dbccaec7543fbd58dea66b5cd344a7783b051d4d60398ba370e66d8fb07a2244ad454d0
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -17,20 +17,19 @@ jobs:
|
|
|
17
17
|
specs:
|
|
18
18
|
timeout-minutes: 15
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
|
-
needs: diffend
|
|
21
20
|
strategy:
|
|
22
21
|
fail-fast: false
|
|
23
22
|
matrix:
|
|
24
23
|
ruby:
|
|
25
|
-
- '
|
|
24
|
+
- '4.0'
|
|
26
25
|
- '3.4'
|
|
27
26
|
- '3.3'
|
|
28
27
|
- '3.2'
|
|
29
28
|
include:
|
|
30
|
-
- ruby: '
|
|
29
|
+
- ruby: '4.0'
|
|
31
30
|
coverage: 'true'
|
|
32
31
|
steps:
|
|
33
|
-
- uses: actions/checkout@
|
|
32
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
34
33
|
with:
|
|
35
34
|
fetch-depth: 0
|
|
36
35
|
|
|
@@ -38,7 +37,7 @@ jobs:
|
|
|
38
37
|
run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
|
|
39
38
|
|
|
40
39
|
- name: Set up Ruby
|
|
41
|
-
uses: ruby/setup-ruby@
|
|
40
|
+
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
|
|
42
41
|
with:
|
|
43
42
|
ruby-version: ${{matrix.ruby}}
|
|
44
43
|
bundler: 'latest'
|
|
@@ -58,62 +57,68 @@ jobs:
|
|
|
58
57
|
- name: Run all tests
|
|
59
58
|
env:
|
|
60
59
|
GITHUB_COVERAGE: ${{matrix.coverage}}
|
|
61
|
-
run: bundle exec
|
|
60
|
+
run: bundle exec rake test
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
rubocop:
|
|
64
63
|
timeout-minutes: 5
|
|
65
64
|
runs-on: ubuntu-latest
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
env:
|
|
66
|
+
BUNDLE_GEMFILE: Gemfile.lint
|
|
68
67
|
steps:
|
|
69
|
-
- uses: actions/checkout@
|
|
68
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
70
69
|
with:
|
|
71
70
|
fetch-depth: 0
|
|
72
71
|
- name: Set up Ruby
|
|
73
|
-
uses: ruby/setup-ruby@
|
|
72
|
+
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
|
|
74
73
|
with:
|
|
75
|
-
ruby-version:
|
|
76
|
-
|
|
74
|
+
ruby-version: '4.0.1'
|
|
75
|
+
bundler-cache: true
|
|
76
|
+
- name: Run rubocop
|
|
77
|
+
run: bundle exec rubocop
|
|
77
78
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
yard-lint:
|
|
80
|
+
timeout-minutes: 5
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
env:
|
|
83
|
+
BUNDLE_GEMFILE: Gemfile.lint
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
86
|
+
with:
|
|
87
|
+
fetch-depth: 0
|
|
88
|
+
- name: Set up Ruby
|
|
89
|
+
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
|
|
90
|
+
with:
|
|
91
|
+
ruby-version: '4.0.1'
|
|
92
|
+
bundler-cache: true
|
|
93
|
+
- name: Run yard-lint
|
|
94
|
+
run: bundle exec yard-lint lib/
|
|
84
95
|
|
|
85
|
-
|
|
96
|
+
lostconf:
|
|
86
97
|
timeout-minutes: 5
|
|
87
98
|
runs-on: ubuntu-latest
|
|
88
|
-
strategy:
|
|
89
|
-
fail-fast: false
|
|
90
99
|
steps:
|
|
91
|
-
- uses: actions/checkout@
|
|
100
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
92
101
|
with:
|
|
93
102
|
fetch-depth: 0
|
|
94
|
-
- name:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
echo "::error::Checksum verification failed. Expected $EXPECTED_SHA256 but got $ACTUAL_SHA256."
|
|
104
|
-
exit 1
|
|
105
|
-
fi
|
|
106
|
-
- name: Run Coditsu
|
|
107
|
-
run: ./coditsu_script.sh
|
|
103
|
+
- name: Set up Node.js
|
|
104
|
+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
|
105
|
+
with:
|
|
106
|
+
node-version: '20'
|
|
107
|
+
cache: 'npm'
|
|
108
|
+
- name: Install dependencies
|
|
109
|
+
run: npm ci
|
|
110
|
+
- name: Run lostconf
|
|
111
|
+
run: npx lostconf --fail-on-stale
|
|
108
112
|
|
|
109
113
|
ci-success:
|
|
110
114
|
name: CI Success
|
|
111
115
|
runs-on: ubuntu-latest
|
|
112
116
|
if: always()
|
|
113
117
|
needs:
|
|
114
|
-
-
|
|
115
|
-
- coditsu
|
|
118
|
+
- rubocop
|
|
116
119
|
- specs
|
|
120
|
+
- yard-lint
|
|
121
|
+
- lostconf
|
|
117
122
|
steps:
|
|
118
123
|
- name: Check all jobs passed
|
|
119
124
|
if: |
|
data/.github/workflows/push.yml
CHANGED
|
@@ -19,12 +19,12 @@ jobs:
|
|
|
19
19
|
id-token: write
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
23
23
|
with:
|
|
24
24
|
fetch-depth: 0
|
|
25
25
|
|
|
26
26
|
- name: Set up Ruby
|
|
27
|
-
uses: ruby/setup-ruby@
|
|
27
|
+
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
|
|
28
28
|
with:
|
|
29
29
|
bundler-cache: false
|
|
30
30
|
|
|
@@ -32,4 +32,4 @@ jobs:
|
|
|
32
32
|
run: |
|
|
33
33
|
bundle install --jobs 4 --retry 3
|
|
34
34
|
|
|
35
|
-
- uses: rubygems/release-gem@
|
|
35
|
+
- uses: rubygems/release-gem@1c162a739e8b4cb21a676e97b087e8268d8fc40b # v1.1.2
|
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
if: github.repository_owner == 'karafka'
|
|
14
14
|
steps:
|
|
15
15
|
- name: Trigger wiki refresh
|
|
16
|
-
uses: peter-evans/repository-dispatch@
|
|
16
|
+
uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4.0.1
|
|
17
17
|
with:
|
|
18
18
|
token: ${{ secrets.WIKI_REPO_TOKEN }}
|
|
19
19
|
repository: karafka/wiki
|
|
@@ -7,7 +7,7 @@ jobs:
|
|
|
7
7
|
verify_action_pins:
|
|
8
8
|
runs-on: ubuntu-latest
|
|
9
9
|
steps:
|
|
10
|
-
- uses: actions/checkout@
|
|
10
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
11
11
|
- name: Check SHA pins
|
|
12
12
|
run: |
|
|
13
13
|
if grep -E -r "uses: .*/.*@(v[0-9]+|main|master)($|[[:space:]]|$)" --include="*.yml" --include="*.yaml" .github/workflows/ | grep -v "#"; then
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
plugins:
|
|
4
|
+
- rubocop-minitest
|
|
5
|
+
- rubocop-performance
|
|
6
|
+
- rubocop-thread_safety
|
|
7
|
+
|
|
8
|
+
inherit_gem:
|
|
9
|
+
standard: config/base.yml
|
|
10
|
+
standard-performance: config/base.yml
|
|
11
|
+
|
|
12
|
+
AllCops:
|
|
13
|
+
NewCops: enable
|
|
14
|
+
TargetRubyVersion: 3.2
|
|
15
|
+
Include:
|
|
16
|
+
- "**/*.rb"
|
|
17
|
+
- "**/*.gemspec"
|
|
18
|
+
- "**/Gemfile"
|
|
19
|
+
- "**/Rakefile"
|
|
20
|
+
- Gemfile.lint
|
|
21
|
+
|
|
22
|
+
# Layout
|
|
23
|
+
Layout/LineLength:
|
|
24
|
+
Max: 100
|
|
25
|
+
|
|
26
|
+
Layout/SpaceInsideHashLiteralBraces:
|
|
27
|
+
EnforcedStyle: space
|
|
28
|
+
|
|
29
|
+
# ThreadSafety
|
|
30
|
+
ThreadSafety/ClassAndModuleAttributes:
|
|
31
|
+
Enabled: false
|
|
32
|
+
|
|
33
|
+
ThreadSafety/ClassInstanceVariable:
|
|
34
|
+
Enabled: false
|
|
35
|
+
|
|
36
|
+
ThreadSafety/NewThread:
|
|
37
|
+
Enabled: false
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.1
|
data/.yard-lint.yml
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# YARD-Lint Configuration
|
|
2
|
+
# See https://github.com/mensfeld/yard-lint for documentation
|
|
3
|
+
|
|
4
|
+
# Global settings for all validators
|
|
5
|
+
AllValidators:
|
|
6
|
+
YardOptions:
|
|
7
|
+
- "--private"
|
|
8
|
+
- "--protected"
|
|
9
|
+
Exclude:
|
|
10
|
+
- .git/**/*
|
|
11
|
+
- vendor/**/*
|
|
12
|
+
- node_modules/**/*
|
|
13
|
+
- test/**/*
|
|
14
|
+
FailOnSeverity: convention
|
|
15
|
+
MinCoverage: 98.0
|
|
16
|
+
DiffMode:
|
|
17
|
+
DefaultBaseRef:
|
|
18
|
+
|
|
19
|
+
# Documentation validators
|
|
20
|
+
Documentation/UndocumentedObjects:
|
|
21
|
+
Description: Checks for classes, modules, and methods without documentation.
|
|
22
|
+
Enabled: true
|
|
23
|
+
Severity: error
|
|
24
|
+
ExcludedMethods:
|
|
25
|
+
- initialize/0
|
|
26
|
+
- "/^_/"
|
|
27
|
+
|
|
28
|
+
Documentation/UndocumentedMethodArguments:
|
|
29
|
+
Description: Checks for method parameters without @param tags.
|
|
30
|
+
Enabled: true
|
|
31
|
+
Severity: error
|
|
32
|
+
|
|
33
|
+
Documentation/UndocumentedBooleanMethods:
|
|
34
|
+
Description: Checks that question mark methods document their boolean return.
|
|
35
|
+
Enabled: true
|
|
36
|
+
Severity: error
|
|
37
|
+
|
|
38
|
+
Documentation/UndocumentedOptions:
|
|
39
|
+
Description: Detects methods with options hash parameters but no @option tags.
|
|
40
|
+
Enabled: true
|
|
41
|
+
Severity: error
|
|
42
|
+
|
|
43
|
+
Documentation/MarkdownSyntax:
|
|
44
|
+
Description: Detects common markdown syntax errors in documentation.
|
|
45
|
+
Enabled: true
|
|
46
|
+
Severity: error
|
|
47
|
+
|
|
48
|
+
Documentation/EmptyCommentLine:
|
|
49
|
+
Description: Detects empty comment lines at the start or end of documentation blocks.
|
|
50
|
+
Enabled: true
|
|
51
|
+
Severity: convention
|
|
52
|
+
EnabledPatterns:
|
|
53
|
+
Leading: true
|
|
54
|
+
Trailing: true
|
|
55
|
+
|
|
56
|
+
Documentation/BlankLineBeforeDefinition:
|
|
57
|
+
Description: Detects blank lines between YARD documentation and method definition.
|
|
58
|
+
Enabled: true
|
|
59
|
+
Severity: convention
|
|
60
|
+
OrphanedSeverity: convention
|
|
61
|
+
EnabledPatterns:
|
|
62
|
+
SingleBlankLine: true
|
|
63
|
+
OrphanedDocs: true
|
|
64
|
+
|
|
65
|
+
# Tags validators
|
|
66
|
+
Tags/Order:
|
|
67
|
+
Description: Enforces consistent ordering of YARD tags.
|
|
68
|
+
Enabled: true
|
|
69
|
+
Severity: error
|
|
70
|
+
EnforcedOrder:
|
|
71
|
+
- param
|
|
72
|
+
- option
|
|
73
|
+
- return
|
|
74
|
+
- raise
|
|
75
|
+
- example
|
|
76
|
+
|
|
77
|
+
Tags/InvalidTypes:
|
|
78
|
+
Description: Validates type definitions in @param, @return, @option tags.
|
|
79
|
+
Enabled: true
|
|
80
|
+
Severity: error
|
|
81
|
+
ValidatedTags:
|
|
82
|
+
- param
|
|
83
|
+
- option
|
|
84
|
+
- return
|
|
85
|
+
|
|
86
|
+
Tags/TypeSyntax:
|
|
87
|
+
Description: Validates YARD type syntax using YARD parser.
|
|
88
|
+
Enabled: true
|
|
89
|
+
Severity: error
|
|
90
|
+
ValidatedTags:
|
|
91
|
+
- param
|
|
92
|
+
- option
|
|
93
|
+
- return
|
|
94
|
+
- yieldreturn
|
|
95
|
+
|
|
96
|
+
Tags/MeaninglessTag:
|
|
97
|
+
Description: Detects @param/@option tags on classes, modules, or constants.
|
|
98
|
+
Enabled: true
|
|
99
|
+
Severity: error
|
|
100
|
+
CheckedTags:
|
|
101
|
+
- param
|
|
102
|
+
- option
|
|
103
|
+
InvalidObjectTypes:
|
|
104
|
+
- class
|
|
105
|
+
- module
|
|
106
|
+
- constant
|
|
107
|
+
|
|
108
|
+
Tags/CollectionType:
|
|
109
|
+
Description: Validates Hash collection syntax consistency.
|
|
110
|
+
Enabled: true
|
|
111
|
+
Severity: error
|
|
112
|
+
EnforcedStyle: long
|
|
113
|
+
ValidatedTags:
|
|
114
|
+
- param
|
|
115
|
+
- option
|
|
116
|
+
- return
|
|
117
|
+
- yieldreturn
|
|
118
|
+
|
|
119
|
+
Tags/TagTypePosition:
|
|
120
|
+
Description: Validates type annotation position in tags.
|
|
121
|
+
Enabled: true
|
|
122
|
+
Severity: error
|
|
123
|
+
CheckedTags:
|
|
124
|
+
- param
|
|
125
|
+
- option
|
|
126
|
+
EnforcedStyle: type_after_name
|
|
127
|
+
|
|
128
|
+
Tags/ApiTags:
|
|
129
|
+
Description: Enforces @api tags on public objects.
|
|
130
|
+
Enabled: false
|
|
131
|
+
Severity: error
|
|
132
|
+
AllowedApis:
|
|
133
|
+
- public
|
|
134
|
+
- private
|
|
135
|
+
- internal
|
|
136
|
+
|
|
137
|
+
Tags/OptionTags:
|
|
138
|
+
Description: Requires @option tags for methods with options parameters.
|
|
139
|
+
Enabled: true
|
|
140
|
+
Severity: error
|
|
141
|
+
|
|
142
|
+
Tags/ExampleSyntax:
|
|
143
|
+
Description: Validates Ruby syntax in @example tags.
|
|
144
|
+
Enabled: true
|
|
145
|
+
Severity: warning
|
|
146
|
+
|
|
147
|
+
Tags/RedundantParamDescription:
|
|
148
|
+
Description: Detects meaningless parameter descriptions that add no value.
|
|
149
|
+
Enabled: true
|
|
150
|
+
Severity: convention
|
|
151
|
+
CheckedTags:
|
|
152
|
+
- param
|
|
153
|
+
- option
|
|
154
|
+
Articles:
|
|
155
|
+
- The
|
|
156
|
+
- the
|
|
157
|
+
- A
|
|
158
|
+
- a
|
|
159
|
+
- An
|
|
160
|
+
- an
|
|
161
|
+
MaxRedundantWords: 6
|
|
162
|
+
GenericTerms:
|
|
163
|
+
- object
|
|
164
|
+
- instance
|
|
165
|
+
- value
|
|
166
|
+
- data
|
|
167
|
+
- item
|
|
168
|
+
- element
|
|
169
|
+
EnabledPatterns:
|
|
170
|
+
ArticleParam: true
|
|
171
|
+
PossessiveParam: true
|
|
172
|
+
TypeRestatement: true
|
|
173
|
+
ParamToVerb: true
|
|
174
|
+
IdPattern: true
|
|
175
|
+
DirectionalDate: true
|
|
176
|
+
TypeGeneric: true
|
|
177
|
+
|
|
178
|
+
Tags/InformalNotation:
|
|
179
|
+
Description: Detects informal tag notation patterns like "Note:" instead of @note.
|
|
180
|
+
Enabled: true
|
|
181
|
+
Severity: warning
|
|
182
|
+
CaseSensitive: false
|
|
183
|
+
RequireStartOfLine: true
|
|
184
|
+
Patterns:
|
|
185
|
+
Note: "@note"
|
|
186
|
+
Todo: "@todo"
|
|
187
|
+
TODO: "@todo"
|
|
188
|
+
FIXME: "@todo"
|
|
189
|
+
See: "@see"
|
|
190
|
+
See also: "@see"
|
|
191
|
+
Warning: "@deprecated"
|
|
192
|
+
Deprecated: "@deprecated"
|
|
193
|
+
Author: "@author"
|
|
194
|
+
Version: "@version"
|
|
195
|
+
Since: "@since"
|
|
196
|
+
Returns: "@return"
|
|
197
|
+
Raises: "@raise"
|
|
198
|
+
Example: "@example"
|
|
199
|
+
|
|
200
|
+
Tags/NonAsciiType:
|
|
201
|
+
Description: Detects non-ASCII characters in type annotations.
|
|
202
|
+
Enabled: true
|
|
203
|
+
Severity: warning
|
|
204
|
+
ValidatedTags:
|
|
205
|
+
- param
|
|
206
|
+
- option
|
|
207
|
+
- return
|
|
208
|
+
- yieldreturn
|
|
209
|
+
- yieldparam
|
|
210
|
+
|
|
211
|
+
Tags/TagGroupSeparator:
|
|
212
|
+
Description: Enforces blank line separators between different YARD tag groups.
|
|
213
|
+
Enabled: false
|
|
214
|
+
Severity: convention
|
|
215
|
+
TagGroups:
|
|
216
|
+
param:
|
|
217
|
+
- param
|
|
218
|
+
- option
|
|
219
|
+
return:
|
|
220
|
+
- return
|
|
221
|
+
error:
|
|
222
|
+
- raise
|
|
223
|
+
- throws
|
|
224
|
+
example:
|
|
225
|
+
- example
|
|
226
|
+
meta:
|
|
227
|
+
- see
|
|
228
|
+
- note
|
|
229
|
+
- todo
|
|
230
|
+
- deprecated
|
|
231
|
+
- since
|
|
232
|
+
- version
|
|
233
|
+
- api
|
|
234
|
+
yield:
|
|
235
|
+
- yield
|
|
236
|
+
- yieldparam
|
|
237
|
+
- yieldreturn
|
|
238
|
+
RequireAfterDescription: false
|
|
239
|
+
|
|
240
|
+
# Warnings validators - catches YARD parser errors
|
|
241
|
+
Warnings/UnknownTag:
|
|
242
|
+
Description: Detects unknown YARD tags.
|
|
243
|
+
Enabled: true
|
|
244
|
+
Severity: error
|
|
245
|
+
|
|
246
|
+
Warnings/UnknownDirective:
|
|
247
|
+
Description: Detects unknown YARD directives.
|
|
248
|
+
Enabled: true
|
|
249
|
+
Severity: error
|
|
250
|
+
|
|
251
|
+
Warnings/InvalidTagFormat:
|
|
252
|
+
Description: Detects malformed tag syntax.
|
|
253
|
+
Enabled: true
|
|
254
|
+
Severity: error
|
|
255
|
+
|
|
256
|
+
Warnings/InvalidDirectiveFormat:
|
|
257
|
+
Description: Detects malformed directive syntax.
|
|
258
|
+
Enabled: true
|
|
259
|
+
Severity: error
|
|
260
|
+
|
|
261
|
+
Warnings/DuplicatedParameterName:
|
|
262
|
+
Description: Detects duplicate @param tags.
|
|
263
|
+
Enabled: true
|
|
264
|
+
Severity: error
|
|
265
|
+
|
|
266
|
+
Warnings/UnknownParameterName:
|
|
267
|
+
Description: Detects @param tags for non-existent parameters.
|
|
268
|
+
Enabled: true
|
|
269
|
+
Severity: error
|
|
270
|
+
|
|
271
|
+
# Semantic validators
|
|
272
|
+
Semantic/AbstractMethods:
|
|
273
|
+
Description: Ensures @abstract methods do not have real implementations.
|
|
274
|
+
Enabled: true
|
|
275
|
+
Severity: error
|
data/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
# Karafka Core Changelog
|
|
2
2
|
|
|
3
|
+
## 2.5.9 (2026-03-02)
|
|
4
|
+
- [Enhancement] Optimize `StatisticsDecorator` to eliminate per-hash Array allocations by using `each_pair` with a per-call pending-writes buffer instead of `current.keys.each`, reducing allocations from tens of thousands to one per call at scale.
|
|
5
|
+
- [Enhancement] Inline `StatisticsDecorator#append` and `#suffix_keys_for` into `#diff` to reduce method call overhead by ~96% (from ~915k to ~39k calls at 6400 partitions).
|
|
6
|
+
- [Enhancement] Support `excluded_keys` option in `StatisticsDecorator` to skip decoration of unused librdkafka statistics subtrees (e.g. broker toppars, window stats), yielding ~28% additional speedup at scale.
|
|
7
|
+
|
|
8
|
+
## 2.5.8 (2025-11-23)
|
|
9
|
+
- [Enhancement] Memoize `StatisticsDecorator` suffix keys to reduce string allocations (#268).
|
|
10
|
+
|
|
3
11
|
## 2.5.7 (2025-09-28)
|
|
4
12
|
- [Enhancement] Optimize `Node#deep_dup` to reduce array allocations during configuration deep copying.
|
|
5
13
|
- [Enhancement] Optimize `Result#initialize` to use shared `EMPTY_HASH` constant for successful validations.
|
|
6
14
|
- [Enhancement] Optimize `StatisticsDecorator#append` string concatenation to reduce allocations.
|
|
7
15
|
- [Enhancement] Optimize `Notifications#instrument` payload handling to avoid unnecessary hash merges for empty payloads.
|
|
8
|
-
- [
|
|
16
|
+
- **[EOL]** Remove Ruby 3.1 support due to EOL.
|
|
9
17
|
|
|
10
18
|
## 2.5.6 (2025-09-02)
|
|
11
19
|
- [Change] Normalize how libs and dependencies are required (no functional change for the end user)
|
|
@@ -55,7 +63,7 @@
|
|
|
55
63
|
- [Change] Allow `karafka-rdkafka` `0.18.0`.
|
|
56
64
|
|
|
57
65
|
## 2.4.5 (2024-11-19)
|
|
58
|
-
- **[
|
|
66
|
+
- **[EOL]** Drop Ruby `3.0` support according to the EOL schedule.
|
|
59
67
|
- [Enhancement] Support listeners inspection via `#listeners`.
|
|
60
68
|
- [Fix] Restore `#available_events` notifications bus method.
|
|
61
69
|
- [Change] Set minimum `karafka-rdkafka` on `0.17.6` to support new features.
|
|
@@ -78,7 +86,7 @@
|
|
|
78
86
|
- [Enhancement] Allow clearing one event type (dorner).
|
|
79
87
|
|
|
80
88
|
## 2.4.0 (2024-04-26)
|
|
81
|
-
- **[
|
|
89
|
+
- **[EOL]** Drop Ruby `2.7` support.
|
|
82
90
|
- [Enhancement] Provide necessary alterations for custom oauth token callbacks to operate.
|
|
83
91
|
- [Change] Set minimum `karafka-rdkafka` on `0.15.0` to support new features.
|
|
84
92
|
|
|
@@ -93,7 +101,7 @@
|
|
|
93
101
|
- [Enhancement] Set backtrace for errors propagated via the errors callbacks.
|
|
94
102
|
|
|
95
103
|
## 2.2.5 (2023-10-31)
|
|
96
|
-
- [
|
|
104
|
+
- **[EOL]** Drop support for Ruby 2.6 due to incompatibilities in usage of `ObjectSpace::WeakMap`
|
|
97
105
|
- [Change] Set minimum `karafka-rdkafka` on `0.13.8` to support consumer `#position`.
|
|
98
106
|
|
|
99
107
|
## 2.2.4 (2023-10-25)
|
data/Gemfile
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
source
|
|
4
|
-
|
|
5
|
-
plugin 'diffend'
|
|
3
|
+
source "https://rubygems.org"
|
|
6
4
|
|
|
7
5
|
gemspec
|
|
8
6
|
|
|
9
7
|
group :test do
|
|
10
|
-
gem
|
|
11
|
-
gem
|
|
12
|
-
gem
|
|
13
|
-
gem
|
|
8
|
+
gem "byebug"
|
|
9
|
+
gem "minitest"
|
|
10
|
+
gem "simplecov"
|
|
11
|
+
gem "warning"
|
|
14
12
|
end
|
data/Gemfile.lint
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
# Documentation linting
|
|
6
|
+
gem "yard-lint"
|
|
7
|
+
|
|
8
|
+
# Code style (StandardRB via RuboCop)
|
|
9
|
+
gem "standard"
|
|
10
|
+
gem "standard-performance"
|
|
11
|
+
gem "rubocop-performance"
|
|
12
|
+
gem "rubocop-minitest"
|
|
13
|
+
gem "rubocop-thread_safety"
|