karafka 2.5.1.beta1 → 2.5.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.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci_linux_ubuntu_x86_64_gnu.yml +15 -29
  3. data/.github/workflows/ci_macos_arm64.yml +5 -2
  4. data/.github/workflows/push.yml +2 -2
  5. data/.github/workflows/trigger-wiki-refresh.yml +1 -1
  6. data/.ruby-version +1 -1
  7. data/CHANGELOG.md +22 -5
  8. data/Gemfile +0 -2
  9. data/Gemfile.lock +33 -34
  10. data/LICENSE-COMM +10 -10
  11. data/README.md +1 -1
  12. data/bin/integrations +2 -1
  13. data/bin/rspecs +4 -0
  14. data/config/locales/errors.yml +6 -4
  15. data/config/locales/pro_errors.yml +5 -4
  16. data/docker-compose.yml +1 -1
  17. data/examples/payloads/json/sample_set_02/download.json +191 -0
  18. data/examples/payloads/json/sample_set_03/event_type_1.json +18 -0
  19. data/examples/payloads/json/sample_set_03/event_type_2.json +263 -0
  20. data/examples/payloads/json/sample_set_03/event_type_3.json +41 -0
  21. data/karafka.gemspec +4 -4
  22. data/lib/active_job/queue_adapters/karafka_adapter.rb +1 -1
  23. data/lib/karafka/active_job/consumer.rb +5 -1
  24. data/lib/karafka/active_job/current_attributes/job_wrapper.rb +45 -0
  25. data/lib/karafka/active_job/current_attributes/loading.rb +1 -1
  26. data/lib/karafka/active_job/current_attributes/persistence.rb +19 -7
  27. data/lib/karafka/active_job/current_attributes.rb +1 -0
  28. data/lib/karafka/active_job/deserializer.rb +61 -0
  29. data/lib/karafka/active_job/dispatcher.rb +32 -12
  30. data/lib/karafka/active_job/job_options_contract.rb +2 -4
  31. data/lib/karafka/admin/acl.rb +8 -4
  32. data/lib/karafka/admin/configs/config.rb +6 -4
  33. data/lib/karafka/admin/consumer_groups.rb +74 -4
  34. data/lib/karafka/admin/topics.rb +40 -7
  35. data/lib/karafka/admin.rb +13 -4
  36. data/lib/karafka/base_consumer.rb +5 -5
  37. data/lib/karafka/cli/base.rb +1 -1
  38. data/lib/karafka/cli/contracts/server.rb +2 -4
  39. data/lib/karafka/cli/install.rb +1 -1
  40. data/lib/karafka/cli/server.rb +1 -1
  41. data/lib/karafka/cli/swarm.rb +1 -1
  42. data/lib/karafka/cli/topics/align.rb +1 -1
  43. data/lib/karafka/cli/topics/repartition.rb +2 -2
  44. data/lib/karafka/connection/client.rb +16 -5
  45. data/lib/karafka/connection/conductor.rb +1 -1
  46. data/lib/karafka/connection/listeners_batch.rb +2 -3
  47. data/lib/karafka/connection/messages_buffer.rb +2 -4
  48. data/lib/karafka/connection/mode.rb +75 -0
  49. data/lib/karafka/connection/proxy.rb +11 -7
  50. data/lib/karafka/embedded.rb +1 -1
  51. data/lib/karafka/env.rb +1 -2
  52. data/lib/karafka/execution_mode.rb +103 -0
  53. data/lib/karafka/helpers/interval_runner.rb +4 -1
  54. data/lib/karafka/instrumentation/assignments_tracker.rb +17 -0
  55. data/lib/karafka/instrumentation/monitor.rb +1 -1
  56. data/lib/karafka/instrumentation/notifications.rb +1 -0
  57. data/lib/karafka/instrumentation/vendors/appsignal/base.rb +2 -3
  58. data/lib/karafka/instrumentation/vendors/datadog/logger_listener.rb +2 -3
  59. data/lib/karafka/instrumentation/vendors/datadog/metrics_listener.rb +8 -9
  60. data/lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb +2 -3
  61. data/lib/karafka/messages/builders/batch_metadata.rb +1 -1
  62. data/lib/karafka/messages/builders/message.rb +1 -1
  63. data/lib/karafka/messages/messages.rb +2 -3
  64. data/lib/karafka/patches/rdkafka/bindings.rb +6 -6
  65. data/lib/karafka/patches/rdkafka/opaque.rb +1 -1
  66. data/lib/karafka/pro/active_job/dispatcher.rb +7 -3
  67. data/lib/karafka/pro/active_job/job_options_contract.rb +2 -4
  68. data/lib/karafka/pro/cleaner/messages/messages.rb +2 -3
  69. data/lib/karafka/pro/cli/contracts/server.rb +2 -4
  70. data/lib/karafka/pro/cli/parallel_segments/base.rb +1 -2
  71. data/lib/karafka/pro/cli/parallel_segments/collapse.rb +2 -2
  72. data/lib/karafka/pro/cli/parallel_segments/distribute.rb +2 -2
  73. data/lib/karafka/pro/connection/manager.rb +2 -2
  74. data/lib/karafka/pro/encryption/contracts/config.rb +4 -6
  75. data/lib/karafka/pro/encryption/messages/parser.rb +3 -3
  76. data/lib/karafka/pro/instrumentation/performance_tracker.rb +3 -3
  77. data/lib/karafka/pro/iterator/expander.rb +1 -1
  78. data/lib/karafka/pro/iterator/tpl_builder.rb +1 -1
  79. data/lib/karafka/pro/iterator.rb +2 -2
  80. data/lib/karafka/pro/processing/coordinators/errors_tracker.rb +2 -3
  81. data/lib/karafka/pro/processing/coordinators/filters_applier.rb +3 -3
  82. data/lib/karafka/pro/processing/filters/delayer.rb +1 -1
  83. data/lib/karafka/pro/processing/filters/expirer.rb +1 -1
  84. data/lib/karafka/pro/processing/filters/throttler.rb +1 -1
  85. data/lib/karafka/pro/processing/schedulers/default.rb +2 -4
  86. data/lib/karafka/pro/processing/strategies/lrj/default.rb +2 -4
  87. data/lib/karafka/pro/processing/strategies/vp/default.rb +2 -4
  88. data/lib/karafka/pro/processing/subscription_groups_coordinator.rb +2 -3
  89. data/lib/karafka/pro/recurring_tasks/contracts/config.rb +2 -4
  90. data/lib/karafka/pro/recurring_tasks/contracts/task.rb +2 -4
  91. data/lib/karafka/pro/recurring_tasks/dispatcher.rb +6 -5
  92. data/lib/karafka/pro/recurring_tasks/schedule.rb +4 -6
  93. data/lib/karafka/pro/recurring_tasks.rb +8 -5
  94. data/lib/karafka/pro/routing/features/adaptive_iterator/contracts/topic.rb +2 -4
  95. data/lib/karafka/pro/routing/features/dead_letter_queue/contracts/topic.rb +2 -4
  96. data/lib/karafka/pro/routing/features/delaying/contracts/topic.rb +2 -4
  97. data/lib/karafka/pro/routing/features/delaying/topic.rb +2 -4
  98. data/lib/karafka/pro/routing/features/direct_assignments/contracts/consumer_group.rb +4 -8
  99. data/lib/karafka/pro/routing/features/direct_assignments/contracts/topic.rb +5 -7
  100. data/lib/karafka/pro/routing/features/direct_assignments/subscription_group.rb +7 -6
  101. data/lib/karafka/pro/routing/features/direct_assignments/topic.rb +2 -2
  102. data/lib/karafka/pro/routing/features/expiring/contracts/topic.rb +2 -4
  103. data/lib/karafka/pro/routing/features/expiring/topic.rb +2 -4
  104. data/lib/karafka/pro/routing/features/filtering/contracts/topic.rb +2 -4
  105. data/lib/karafka/pro/routing/features/filtering/topic.rb +2 -3
  106. data/lib/karafka/pro/routing/features/inline_insights/contracts/topic.rb +2 -4
  107. data/lib/karafka/pro/routing/features/long_running_job/contracts/topic.rb +2 -4
  108. data/lib/karafka/pro/routing/features/multiplexing/contracts/topic.rb +3 -5
  109. data/lib/karafka/pro/routing/features/non_blocking_job/topic.rb +3 -3
  110. data/lib/karafka/pro/routing/features/offset_metadata/contracts/topic.rb +2 -4
  111. data/lib/karafka/pro/routing/features/parallel_segments/contracts/consumer_group.rb +2 -4
  112. data/lib/karafka/pro/routing/features/patterns/contracts/consumer_group.rb +3 -5
  113. data/lib/karafka/pro/routing/features/patterns/contracts/pattern.rb +2 -4
  114. data/lib/karafka/pro/routing/features/patterns/contracts/topic.rb +2 -4
  115. data/lib/karafka/pro/routing/features/pausing/config.rb +26 -0
  116. data/lib/karafka/pro/routing/features/pausing/contracts/topic.rb +17 -11
  117. data/lib/karafka/pro/routing/features/pausing/topic.rb +69 -8
  118. data/lib/karafka/pro/routing/features/periodic_job/contracts/topic.rb +2 -4
  119. data/lib/karafka/pro/routing/features/recurring_tasks/contracts/topic.rb +2 -4
  120. data/lib/karafka/pro/routing/features/scheduled_messages/contracts/topic.rb +2 -4
  121. data/lib/karafka/pro/routing/features/swarm/contracts/routing.rb +2 -4
  122. data/lib/karafka/pro/routing/features/swarm/contracts/topic.rb +6 -8
  123. data/lib/karafka/pro/routing/features/throttling/contracts/topic.rb +2 -4
  124. data/lib/karafka/pro/routing/features/virtual_partitions/contracts/topic.rb +2 -4
  125. data/lib/karafka/pro/scheduled_messages/contracts/config.rb +2 -4
  126. data/lib/karafka/pro/scheduled_messages/contracts/message.rb +2 -4
  127. data/lib/karafka/pro/scheduled_messages.rb +4 -6
  128. data/lib/karafka/pro/swarm/liveness_listener.rb +2 -2
  129. data/lib/karafka/processing/coordinator.rb +2 -4
  130. data/lib/karafka/processing/coordinators_buffer.rb +2 -3
  131. data/lib/karafka/processing/executor.rb +2 -3
  132. data/lib/karafka/processing/jobs/base.rb +2 -3
  133. data/lib/karafka/processing/jobs_queue.rb +1 -1
  134. data/lib/karafka/processing/workers_batch.rb +2 -3
  135. data/lib/karafka/railtie.rb +1 -0
  136. data/lib/karafka/routing/activity_manager.rb +2 -2
  137. data/lib/karafka/routing/builder.rb +5 -7
  138. data/lib/karafka/routing/consumer_group.rb +4 -6
  139. data/lib/karafka/routing/contracts/consumer_group.rb +3 -5
  140. data/lib/karafka/routing/contracts/routing.rb +2 -4
  141. data/lib/karafka/routing/contracts/topic.rb +2 -4
  142. data/lib/karafka/routing/features/active_job/contracts/topic.rb +2 -4
  143. data/lib/karafka/routing/features/active_job/topic.rb +6 -0
  144. data/lib/karafka/routing/features/dead_letter_queue/contracts/topic.rb +2 -4
  145. data/lib/karafka/routing/features/declaratives/contracts/topic.rb +3 -5
  146. data/lib/karafka/routing/features/deserializers/contracts/topic.rb +2 -4
  147. data/lib/karafka/routing/features/eofed/contracts/topic.rb +2 -4
  148. data/lib/karafka/routing/features/inline_insights/contracts/topic.rb +2 -4
  149. data/lib/karafka/routing/features/manual_offset_management/contracts/topic.rb +2 -4
  150. data/lib/karafka/routing/topics.rb +4 -9
  151. data/lib/karafka/server.rb +18 -6
  152. data/lib/karafka/setup/config.rb +66 -9
  153. data/lib/karafka/setup/contracts/config.rb +12 -10
  154. data/lib/karafka/setup/defaults_injector.rb +3 -2
  155. data/lib/karafka/setup/dsl.rb +2 -3
  156. data/lib/karafka/swarm/liveness_listener.rb +2 -3
  157. data/lib/karafka/swarm/node.rb +1 -1
  158. data/lib/karafka/swarm/supervisor.rb +2 -2
  159. data/lib/karafka/version.rb +1 -1
  160. data/lib/karafka.rb +2 -2
  161. metadata +15 -8
  162. data/.diffend.yml +0 -3
  163. data/lib/karafka/processing/timed_queue.rb +0 -62
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1cbd8652ac95b72e16bea2b7468e1c8a55655455c52d968cd1c5b444f251149f
4
- data.tar.gz: 958b38561cbd526fa39940878f29ca0c0ae9361ec32567968778837bfcdb4c75
3
+ metadata.gz: bf868e62a336390b27672a8315accbc535b698cef8e0393a93fbae5e36d3ae87
4
+ data.tar.gz: 1bafbd50c3e3c0544fc36e34a3ce01808eda30df67b991aba63200a9453cdc35
5
5
  SHA512:
6
- metadata.gz: 41f3d899470eb73db13331b202ded7bd0c85368dbea9d61211560504fe0533e2a58cd22337c89421e93a0765174a6097e24619f7b42b393410210df3057141c8
7
- data.tar.gz: 6876a17427d509824f3126b572fe9c101b1cb60dd40ed4e50797d3fd02dabe6256e90c5eff9c81a6709f4b832274462aee0b9bd55e261bc75ac5722b8bafd2ad
6
+ metadata.gz: 57714d5fa6d68c7dde6c911a658793d8898531349922109898038e848cc304ee9316b88023095eb0139b74f8c40a155760e998eb36058e2438d2142c566702fa
7
+ data.tar.gz: ac31c2972452d8a17e8797d403fb247f85f9179373329a0519e5f9caece5eab6f1dcd3465b2eae73f3f452a9e46f6c30616cb0f6e25712b2a3ae239fcc5de698
@@ -18,28 +18,6 @@ env:
18
18
  BUNDLE_JOBS: 4
19
19
 
20
20
  jobs:
21
- diffend:
22
- runs-on: ubuntu-latest
23
- timeout-minutes: 5
24
- strategy:
25
- fail-fast: false
26
- steps:
27
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
28
- with:
29
- fetch-depth: 0
30
-
31
- - name: Set up Ruby
32
- uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb # v1.257.0
33
- with:
34
- ruby-version: 3.4
35
- bundler-cache: true
36
-
37
- - name: Install Diffend plugin
38
- run: bundle plugin install diffend
39
-
40
- - name: Bundle Secure
41
- run: bundle secure
42
-
43
21
  karafka-checksum:
44
22
  runs-on: ubuntu-latest
45
23
  timeout-minutes: 5
@@ -87,7 +65,6 @@ jobs:
87
65
  specs:
88
66
  timeout-minutes: 15
89
67
  runs-on: ubuntu-latest
90
- needs: diffend
91
68
  env:
92
69
  BUNDLE_FORCE_RUBY_PLATFORM: ${{ matrix.force_ruby_platform }}
93
70
  strategy:
@@ -113,8 +90,12 @@ jobs:
113
90
  run: |
114
91
  docker compose up -d || (sleep 5 && docker compose up -d)
115
92
 
93
+ - name: Remove Gemfile.lock for Ruby dev/preview versions
94
+ if: contains(matrix.ruby, 'dev') || contains(matrix.ruby, 'preview') || contains(matrix.ruby, 'rc')
95
+ run: rm -f Gemfile.lock
96
+
116
97
  - name: Set up Ruby
117
- uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb # v1.257.0
98
+ uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
118
99
  with:
119
100
  ruby-version: ${{matrix.ruby}}
120
101
  bundler-cache: true
@@ -138,7 +119,6 @@ jobs:
138
119
  integrations_oss:
139
120
  timeout-minutes: 30
140
121
  runs-on: ubuntu-latest
141
- needs: diffend
142
122
  env:
143
123
  BUNDLE_FORCE_RUBY_PLATFORM: ${{ matrix.force_ruby_platform }}
144
124
  strategy:
@@ -165,7 +145,7 @@ jobs:
165
145
  docker compose up -d || (sleep 5 && docker compose up -d)
166
146
 
167
147
  - name: Set up Ruby
168
- uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb # v1.257.0
148
+ uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
169
149
  with:
170
150
  # Do not use cache here as we run bundle install also later in some of the integration
171
151
  # tests and we need to be able to run it without cache
@@ -185,6 +165,10 @@ jobs:
185
165
  chmod -R o-w /opt/hostedtoolcache/Ruby/3*/x64/lib/ruby/gems/3*/gems
186
166
  chmod +t /opt/hostedtoolcache/Ruby/3*/x64/lib/ruby/gems/3*/gems
187
167
 
168
+ - name: Force Ruby platform for ffi gem on dev/preview Ruby
169
+ if: contains(matrix.ruby, 'dev') || contains(matrix.ruby, 'preview') || contains(matrix.ruby, 'rc')
170
+ run: bundle config set force_ruby_platform ffi
171
+
188
172
  - name: Bundle install
189
173
  run: |
190
174
  bundle config set without development
@@ -206,7 +190,6 @@ jobs:
206
190
  integrations_pro:
207
191
  timeout-minutes: 45
208
192
  runs-on: ubuntu-latest
209
- needs: diffend
210
193
  env:
211
194
  BUNDLE_FORCE_RUBY_PLATFORM: ${{ matrix.force_ruby_platform }}
212
195
  strategy:
@@ -233,7 +216,7 @@ jobs:
233
216
  docker compose up -d || (sleep 5 && docker compose up -d)
234
217
 
235
218
  - name: Set up Ruby
236
- uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb # v1.257.0
219
+ uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
237
220
  with:
238
221
  ruby-version: ${{matrix.ruby}}
239
222
  bundler: 'latest'
@@ -244,6 +227,10 @@ jobs:
244
227
  gem update --system
245
228
  bundle config set without 'tools benchmarks docs'
246
229
 
230
+ - name: Force Ruby platform for ffi gem on dev/preview Ruby
231
+ if: contains(matrix.ruby, 'dev') || contains(matrix.ruby, 'preview') || contains(matrix.ruby, 'rc')
232
+ run: bundle config set force_ruby_platform ffi
233
+
247
234
  - name: Bundle install
248
235
  run: |
249
236
  bundle config set without development
@@ -276,7 +263,6 @@ jobs:
276
263
  runs-on: ubuntu-latest
277
264
  if: always()
278
265
  needs:
279
- - diffend
280
266
  - karafka-checksum
281
267
  - coditsu
282
268
  - specs
@@ -112,14 +112,17 @@ jobs:
112
112
  sleep 2
113
113
  done
114
114
 
115
+ - name: Remove Gemfile.lock for Ruby dev/preview versions
116
+ if: contains(matrix.ruby, 'dev') || contains(matrix.ruby, 'preview') || contains(matrix.ruby, 'rc')
117
+ run: rm -f Gemfile.lock
118
+
115
119
  - name: Set up Ruby
116
- uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb # v1.257.0
120
+ uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
117
121
  with:
118
122
  ruby-version: ${{ matrix.ruby }}
119
123
  bundler-cache: true
120
124
  bundler: 'latest'
121
125
 
122
-
123
126
  - name: Run swarm unit specs
124
127
  run: bundle exec rspec spec/lib/karafka/swarm/ --tag mode:fork
125
128
 
@@ -24,7 +24,7 @@ jobs:
24
24
  fetch-depth: 0
25
25
 
26
26
  - name: Set up Ruby
27
- uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb # v1.257.0
27
+ uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.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@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
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@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3.0.0
16
+ uses: peter-evans/repository-dispatch@5fc4efd1a4797ddb68ffd0714a238564e4cc0e6f # v4.0.0
17
17
  with:
18
18
  token: ${{ secrets.WIKI_REPO_TOKEN }}
19
19
  repository: karafka/wiki
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.4.5
1
+ 3.4.7
data/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  # Karafka Framework Changelog
2
2
 
3
- ## 2.5.1 (Unreleased)
3
+ ## 2.5.2 (2025-10-31)
4
+ - **[EOL]** Remove Rails 7.1 support according to EOL while not blocking Rails 7.1 usage.
5
+ - [Enhancement] Retry on the KIP-848 `stale_member_epoch` error.
6
+ - [Enhancement] Provide `Karafka::Admin.trigger_rebalance` API to programmatically trigger consumer group rebalances for operational purposes.
7
+ - [Enhancement] Nest pause configuration under `config.pause.*` namespace (`config.pause.timeout`, `config.pause.max_timeout`, `config.pause.with_exponential_backoff`) while maintaining backwards compatibility with the old flat API (`config.pause_timeout`, etc.) via delegation methods that will be removed in Karafka 2.6.
8
+ - [Enhancement] Detect and track involuntary assignment loss during long-running processing that exceeds `max.poll.interval.ms` via `client.events_poll` event and automatically update `Karafka::App.assignments` to reflect reality.
9
+ - [Enhancement] Extend `Karafka::Admin.read_watermark_offsets` to accept either a single topic with partition or a hash of multiple topics with partitions, using a single consumer instance for improved efficiency when querying multiple partitions.
10
+ - [Enhancement] Add configurable `Karafka::ActiveJob::Deserializer` to support custom serialization formats (Avro, Protobuf, etc.) for ActiveJob payloads.
11
+ - [Fix] Fix ActiveJob Continuation invalid class reference bug.
12
+
13
+ ## 2.5.1 (2025-09-29)
14
+ - **[EOL]** Remove Ruby 3.1 support according to EOL.
4
15
  - **[Feature]** Support Swarm mode on MacOS.
5
16
  - [Enhancement] Support past `dispatch_at` times with `jitter: 0` in the OSS Karafka to support ActiveJob continuation.
6
17
  - [Enhancement] Use direct topic dispatches when `dispatch_at` is used for past times to bypass Scheduled Messages flow.
@@ -12,20 +23,26 @@
12
23
  - [Enhancement] Include consumer group, subscription group and other details in error logs for key error locations.
13
24
  - [Enhancement] Inherit from `ActiveJob::QueueAdapters::AbstractAdapter` when possible for ActiveJob base class.
14
25
  - [Enhancement] Disable Nagle algorithm by default for improved network performance.
26
+ - [Enhancement] Optimize the messages buffer array memory allocation pattern.
15
27
  - [Maintenance] Add basic direct DD integration spec via DD gem karafka monitoring feature.
28
+ - [Maintenance] Add integration specs for WaterDrop connection pool usage from within consumers.
16
29
  - [Refactoring] Comprehensive Admin module refactoring: Extract topic operations into Admin::Topics class and consumer group operations into Admin::ConsumerGroups class with proper inheritance hierarchy, cross-class method usage optimization, and constants moved to appropriate locations where they are actually used.
17
30
  - [Refactoring] Move routing-related contracts from `Karafka::Contracts::` to `Karafka::Routing::Contracts::` namespace and reorganize error message structure in YAML files under `routing:` scope for better code organization and logical grouping.
18
31
  - [Refactoring] Move config-related contracts from `Karafka::Contracts::Config` to `Karafka::Setup::Contracts::Config` namespace and reorganize error message structure in YAML files under `setup:` scope for better code organization and logical grouping.
19
32
  - [Refactoring] Move CLI server contracts from `Karafka::Contracts::ServerCliOptions` to `Karafka::Cli::Contracts::Server` namespace and reorganize error message structure in YAML files under `cli:` scope for improved naming consistency and logical grouping.
33
+ - [Refactoring] Replace execution mode symbol-based checks with dedicated `ExecutionMode` class providing cleaner API with query methods (`#swarm?`, `#embedded?`) and state change methods (`#swarm!`, `#embedded!`) for improved type safety and code clarity.
34
+ - [Refactoring] Replace connection client mode symbol-based checks with dedicated `Connection::Mode` class providing cleaner API with query methods (`#subscribe?`, `#assign?`) and state change methods (`#subscribe!`, `#assign!`) for improved code clarity.
20
35
  - [Fix] Improve same timestamp dispatch in scheduled messages on Ruby 3.2.
21
36
  - [Fix] Fix incorrect (6 seconds vs 60 seconds) reset of connections on non-recoverable errors.
22
37
  - [Fix] Introduce mutex-safe and thread-safe `#inspect` where needed.
23
38
  - [Fix] Fix too loose requirement of Ruby `3.0` when it was `3.1` via transitive dependencies.
24
39
  - [Fix] Fix Pro Cleaner Messages compatibility with external libraries that prepend modules to `#each` method (e.g., DataDog tracing).
25
- - [Change] Require `karafka-rdkafka` `>=` `0.21.0` to support new features.
40
+ - [Fix] SG exclusion in swarm triggers a contract validation error.
41
+ - [Change] Require `waterdrop` `>=` `2.8.10` to support new features.
42
+ - [Change] Require `karafka-rdkafka` `>=` `0.22.0` to support new features and require SSL-bug free version.
26
43
  - [Change] Remove no longer needed `cooperative.sticky` rebalance patch.
27
44
  - [Change] Normalize how libs and deps are required (no functional change for the end user)
28
- - [Change] Remove Ruby `3.1` specs according to the EOL schedule.
45
+ - **[EOL]** Remove Ruby `3.1` specs according to the EOL schedule.
29
46
 
30
47
  ## 2.5.0 (2025-06-15)
31
48
  - **[Breaking]** Change how consistency of DLQ dispatches works in Pro (`partition_key` vs. direct partition id mapping).
@@ -81,7 +98,7 @@
81
98
  - [Maintenance] Lower the `Karafka::Admin` `poll_timeout` to 50 ms to improve responsiveness of admin operations.
82
99
  - [Maintenance] Require `karafka-rdkafka` `>=` `0.19.5` due to usage of `#rd_kafka_global_init`, KIP-82, new producer caching engine and improvements to the `partition_key` assignments.
83
100
  - [Maintenance] Add Deimos routing patch into integration suite not to break it in the future.
84
- - [Maintenance] Remove Rails `7.0` specs due to upcoming EOL.
101
+ - **[EOL]** Remove Rails `7.0` specs due to upcoming EOL.
85
102
  - [Fix] Fix Recurring Tasks and Scheduled Messages not working with Swarm (using closed producer).
86
103
  - [Fix] Fix a case where `unknown_topic_or_part` error could leak out of the consumer on consumer shutdown.
87
104
  - [Fix] Fix missing `virtual_partitions.partitioner.error` custom error logging in the `LoggerListener`.
@@ -247,7 +264,7 @@
247
264
 
248
265
  This release contains **BREAKING** changes. Make sure to read and apply upgrade notes.
249
266
 
250
- - **[Breaking]** Drop Ruby `2.7` support.
267
+ - **[EOL]** Drop Ruby `2.7` support.
251
268
  - **[Breaking]** Drop the concept of consumer group mapping.
252
269
  - **[Breaking]** `karafka topics migrate` will now perform declarative topics configuration alignment.
253
270
  - **[Breaking]** Replace `deserializer` config with `#deserializers` in routing to support key and lazy header deserializers.
data/Gemfile CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
- plugin 'diffend'
6
-
7
5
  gemspec
8
6
 
9
7
  # Karafka gem does not require activejob, karafka-web or fugit to work
data/Gemfile.lock CHANGED
@@ -1,35 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka (2.5.1.beta1)
4
+ karafka (2.5.2)
5
5
  base64 (~> 0.2)
6
6
  karafka-core (>= 2.5.6, < 2.6.0)
7
- karafka-rdkafka (>= 0.21.0)
8
- waterdrop (>= 2.8.3, < 3.0.0)
7
+ karafka-rdkafka (>= 0.22.0)
8
+ waterdrop (>= 2.8.9, < 3.0.0)
9
9
  zeitwerk (~> 2.3)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activejob (8.0.2.1)
15
- activesupport (= 8.0.2.1)
14
+ activejob (8.1.1)
15
+ activesupport (= 8.1.1)
16
16
  globalid (>= 0.3.6)
17
- activesupport (8.0.2.1)
17
+ activesupport (8.1.1)
18
18
  base64
19
- benchmark (>= 0.3)
20
19
  bigdecimal
21
20
  concurrent-ruby (~> 1.0, >= 1.3.1)
22
21
  connection_pool (>= 2.2.5)
23
22
  drb
24
23
  i18n (>= 1.6, < 2)
24
+ json
25
25
  logger (>= 1.4.2)
26
26
  minitest (>= 5.1)
27
27
  securerandom (>= 0.3)
28
28
  tzinfo (~> 2.0, >= 2.0.5)
29
29
  uri (>= 0.13.1)
30
30
  base64 (0.3.0)
31
- benchmark (0.4.1)
32
- bigdecimal (3.2.2)
31
+ bigdecimal (3.3.1)
33
32
  byebug (12.0.0)
34
33
  concurrent-ruby (1.3.5)
35
34
  connection_pool (2.5.4)
@@ -37,9 +36,9 @@ GEM
37
36
  docile (1.4.1)
38
37
  drb (2.2.3)
39
38
  erubi (1.13.1)
40
- et-orbi (1.3.0)
39
+ et-orbi (1.4.0)
41
40
  tzinfo
42
- factory_bot (6.5.5)
41
+ factory_bot (6.5.6)
43
42
  activesupport (>= 6.1.0)
44
43
  ffi (1.17.2)
45
44
  ffi (1.17.2-aarch64-linux-gnu)
@@ -52,78 +51,78 @@ GEM
52
51
  ffi (1.17.2-x86_64-darwin)
53
52
  ffi (1.17.2-x86_64-linux-gnu)
54
53
  ffi (1.17.2-x86_64-linux-musl)
55
- fugit (1.11.2)
56
- et-orbi (~> 1, >= 1.2.11)
54
+ fugit (1.12.1)
55
+ et-orbi (~> 1.4)
57
56
  raabro (~> 1.4)
58
- globalid (1.2.1)
57
+ globalid (1.3.0)
59
58
  activesupport (>= 6.1)
60
59
  i18n (1.14.7)
61
60
  concurrent-ruby (~> 1.0)
62
- json (2.13.2)
63
- karafka-core (2.5.6)
61
+ json (2.15.2)
62
+ karafka-core (2.5.7)
64
63
  karafka-rdkafka (>= 0.20.0)
65
64
  logger (>= 1.6.0)
66
- karafka-rdkafka (0.21.0)
65
+ karafka-rdkafka (0.22.2)
67
66
  ffi (~> 1.15)
68
67
  json (> 2.0)
69
68
  logger
70
69
  mini_portile2 (~> 2.6)
71
70
  rake (> 12)
72
- karafka-rdkafka (0.21.0-aarch64-linux-gnu)
71
+ karafka-rdkafka (0.22.2-aarch64-linux-gnu)
73
72
  ffi (~> 1.15)
74
73
  json (> 2.0)
75
74
  logger
76
75
  mini_portile2 (~> 2.6)
77
76
  rake (> 12)
78
- karafka-rdkafka (0.21.0-arm64-darwin)
77
+ karafka-rdkafka (0.22.2-arm64-darwin)
79
78
  ffi (~> 1.15)
80
79
  json (> 2.0)
81
80
  logger
82
81
  mini_portile2 (~> 2.6)
83
82
  rake (> 12)
84
- karafka-rdkafka (0.21.0-x86_64-linux-gnu)
83
+ karafka-rdkafka (0.22.2-x86_64-linux-gnu)
85
84
  ffi (~> 1.15)
86
85
  json (> 2.0)
87
86
  logger
88
87
  mini_portile2 (~> 2.6)
89
88
  rake (> 12)
90
- karafka-rdkafka (0.21.0-x86_64-linux-musl)
89
+ karafka-rdkafka (0.22.2-x86_64-linux-musl)
91
90
  ffi (~> 1.15)
92
91
  json (> 2.0)
93
92
  logger
94
93
  mini_portile2 (~> 2.6)
95
94
  rake (> 12)
96
- karafka-testing (2.5.3)
97
- karafka (>= 2.5.0.beta1, < 2.6.0)
95
+ karafka-testing (2.5.4)
96
+ karafka (>= 2.5.0, < 2.6.0)
98
97
  waterdrop (>= 2.8.0)
99
- karafka-web (0.11.2)
98
+ karafka-web (0.11.3)
100
99
  erubi (~> 1.4)
101
- karafka (>= 2.5.0.rc2, < 2.6.0)
100
+ karafka (>= 2.5.0, < 2.6.0)
102
101
  karafka-core (>= 2.5.0, < 2.6.0)
103
102
  roda (~> 3.68, >= 3.69)
104
103
  tilt (~> 2.0)
105
104
  logger (1.7.0)
106
105
  mini_portile2 (2.8.9)
107
- minitest (5.25.5)
106
+ minitest (5.26.0)
108
107
  ostruct (0.6.3)
109
108
  raabro (1.4.0)
110
- rack (3.2.1)
109
+ rack (3.2.3)
111
110
  rake (13.3.0)
112
- roda (3.95.0)
111
+ roda (3.97.0)
113
112
  rack
114
- rspec (3.13.1)
113
+ rspec (3.13.2)
115
114
  rspec-core (~> 3.13.0)
116
115
  rspec-expectations (~> 3.13.0)
117
116
  rspec-mocks (~> 3.13.0)
118
- rspec-core (3.13.5)
117
+ rspec-core (3.13.6)
119
118
  rspec-support (~> 3.13.0)
120
119
  rspec-expectations (3.13.5)
121
120
  diff-lcs (>= 1.2.0, < 2.0)
122
121
  rspec-support (~> 3.13.0)
123
- rspec-mocks (3.13.5)
122
+ rspec-mocks (3.13.6)
124
123
  diff-lcs (>= 1.2.0, < 2.0)
125
124
  rspec-support (~> 3.13.0)
126
- rspec-support (3.13.5)
125
+ rspec-support (3.13.6)
127
126
  securerandom (0.4.1)
128
127
  simplecov (0.22.0)
129
128
  docile (~> 1.1)
@@ -135,9 +134,9 @@ GEM
135
134
  tilt (2.6.1)
136
135
  tzinfo (2.0.6)
137
136
  concurrent-ruby (~> 1.0)
138
- uri (1.0.3)
137
+ uri (1.0.4)
139
138
  warning (1.5.0)
140
- waterdrop (2.8.7)
139
+ waterdrop (2.8.12)
141
140
  karafka-core (>= 2.4.9, < 3.0.0)
142
141
  karafka-rdkafka (>= 0.20.0)
143
142
  zeitwerk (~> 2.3)
data/LICENSE-COMM CHANGED
@@ -2,7 +2,7 @@ END-USER LICENSE AGREEMENT
2
2
 
3
3
  ------------------------------------------------------------------------------
4
4
 
5
- IMPORTANT: THIS SOFTWARE END-USER LICENSE AGREEMENT ("EULA") IS A LEGAL AGREEMENT (Agreement) BETWEEN YOU (THE CUSTOMER, EITHER AS AN INDIVIDUAL OR, IF PURCHASED OR OTHERWISE ACQUIRED BY OR FOR AN ENTITY, AS AN ENTITY) AND MACIEJ MENSFELD. READ IT CAREFULLY BEFORE COMPLETING THE INSTALLATION PROCESS AND USING KARAFKA PRO AND RELATED SOFTWARE COMPONENTS (SOFTWARE). IT PROVIDES A LICENSE TO USE THE SOFTWARE AND CONTAINS WARRANTY INFORMATION AND LIABILITY DISCLAIMERS. BY INSTALLING AND USING THE SOFTWARE, YOU ARE CONFIRMING YOUR ACCEPTANCE OF THE SOFTWARE AND AGREEING TO BECOME BOUND BY THE TERMS OF THIS AGREEMENT.
5
+ IMPORTANT: THIS SOFTWARE END-USER LICENSE AGREEMENT ("EULA") IS A LEGAL AGREEMENT ("Agreement") BETWEEN YOU (THE CUSTOMER, EITHER AS AN INDIVIDUAL OR, IF PURCHASED OR OTHERWISE ACQUIRED BY OR FOR AN ENTITY, AS AN ENTITY) AND MACIEJ MENSFELD. READ IT CAREFULLY BEFORE COMPLETING THE INSTALLATION PROCESS AND USING KARAFKA PRO AND RELATED SOFTWARE COMPONENTS ("SOFTWARE"). IT PROVIDES A LICENSE TO USE THE SOFTWARE AND CONTAINS WARRANTY INFORMATION AND LIABILITY DISCLAIMERS. BY INSTALLING AND USING THE SOFTWARE, YOU ARE CONFIRMING YOUR ACCEPTANCE OF THE SOFTWARE AND AGREEING TO BECOME BOUND BY THE TERMS OF THIS AGREEMENT.
6
6
 
7
7
  ------------------------------------------------------------------------------
8
8
 
@@ -12,31 +12,31 @@ In order to use the Software under this Agreement, you must either: (a) receive
12
12
 
13
13
  1.1 General Use. This Agreement grants you a non-exclusive, non-transferable, limited license to the use rights for the Software, without the right to grant sublicenses, subject to the terms and conditions in this Agreement. The Software is licensed, not sold.
14
14
 
15
- 1.2 Pro License. If you purchased a Pro License (included with the Karafka Pro Software), you may install the Software on an unlimited number of Hosts. Host means any physical or virtual machine which is controlled by you. You may also run an unlimited number of Workers. Worker means a thread within a Karafka server process which executes jobs. You may concurrently run the software on an unlimited number of Hosts, with each host running an unlimited number of Workers.
15
+ 1.2 Pro License. If you purchased a Pro License (included with the Karafka Pro Software), you may install the Software on an unlimited number of Hosts. "Host" means any physical or virtual machine which is controlled by you. You may also run an unlimited number of Workers. "Worker" means a thread within a Karafka server process which executes jobs. You may concurrently run the software on an unlimited number of Hosts, with each host running an unlimited number of Workers.
16
16
 
17
17
  1.3 Archive Copies. You are entitled to make a reasonable amount of copies of the Software for archival purposes. Each copy must reproduce all copyright and other proprietary rights notices on or in the Software Product.
18
18
 
19
- 1.4 Electronic Delivery. All Software and license documentation shall be delivered by electronic means unless otherwise specified on the applicable invoice or at the time of purchase. Software shall be deemed delivered when it is made available for download by you (Delivery).
19
+ 1.4 Electronic Delivery. All Software and license documentation shall be delivered by electronic means unless otherwise specified on the applicable invoice or at the time of purchase. Software shall be deemed delivered when it is made available for download by you ("Delivery").
20
20
 
21
- 2. Modifications. Maciej Mensfeld shall provide you with source code so that you can create Modifications of the original software. Modification means: (a) any addition to or deletion from the contents of a file included in the original Software or previous Modifications created by You, or (b) any new file that contains any part of the original Software or previous Modifications. While you retain all rights to any original work authored by you as part of the Modifications, We continue to own all copyright and other intellectual property rights in the Software.
21
+ 2. Modifications. Maciej Mensfeld shall provide you with source code so that you can create Modifications of the original software. "Modification" means: (a) any addition to or deletion from the contents of a file included in the original Software or previous Modifications created by You, or (b) any new file that contains any part of the original Software or previous Modifications. While you retain all rights to any original work authored by you as part of the Modifications, We continue to own all copyright and other intellectual property rights in the Software.
22
22
 
23
23
  3. Restricted Uses.
24
24
 
25
- 3.1 You shall not (and shall not allow any third party to): (a) decompile, disassemble, or otherwise reverse engineer the Software or attempt to reconstruct or discover any source code, underlying ideas, algorithms, file formats or programming interfaces of the Software by any means whatsoever (except and only to the extent that applicable law prohibits or restricts reverse engineering restrictions); (b) distribute, sell, sublicense, rent, lease or use the Software for time sharing, hosting, service provider or like purposes, except as expressly permitted under this Agreement; (c) redistribute the Software or Modifications other than by including the Software or a portion thereof within your own product, which must have substantially different functionality than the Software or Modifications and must not allow any third party to use the Software or Modifications, or any portions thereof, for software development or application development purposes; (d) redistribute the Software as part of a product, "appliance" or "virtual server"; (e) redistribute the Software on any server which is not directly under your control; (f) remove any product identification, proprietary, copyright or other notices contained in the Software; (g) modify any part of the Software, create a derivative work of any part of the Software (except as permitted in Section 4), or incorporate the Software, except to the extent expressly authorized in writing by Maciej Mensfeld; (h) publicly disseminate performance information or analysis (including, without limitation, benchmarks) from any source relating to the Software; (i) utilize any equipment, device, software, or other means designed to circumvent or remove any form of Source URL or copy protection used by Maciej Mensfeld in connection with the Software, or use the Software together with any authorization code, Source URL, serial number, or other copy protection device not supplied by Maciej Mensfeld; (j) use the Software to develop a product which is competitive with any Maciej Mensfeld product offerings; or (k) use unauthorized Source URLS or keycode(s) or distribute or publish Source URLs or keycode(s), except as may be expressly permitted by Maciej Mensfeld in writing. If your unique Source URL or the offline license is ever published, Maciej Mensfeld reserves the right to terminate your access without notice.
25
+ 3.1 You shall not (and shall not allow any third party to): (a) decompile, disassemble, or otherwise reverse engineer the Software or attempt to reconstruct or discover any source code, underlying ideas, algorithms, file formats or programming interfaces of the Software by any means whatsoever (except and only to the extent that applicable law prohibits or restricts reverse engineering restrictions); (b) distribute, sell, sublicense, rent, lease or use the Software for time sharing, hosting, service provider or like purposes, except as expressly permitted under this Agreement; (c) redistribute the Software or Modifications other than by including the Software or a portion thereof within your own product, which must have substantially different functionality than the Software or Modifications and must not allow any third party to use the Software or Modifications, or any portions thereof, for software development or application development purposes; (d) redistribute the Software as part of a product, "appliance" or "virtual server"; (e) redistribute the Software on any server which is not directly under your control; (f) remove any product identification, proprietary, copyright or other notices contained in the Software; (g) modify any part of the Software, create a derivative work of any part of the Software (except as permitted in Section 2), or incorporate the Software, except to the extent expressly authorized in writing by Maciej Mensfeld; (h) publicly disseminate performance information or analysis (including, without limitation, benchmarks) from any source relating to the Software; (i) utilize any equipment, device, software, or other means designed to circumvent or remove any form of Source URL or copy protection used by Maciej Mensfeld in connection with the Software, or use the Software together with any authorization code, Source URL, serial number, or other copy protection device not supplied by Maciej Mensfeld; (j) use the Software to develop a product which is competitive with any Maciej Mensfeld product offerings; or (k) use unauthorized Source URLS or keycode(s) or distribute or publish Source URLs or keycode(s), except as may be expressly permitted by Maciej Mensfeld in writing. If your unique Source URL or the offline license is ever published, Maciej Mensfeld reserves the right to terminate your access without notice.
26
26
 
27
27
  3.2 UNDER NO CIRCUMSTANCES MAY YOU USE THE SOFTWARE AS PART OF A PRODUCT OR SERVICE THAT PROVIDES SIMILAR FUNCTIONALITY TO THE SOFTWARE ITSELF.
28
28
 
29
- The Open Source version of the Software (LGPL Version) is licensed under the terms of the GNU Lesser General Public License version 3.0 (LGPL) and not under this EULA.
29
+ The Open Source version of the Software ("LGPL Version") is licensed under the terms of the GNU Lesser General Public License version 3.0 ("LGPL") and not under this EULA.
30
30
 
31
- 4. Ownership. Notwithstanding anything to the contrary contained herein, except for the limited license rights expressly provided herein, Maciej Mensfeld and its suppliers have and will retain all rights, title and interest (including, without limitation, all patent, copyright, trademark, trade secret and other intellectual property rights) in and to the Software and all copies, modifications and derivative works thereof (including any changes which incorporate any of your ideas, feedback or suggestions). You acknowledge that you are obtaining only a limited license right to the Software, and that irrespective of any use of the words purchase”, sale or like terms hereunder no ownership rights are being conveyed to you under this Agreement or otherwise.
31
+ 4. Ownership. Notwithstanding anything to the contrary contained herein, except for the limited license rights expressly provided herein, Maciej Mensfeld and its suppliers have and will retain all rights, title and interest (including, without limitation, all patent, copyright, trademark, trade secret and other intellectual property rights) in and to the Software and all copies, modifications and derivative works thereof (including any changes which incorporate any of your ideas, feedback or suggestions). You acknowledge that you are obtaining only a limited license right to the Software, and that irrespective of any use of the words "purchase", "sale" or like terms hereunder no ownership rights are being conveyed to you under this Agreement or otherwise.
32
32
 
33
33
  5. Fees and Payment. The Software license fees will be due and payable in full as set forth in the applicable invoice or at the time of purchase. There are no refunds beyond the remedy refund.
34
34
 
35
- 6. Support, Maintenance and Services. Subject to the terms and conditions of this Agreement, as set forth in your invoice, and as set forth on the Karafka Pro support page (https://github.com/karafka/karafka/wiki/Commercial-Support), support and maintenance services may be included with the purchase of your license subscription.
35
+ 6. Support, Maintenance and Services. Subject to the terms and conditions of this Agreement, as set forth in your invoice, and as set forth on the Karafka Pro support page (https://karafka.io/docs/Pro-Support/), support and maintenance services may be included with the purchase of your license subscription.
36
36
 
37
37
  7. Term of Agreement.
38
38
 
39
- 7.1 Term. This Agreement is effective as of the Delivery of the Software and expires at such time as all license and service subscriptions hereunder have expired in accordance with their own terms (the Term). For clarification, the term of your license under this Agreement may be perpetual, limited for Evaluation Version, or designated as a fixed-term license in the Invoice, and shall be specified at your time of purchase. Either party may terminate this Agreement (including all related Invoices) if the other party: (a) fails to cure any material breach of this Agreement within thirty (30) days after written notice of such breach, provided that Maciej Mensfeld may terminate this Agreement immediately upon any breach of Section 3 or if you exceed any other restrictions contained in Section 1, unless otherwise specified in this agreement; (b) ceases operation without a successor; or (c) seeks protection under any bankruptcy, receivership, trust deed, creditors arrangement, composition or comparable proceeding, or if any such proceeding is instituted against such party (and not dismissed within sixty (60) days)). Termination is not an exclusive remedy and the exercise by either party of any remedy under this Agreement will be without prejudice to any other remedies it may have under this Agreement, by law, or otherwise.
39
+ 7.1 Term. This Agreement is effective as of the Delivery of the Software and expires at such time as all license and service subscriptions hereunder have expired in accordance with their own terms (the "Term"). For clarification, the term of your license under this Agreement may be perpetual, limited for Evaluation Version, or designated as a fixed-term license in the Invoice, and shall be specified at your time of purchase. Either party may terminate this Agreement (including all related Invoices) if the other party: (a) fails to cure any material breach of this Agreement within thirty (30) days after written notice of such breach, provided that Maciej Mensfeld may terminate this Agreement immediately upon any breach of Section 3 or if you exceed any other restrictions contained in Section 1, unless otherwise specified in this agreement; (b) ceases operation without a successor; or (c) seeks protection under any bankruptcy, receivership, trust deed, creditors arrangement, composition or comparable proceeding, or if any such proceeding is instituted against such party (and not dismissed within sixty (60) days)). Termination is not an exclusive remedy and the exercise by either party of any remedy under this Agreement will be without prejudice to any other remedies it may have under this Agreement, by law, or otherwise.
40
40
 
41
41
  7.2 Termination. Upon any termination of this Agreement, you shall cease any and all use of any Software and destroy all copies thereof.
42
42
 
@@ -62,7 +62,7 @@ In no event will Maciej Mensfeld' liability exceed the Software license price as
62
62
 
63
63
  11.3 Government End Users. If the Software and related documentation are supplied to or purchased by or on behalf of the United States Government, then the Software is deemed to be "commercial software" as that term is used in the Federal Acquisition Regulation system. Rights of the United States shall not exceed the minimum rights set forth in FAR 52.227-19 for "restricted computer software". All other terms and conditions of this Agreement apply.
64
64
 
65
- 12. Third Party Software. External components included in Software may provide links to third party libraries or code (collectively Third Party Software) to implement various functions. Third Party Software does not comprise part of the Software. In some cases, access to Third Party Software may be included along with the Software delivery as a convenience for demonstration purposes. Such source code and libraries do not comprise the Software. Licensee acknowledges (1) that some part of Third Party Software may require additional licensing of copyright and patents from the owners of such, and (2) that distribution of any of the Software referencing or including any portion of a Third Party Software may require appropriate licensing from such third parties.
65
+ 12. Third Party Software. External components included in Software may provide links to third party libraries or code (collectively "Third Party Software") to implement various functions. Third Party Software does not comprise part of the Software. In some cases, access to Third Party Software may be included along with the Software delivery as a convenience for demonstration purposes. Such source code and libraries do not comprise the Software. Licensee acknowledges (1) that some part of Third Party Software may require additional licensing of copyright and patents from the owners of such, and (2) that distribution of any of the Software referencing or including any portion of a Third Party Software may require appropriate licensing from such third parties.
66
66
 
67
67
  13. Miscellaneous
68
68
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ![karafka logo](https://cdn.karafka.io/assets/misc/logo/karafka_logotype_transparent2.png)
2
2
 
3
- [![Build Status](https://github.com/karafka/karafka/actions/workflows/ci.yml/badge.svg)](https://github.com/karafka/karafka/actions/workflows/ci.yml)
3
+ [![Build Status](https://github.com/karafka/karafka/actions/workflows/ci_linux_ubuntu_x86_64_gnu.yml/badge.svg)](https://github.com/karafka/karafka/actions/workflows/ci_linux_ubuntu_x86_64_gnu.yml)
4
4
  [![Gem Version](https://badge.fury.io/rb/karafka.svg)](http://badge.fury.io/rb/karafka)
5
5
  [![Join the chat at https://slack.karafka.io](https://raw.githubusercontent.com/karafka/misc/master/slack.svg)](https://slack.karafka.io)
6
6
 
data/bin/integrations CHANGED
@@ -52,7 +52,8 @@ class Scenario
52
52
  'cli/declaratives/delete/existing_with_exit_code_spec.rb' => [2].freeze,
53
53
  'cli/declaratives/create/new_with_exit_code_spec.rb' => [2].freeze,
54
54
  'cli/declaratives/plan/when_changes_with_detailed_exit_code_spec.rb' => [2].freeze,
55
- 'cli/declaratives/align/incorrectly_spec.rb' => [1].freeze
55
+ 'cli/declaratives/align/incorrectly_spec.rb' => [1].freeze,
56
+ 'setup/with_kip_848_protocol_incorrect_config_spec.rb' => [1].freeze
56
57
  }.freeze
57
58
 
58
59
  private_constant :MAX_RUN_TIME, :EXIT_CODES
data/bin/rspecs CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  set -e
4
4
 
5
+ # We remove old coverage because under heavy development and parallel spec execution, the
6
+ # rspec results formatter tends to crash
7
+ rm -rf ./coverage
8
+
5
9
  # Run only regular non-forking specs first
6
10
  SPECS_TYPE=regular bundle exec rspec \
7
11
  --tag ~type:pro \
@@ -11,9 +11,11 @@ en:
11
11
  group_id_format: 'needs to be a string with a Kafka accepted format'
12
12
  concurrency_format: needs to be an integer bigger than 0
13
13
  consumer_persistence_format: needs to be either true or false
14
- pause_timeout_format: needs to be an integer bigger than 0
15
- pause_max_timeout_format: needs to be an integer bigger than 0
16
- pause_with_exponential_backoff_format: needs to be either true or false
14
+
15
+ pause.timeout_format: needs to be an integer bigger than 0
16
+ pause.max_timeout_format: needs to be an integer bigger than 0
17
+ pause.with_exponential_backoff_format: needs to be either true or false
18
+
17
19
  strict_topics_namespacing_format: needs to be either true or false
18
20
  strict_declarative_topics_format: needs to be either true or false
19
21
  shutdown_timeout_format: needs to be an integer bigger than 0
@@ -23,7 +25,7 @@ en:
23
25
  Decrease max_wait_time or increase node_report_timeout
24
26
  kafka_format: needs to be a filled hash
25
27
  key_must_be_a_symbol: All keys under the kafka settings scope need to be symbols
26
- max_timeout_vs_pause_max_timeout: pause_timeout must be less or equal to pause_max_timeout
28
+ pause.timeout_max_timeout_vs_pause_max_timeout: pause.timeout must be less or equal to pause.max_timeout
27
29
  shutdown_timeout_vs_max_wait_time: shutdown_timeout must be more than max_wait_time
28
30
  worker_thread_priority_format: must be between -3 and 3
29
31
 
@@ -31,10 +31,11 @@ en:
31
31
  delaying.delay_format: 'needs to be equal or more than 0 and an integer'
32
32
  delaying.active_format: 'needs to be boolean'
33
33
 
34
- pause_timeout_format: needs to be an integer bigger than 0
35
- pause_max_timeout_format: needs to be an integer bigger than 0
36
- pause_with_exponential_backoff_format: needs to be either true or false
37
- pause_timeout_max_timeout_vs_pause_max_timeout: pause_timeout must be less or equal to pause_max_timeout
34
+ pausing.active_format: 'needs to be boolean'
35
+ pausing.timeout_format: needs to be an integer bigger than 0
36
+ pausing.max_timeout_format: needs to be an integer bigger than 0
37
+ pausing.with_exponential_backoff_format: needs to be either true or false
38
+ pausing.timeout_max_timeout_vs_pause_max_timeout: timeout must be less or equal to max_timeout
38
39
 
39
40
  patterns.active_format: 'needs to be boolean'
40
41
  patterns.type_format: 'needs to be :matcher, :discovered or :regular'
data/docker-compose.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  services:
2
2
  kafka:
3
3
  container_name: kafka
4
- image: confluentinc/cp-kafka:8.0.0
4
+ image: confluentinc/cp-kafka:8.1.0
5
5
 
6
6
  ports:
7
7
  - 9092:9092