karafka 2.5.6 → 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.
Files changed (273) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/LICENSE-COMM +4 -2
  4. data/config/locales/pro_errors.yml +1 -0
  5. data/lib/karafka/admin/replication.rb +36 -4
  6. data/lib/karafka/errors.rb +3 -1
  7. data/lib/karafka/helpers/interval_runner.rb +4 -2
  8. data/lib/karafka/instrumentation/logger_listener.rb +22 -9
  9. data/lib/karafka/instrumentation/vendors/datadog/logger_listener.rb +6 -1
  10. data/lib/karafka/messages/builders/batch_metadata.rb +4 -2
  11. data/lib/karafka/pro/active_job/consumer.rb +8 -0
  12. data/lib/karafka/pro/active_job/dispatcher.rb +8 -0
  13. data/lib/karafka/pro/active_job/job_options_contract.rb +8 -0
  14. data/lib/karafka/pro/admin/recovery/errors.rb +51 -0
  15. data/lib/karafka/pro/admin/recovery.rb +486 -0
  16. data/lib/karafka/pro/base_consumer.rb +8 -0
  17. data/lib/karafka/pro/cleaner/errors.rb +8 -0
  18. data/lib/karafka/pro/cleaner/messages/message.rb +8 -0
  19. data/lib/karafka/pro/cleaner/messages/messages.rb +8 -0
  20. data/lib/karafka/pro/cleaner/messages/metadata.rb +8 -0
  21. data/lib/karafka/pro/cleaner.rb +8 -0
  22. data/lib/karafka/pro/cli/contracts/server.rb +8 -0
  23. data/lib/karafka/pro/cli/parallel_segments/base.rb +8 -0
  24. data/lib/karafka/pro/cli/parallel_segments/collapse.rb +8 -0
  25. data/lib/karafka/pro/cli/parallel_segments/distribute.rb +8 -0
  26. data/lib/karafka/pro/cli/parallel_segments.rb +8 -0
  27. data/lib/karafka/pro/cli/topics/health.rb +10 -2
  28. data/lib/karafka/pro/cli/topics.rb +8 -0
  29. data/lib/karafka/pro/connection/manager.rb +8 -0
  30. data/lib/karafka/pro/connection/multiplexing/listener.rb +8 -0
  31. data/lib/karafka/pro/contracts/base.rb +8 -0
  32. data/lib/karafka/pro/encryption/cipher.rb +8 -0
  33. data/lib/karafka/pro/encryption/contracts/config.rb +8 -0
  34. data/lib/karafka/pro/encryption/errors.rb +8 -0
  35. data/lib/karafka/pro/encryption/messages/middleware.rb +8 -0
  36. data/lib/karafka/pro/encryption/messages/parser.rb +8 -0
  37. data/lib/karafka/pro/encryption/setup/config.rb +8 -0
  38. data/lib/karafka/pro/encryption.rb +8 -0
  39. data/lib/karafka/pro/instrumentation/performance_tracker.rb +8 -0
  40. data/lib/karafka/pro/iterator/expander.rb +9 -1
  41. data/lib/karafka/pro/iterator/tpl_builder.rb +8 -0
  42. data/lib/karafka/pro/iterator.rb +9 -1
  43. data/lib/karafka/pro/loader.rb +8 -0
  44. data/lib/karafka/pro/processing/adaptive_iterator/consumer.rb +8 -0
  45. data/lib/karafka/pro/processing/adaptive_iterator/tracker.rb +8 -0
  46. data/lib/karafka/pro/processing/collapser.rb +8 -0
  47. data/lib/karafka/pro/processing/coordinator.rb +8 -0
  48. data/lib/karafka/pro/processing/coordinators/errors_tracker.rb +8 -0
  49. data/lib/karafka/pro/processing/coordinators/filters_applier.rb +8 -0
  50. data/lib/karafka/pro/processing/coordinators/virtual_offset_manager.rb +25 -7
  51. data/lib/karafka/pro/processing/executor.rb +8 -0
  52. data/lib/karafka/pro/processing/expansions_selector.rb +8 -0
  53. data/lib/karafka/pro/processing/filters/base.rb +8 -0
  54. data/lib/karafka/pro/processing/filters/delayer.rb +8 -0
  55. data/lib/karafka/pro/processing/filters/expirer.rb +8 -0
  56. data/lib/karafka/pro/processing/filters/inline_insights_delayer.rb +8 -0
  57. data/lib/karafka/pro/processing/filters/throttler.rb +8 -0
  58. data/lib/karafka/pro/processing/filters/virtual_limiter.rb +8 -0
  59. data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +8 -0
  60. data/lib/karafka/pro/processing/jobs/eofed_non_blocking.rb +8 -0
  61. data/lib/karafka/pro/processing/jobs/periodic.rb +8 -0
  62. data/lib/karafka/pro/processing/jobs/periodic_non_blocking.rb +8 -0
  63. data/lib/karafka/pro/processing/jobs/revoked_non_blocking.rb +8 -0
  64. data/lib/karafka/pro/processing/jobs_builder.rb +8 -0
  65. data/lib/karafka/pro/processing/jobs_queue.rb +8 -0
  66. data/lib/karafka/pro/processing/offset_metadata/consumer.rb +8 -0
  67. data/lib/karafka/pro/processing/offset_metadata/fetcher.rb +8 -0
  68. data/lib/karafka/pro/processing/offset_metadata/listener.rb +8 -0
  69. data/lib/karafka/pro/processing/parallel_segments/filters/base.rb +8 -0
  70. data/lib/karafka/pro/processing/parallel_segments/filters/default.rb +8 -0
  71. data/lib/karafka/pro/processing/parallel_segments/filters/mom.rb +8 -0
  72. data/lib/karafka/pro/processing/partitioner.rb +8 -0
  73. data/lib/karafka/pro/processing/periodic_job/consumer.rb +8 -0
  74. data/lib/karafka/pro/processing/piping/consumer.rb +8 -0
  75. data/lib/karafka/pro/processing/schedulers/base.rb +8 -0
  76. data/lib/karafka/pro/processing/schedulers/default.rb +8 -0
  77. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom.rb +8 -0
  78. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb +8 -0
  79. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom.rb +8 -0
  80. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom_vp.rb +8 -0
  81. data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb +8 -0
  82. data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb +8 -0
  83. data/lib/karafka/pro/processing/strategies/aj/dlq_mom.rb +8 -0
  84. data/lib/karafka/pro/processing/strategies/aj/dlq_mom_vp.rb +8 -0
  85. data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom.rb +8 -0
  86. data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb +8 -0
  87. data/lib/karafka/pro/processing/strategies/aj/ftr_mom.rb +8 -0
  88. data/lib/karafka/pro/processing/strategies/aj/ftr_mom_vp.rb +8 -0
  89. data/lib/karafka/pro/processing/strategies/aj/lrj_mom.rb +8 -0
  90. data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +8 -0
  91. data/lib/karafka/pro/processing/strategies/aj/mom.rb +8 -0
  92. data/lib/karafka/pro/processing/strategies/aj/mom_vp.rb +8 -0
  93. data/lib/karafka/pro/processing/strategies/base.rb +8 -0
  94. data/lib/karafka/pro/processing/strategies/default.rb +8 -0
  95. data/lib/karafka/pro/processing/strategies/dlq/default.rb +8 -0
  96. data/lib/karafka/pro/processing/strategies/dlq/ftr.rb +8 -0
  97. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb +8 -0
  98. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb +8 -0
  99. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom_vp.rb +8 -0
  100. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_vp.rb +8 -0
  101. data/lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb +8 -0
  102. data/lib/karafka/pro/processing/strategies/dlq/ftr_mom_vp.rb +8 -0
  103. data/lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb +8 -0
  104. data/lib/karafka/pro/processing/strategies/dlq/lrj.rb +8 -0
  105. data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +8 -0
  106. data/lib/karafka/pro/processing/strategies/dlq/lrj_mom_vp.rb +8 -0
  107. data/lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb +8 -0
  108. data/lib/karafka/pro/processing/strategies/dlq/mom.rb +8 -0
  109. data/lib/karafka/pro/processing/strategies/dlq/mom_vp.rb +8 -0
  110. data/lib/karafka/pro/processing/strategies/dlq/vp.rb +8 -0
  111. data/lib/karafka/pro/processing/strategies/ftr/default.rb +8 -0
  112. data/lib/karafka/pro/processing/strategies/ftr/vp.rb +8 -0
  113. data/lib/karafka/pro/processing/strategies/lrj/default.rb +8 -0
  114. data/lib/karafka/pro/processing/strategies/lrj/ftr.rb +8 -0
  115. data/lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb +8 -0
  116. data/lib/karafka/pro/processing/strategies/lrj/ftr_mom_vp.rb +8 -0
  117. data/lib/karafka/pro/processing/strategies/lrj/ftr_vp.rb +8 -0
  118. data/lib/karafka/pro/processing/strategies/lrj/mom.rb +8 -0
  119. data/lib/karafka/pro/processing/strategies/lrj/mom_vp.rb +8 -0
  120. data/lib/karafka/pro/processing/strategies/lrj/vp.rb +8 -0
  121. data/lib/karafka/pro/processing/strategies/mom/default.rb +8 -0
  122. data/lib/karafka/pro/processing/strategies/mom/ftr.rb +8 -0
  123. data/lib/karafka/pro/processing/strategies/mom/ftr_vp.rb +8 -0
  124. data/lib/karafka/pro/processing/strategies/mom/vp.rb +8 -0
  125. data/lib/karafka/pro/processing/strategies/vp/default.rb +8 -0
  126. data/lib/karafka/pro/processing/strategies.rb +8 -0
  127. data/lib/karafka/pro/processing/strategy_selector.rb +8 -0
  128. data/lib/karafka/pro/processing/subscription_groups_coordinator.rb +8 -0
  129. data/lib/karafka/pro/processing/virtual_partitions/distributors/balanced.rb +8 -0
  130. data/lib/karafka/pro/processing/virtual_partitions/distributors/base.rb +8 -0
  131. data/lib/karafka/pro/processing/virtual_partitions/distributors/consistent.rb +8 -0
  132. data/lib/karafka/pro/recurring_tasks/consumer.rb +8 -0
  133. data/lib/karafka/pro/recurring_tasks/contracts/config.rb +8 -0
  134. data/lib/karafka/pro/recurring_tasks/contracts/task.rb +8 -0
  135. data/lib/karafka/pro/recurring_tasks/deserializer.rb +8 -0
  136. data/lib/karafka/pro/recurring_tasks/dispatcher.rb +8 -0
  137. data/lib/karafka/pro/recurring_tasks/errors.rb +8 -0
  138. data/lib/karafka/pro/recurring_tasks/executor.rb +8 -0
  139. data/lib/karafka/pro/recurring_tasks/listener.rb +8 -0
  140. data/lib/karafka/pro/recurring_tasks/matcher.rb +8 -0
  141. data/lib/karafka/pro/recurring_tasks/schedule.rb +8 -0
  142. data/lib/karafka/pro/recurring_tasks/serializer.rb +8 -0
  143. data/lib/karafka/pro/recurring_tasks/setup/config.rb +8 -0
  144. data/lib/karafka/pro/recurring_tasks/task.rb +8 -0
  145. data/lib/karafka/pro/recurring_tasks.rb +8 -0
  146. data/lib/karafka/pro/routing/features/active_job/builder.rb +8 -0
  147. data/lib/karafka/pro/routing/features/active_job.rb +8 -0
  148. data/lib/karafka/pro/routing/features/adaptive_iterator/config.rb +8 -0
  149. data/lib/karafka/pro/routing/features/adaptive_iterator/contracts/topic.rb +8 -0
  150. data/lib/karafka/pro/routing/features/adaptive_iterator/topic.rb +8 -0
  151. data/lib/karafka/pro/routing/features/adaptive_iterator.rb +8 -0
  152. data/lib/karafka/pro/routing/features/base.rb +8 -0
  153. data/lib/karafka/pro/routing/features/dead_letter_queue/contracts/topic.rb +8 -0
  154. data/lib/karafka/pro/routing/features/dead_letter_queue/topic.rb +8 -0
  155. data/lib/karafka/pro/routing/features/dead_letter_queue.rb +8 -0
  156. data/lib/karafka/pro/routing/features/delaying/config.rb +8 -0
  157. data/lib/karafka/pro/routing/features/delaying/contracts/topic.rb +8 -0
  158. data/lib/karafka/pro/routing/features/delaying/topic.rb +8 -0
  159. data/lib/karafka/pro/routing/features/delaying.rb +8 -0
  160. data/lib/karafka/pro/routing/features/direct_assignments/config.rb +8 -0
  161. data/lib/karafka/pro/routing/features/direct_assignments/contracts/consumer_group.rb +8 -0
  162. data/lib/karafka/pro/routing/features/direct_assignments/contracts/topic.rb +8 -0
  163. data/lib/karafka/pro/routing/features/direct_assignments/subscription_group.rb +8 -0
  164. data/lib/karafka/pro/routing/features/direct_assignments/topic.rb +8 -0
  165. data/lib/karafka/pro/routing/features/direct_assignments.rb +8 -0
  166. data/lib/karafka/pro/routing/features/expiring/config.rb +8 -0
  167. data/lib/karafka/pro/routing/features/expiring/contracts/topic.rb +8 -0
  168. data/lib/karafka/pro/routing/features/expiring/topic.rb +8 -0
  169. data/lib/karafka/pro/routing/features/expiring.rb +8 -0
  170. data/lib/karafka/pro/routing/features/filtering/config.rb +8 -0
  171. data/lib/karafka/pro/routing/features/filtering/contracts/topic.rb +8 -0
  172. data/lib/karafka/pro/routing/features/filtering/topic.rb +8 -0
  173. data/lib/karafka/pro/routing/features/filtering.rb +8 -0
  174. data/lib/karafka/pro/routing/features/inline_insights/config.rb +8 -0
  175. data/lib/karafka/pro/routing/features/inline_insights/contracts/topic.rb +8 -0
  176. data/lib/karafka/pro/routing/features/inline_insights/topic.rb +8 -0
  177. data/lib/karafka/pro/routing/features/inline_insights.rb +8 -0
  178. data/lib/karafka/pro/routing/features/long_running_job/config.rb +8 -0
  179. data/lib/karafka/pro/routing/features/long_running_job/contracts/topic.rb +8 -0
  180. data/lib/karafka/pro/routing/features/long_running_job/topic.rb +8 -0
  181. data/lib/karafka/pro/routing/features/long_running_job.rb +8 -0
  182. data/lib/karafka/pro/routing/features/multiplexing/config.rb +8 -0
  183. data/lib/karafka/pro/routing/features/multiplexing/contracts/routing.rb +81 -0
  184. data/lib/karafka/pro/routing/features/multiplexing/contracts/topic.rb +8 -0
  185. data/lib/karafka/pro/routing/features/multiplexing/patches/contracts/consumer_group.rb +8 -0
  186. data/lib/karafka/pro/routing/features/multiplexing/proxy.rb +8 -0
  187. data/lib/karafka/pro/routing/features/multiplexing/subscription_group.rb +8 -0
  188. data/lib/karafka/pro/routing/features/multiplexing/subscription_groups_builder.rb +8 -0
  189. data/lib/karafka/pro/routing/features/multiplexing.rb +17 -2
  190. data/lib/karafka/pro/routing/features/non_blocking_job/topic.rb +8 -0
  191. data/lib/karafka/pro/routing/features/non_blocking_job.rb +8 -0
  192. data/lib/karafka/pro/routing/features/offset_metadata/config.rb +8 -0
  193. data/lib/karafka/pro/routing/features/offset_metadata/contracts/topic.rb +8 -0
  194. data/lib/karafka/pro/routing/features/offset_metadata/topic.rb +8 -0
  195. data/lib/karafka/pro/routing/features/offset_metadata.rb +8 -0
  196. data/lib/karafka/pro/routing/features/parallel_segments/builder.rb +8 -0
  197. data/lib/karafka/pro/routing/features/parallel_segments/config.rb +8 -0
  198. data/lib/karafka/pro/routing/features/parallel_segments/consumer_group.rb +8 -0
  199. data/lib/karafka/pro/routing/features/parallel_segments/contracts/consumer_group.rb +8 -0
  200. data/lib/karafka/pro/routing/features/parallel_segments/topic.rb +8 -0
  201. data/lib/karafka/pro/routing/features/parallel_segments.rb +8 -0
  202. data/lib/karafka/pro/routing/features/patterns/builder.rb +8 -0
  203. data/lib/karafka/pro/routing/features/patterns/config.rb +8 -0
  204. data/lib/karafka/pro/routing/features/patterns/consumer_group.rb +8 -0
  205. data/lib/karafka/pro/routing/features/patterns/contracts/consumer_group.rb +8 -0
  206. data/lib/karafka/pro/routing/features/patterns/contracts/pattern.rb +8 -0
  207. data/lib/karafka/pro/routing/features/patterns/contracts/topic.rb +8 -0
  208. data/lib/karafka/pro/routing/features/patterns/detector.rb +8 -0
  209. data/lib/karafka/pro/routing/features/patterns/pattern.rb +8 -0
  210. data/lib/karafka/pro/routing/features/patterns/patterns.rb +8 -0
  211. data/lib/karafka/pro/routing/features/patterns/topic.rb +8 -0
  212. data/lib/karafka/pro/routing/features/patterns/topics.rb +8 -0
  213. data/lib/karafka/pro/routing/features/patterns.rb +8 -0
  214. data/lib/karafka/pro/routing/features/pausing/config.rb +8 -0
  215. data/lib/karafka/pro/routing/features/pausing/contracts/topic.rb +8 -0
  216. data/lib/karafka/pro/routing/features/pausing/topic.rb +8 -0
  217. data/lib/karafka/pro/routing/features/pausing.rb +8 -0
  218. data/lib/karafka/pro/routing/features/periodic_job/config.rb +8 -0
  219. data/lib/karafka/pro/routing/features/periodic_job/contracts/topic.rb +8 -0
  220. data/lib/karafka/pro/routing/features/periodic_job/topic.rb +8 -0
  221. data/lib/karafka/pro/routing/features/periodic_job.rb +8 -0
  222. data/lib/karafka/pro/routing/features/recurring_tasks/builder.rb +8 -0
  223. data/lib/karafka/pro/routing/features/recurring_tasks/config.rb +8 -0
  224. data/lib/karafka/pro/routing/features/recurring_tasks/contracts/topic.rb +8 -0
  225. data/lib/karafka/pro/routing/features/recurring_tasks/proxy.rb +8 -0
  226. data/lib/karafka/pro/routing/features/recurring_tasks/topic.rb +8 -0
  227. data/lib/karafka/pro/routing/features/recurring_tasks.rb +8 -0
  228. data/lib/karafka/pro/routing/features/scheduled_messages/builder.rb +8 -0
  229. data/lib/karafka/pro/routing/features/scheduled_messages/config.rb +8 -0
  230. data/lib/karafka/pro/routing/features/scheduled_messages/contracts/topic.rb +8 -0
  231. data/lib/karafka/pro/routing/features/scheduled_messages/proxy.rb +8 -0
  232. data/lib/karafka/pro/routing/features/scheduled_messages/topic.rb +8 -0
  233. data/lib/karafka/pro/routing/features/scheduled_messages.rb +8 -0
  234. data/lib/karafka/pro/routing/features/swarm/config.rb +8 -0
  235. data/lib/karafka/pro/routing/features/swarm/contracts/routing.rb +8 -0
  236. data/lib/karafka/pro/routing/features/swarm/contracts/topic.rb +8 -0
  237. data/lib/karafka/pro/routing/features/swarm/topic.rb +8 -0
  238. data/lib/karafka/pro/routing/features/swarm.rb +8 -0
  239. data/lib/karafka/pro/routing/features/throttling/config.rb +8 -0
  240. data/lib/karafka/pro/routing/features/throttling/contracts/topic.rb +8 -0
  241. data/lib/karafka/pro/routing/features/throttling/topic.rb +8 -0
  242. data/lib/karafka/pro/routing/features/throttling.rb +8 -0
  243. data/lib/karafka/pro/routing/features/virtual_partitions/config.rb +8 -0
  244. data/lib/karafka/pro/routing/features/virtual_partitions/contracts/topic.rb +8 -0
  245. data/lib/karafka/pro/routing/features/virtual_partitions/topic.rb +8 -0
  246. data/lib/karafka/pro/routing/features/virtual_partitions.rb +8 -0
  247. data/lib/karafka/pro/scheduled_messages/consumer.rb +8 -0
  248. data/lib/karafka/pro/scheduled_messages/contracts/config.rb +8 -0
  249. data/lib/karafka/pro/scheduled_messages/contracts/message.rb +8 -0
  250. data/lib/karafka/pro/scheduled_messages/daily_buffer.rb +8 -0
  251. data/lib/karafka/pro/scheduled_messages/day.rb +8 -0
  252. data/lib/karafka/pro/scheduled_messages/deserializers/headers.rb +8 -0
  253. data/lib/karafka/pro/scheduled_messages/deserializers/payload.rb +8 -0
  254. data/lib/karafka/pro/scheduled_messages/dispatcher.rb +8 -0
  255. data/lib/karafka/pro/scheduled_messages/errors.rb +8 -0
  256. data/lib/karafka/pro/scheduled_messages/max_epoch.rb +8 -0
  257. data/lib/karafka/pro/scheduled_messages/proxy.rb +8 -0
  258. data/lib/karafka/pro/scheduled_messages/schema_validator.rb +8 -0
  259. data/lib/karafka/pro/scheduled_messages/serializer.rb +8 -0
  260. data/lib/karafka/pro/scheduled_messages/setup/config.rb +8 -0
  261. data/lib/karafka/pro/scheduled_messages/state.rb +8 -0
  262. data/lib/karafka/pro/scheduled_messages/tracker.rb +8 -0
  263. data/lib/karafka/pro/scheduled_messages.rb +8 -0
  264. data/lib/karafka/pro/swarm/liveness_listener.rb +29 -14
  265. data/lib/karafka/processing/jobs_queue.rb +10 -0
  266. data/lib/karafka/server.rb +9 -0
  267. data/lib/karafka/setup/config_proxy.rb +9 -1
  268. data/lib/karafka/swarm/liveness_listener.rb +17 -8
  269. data/lib/karafka/swarm/node.rb +1 -30
  270. data/lib/karafka/swarm/producer_replacer.rb +110 -0
  271. data/lib/karafka/swarm/supervisor.rb +3 -0
  272. data/lib/karafka/version.rb +1 -1
  273. metadata +6 -2
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Karafka
4
+ module Swarm
5
+ # Builds a new WaterDrop producer that inherits configuration from an old one
6
+ #
7
+ # When a swarm node forks, the parent's producer must be replaced with a new one.
8
+ # This class encapsulates the logic for building that new producer, inheriting all relevant
9
+ # settings from the old one while generating fresh connection-level configuration.
10
+ class ProducerReplacer
11
+ # Attributes that should not be directly copied from the old producer config because they
12
+ # are either regenerated fresh (kafka, logger, id) or handled via their own namespaced
13
+ # migration (oauth, polling, polling.fd).
14
+ SKIPPABLE_ATTRIBUTES = %i[
15
+ id
16
+ kafka
17
+ logger
18
+ oauth
19
+ polling
20
+ fd
21
+ ].freeze
22
+
23
+ private_constant :SKIPPABLE_ATTRIBUTES
24
+
25
+ # Builds a new WaterDrop producer inheriting configuration from the old one
26
+ #
27
+ # @param old_producer [WaterDrop::Producer] the old producer to inherit settings from
28
+ # @param kafka [Hash] app-level kafka configuration
29
+ # @param logger [Object] logger instance for the new producer
30
+ # @return [WaterDrop::Producer] new producer with inherited configuration
31
+ def call(old_producer, kafka, logger)
32
+ old_producer_config = old_producer.config
33
+
34
+ WaterDrop::Producer.new do |p_config|
35
+ p_config.logger = logger
36
+
37
+ migrate_kafka(p_config, old_producer_config, kafka)
38
+ migrate_root(p_config, old_producer_config)
39
+ migrate_oauth(p_config, old_producer_config)
40
+ migrate_polling(p_config, old_producer_config)
41
+ migrate_polling_fd(p_config, old_producer_config)
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ # Migrates root-level producer attributes from the old producer, skipping those that are
48
+ # regenerated fresh or handled by their own namespaced migration
49
+ #
50
+ # @param p_config [WaterDrop::Config] new producer config being built
51
+ # @param old_producer_config [WaterDrop::Config] old producer config to inherit from
52
+ def migrate_root(p_config, old_producer_config)
53
+ old_producer_config.to_h.each do |key, value|
54
+ next if SKIPPABLE_ATTRIBUTES.include?(key)
55
+
56
+ p_config.public_send("#{key}=", value)
57
+ end
58
+ end
59
+
60
+ # Builds fresh kafka config from app-level settings and preserves any producer-specific
61
+ # kafka settings from the old producer (e.g., enable.idempotence) that aren't in the
62
+ # base app kafka config
63
+ #
64
+ # @param p_config [WaterDrop::Config] new producer config being built
65
+ # @param old_producer_config [WaterDrop::Config] old producer config to inherit from
66
+ # @param kafka [Hash] app-level kafka configuration
67
+ def migrate_kafka(p_config, old_producer_config, kafka)
68
+ p_config.kafka = Setup::AttributesMap.producer(kafka.dup)
69
+
70
+ old_producer_config.kafka.each do |key, value|
71
+ next if p_config.kafka.key?(key)
72
+
73
+ p_config.kafka[key] = value
74
+ end
75
+ end
76
+
77
+ # Migrates oauth configuration from the old producer
78
+ #
79
+ # @param p_config [WaterDrop::Config] new producer config being built
80
+ # @param old_producer_config [WaterDrop::Config] old producer config to inherit from
81
+ def migrate_oauth(p_config, old_producer_config)
82
+ old_producer_config.oauth.to_h.each do |key, value|
83
+ p_config.oauth.public_send("#{key}=", value)
84
+ end
85
+ end
86
+
87
+ # Migrates polling configuration from the old producer
88
+ #
89
+ # @param p_config [WaterDrop::Config] new producer config being built
90
+ # @param old_producer_config [WaterDrop::Config] old producer config to inherit from
91
+ def migrate_polling(p_config, old_producer_config)
92
+ old_producer_config.polling.to_h.each do |key, value|
93
+ next if SKIPPABLE_ATTRIBUTES.include?(key)
94
+
95
+ p_config.polling.public_send("#{key}=", value)
96
+ end
97
+ end
98
+
99
+ # Migrates polling fd configuration from the old producer
100
+ #
101
+ # @param p_config [WaterDrop::Config] new producer config being built
102
+ # @param old_producer_config [WaterDrop::Config] old producer config to inherit from
103
+ def migrate_polling_fd(p_config, old_producer_config)
104
+ old_producer_config.polling.fd.to_h.each do |key, value|
105
+ p_config.polling.fd.public_send("#{key}=", value)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -152,6 +152,9 @@ module Karafka
152
152
  caller: self,
153
153
  error: e,
154
154
  manager: manager,
155
+ active_listeners: [],
156
+ alive_workers: [],
157
+ in_processing: {},
155
158
  type: "app.stopping.error"
156
159
  )
157
160
 
@@ -3,5 +3,5 @@
3
3
  # Main module namespace
4
4
  module Karafka
5
5
  # Current Karafka version
6
- VERSION = "2.5.6"
6
+ VERSION = "2.5.9"
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.6
4
+ version: 2.5.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -206,6 +206,8 @@ files:
206
206
  - lib/karafka/pro/active_job/consumer.rb
207
207
  - lib/karafka/pro/active_job/dispatcher.rb
208
208
  - lib/karafka/pro/active_job/job_options_contract.rb
209
+ - lib/karafka/pro/admin/recovery.rb
210
+ - lib/karafka/pro/admin/recovery/errors.rb
209
211
  - lib/karafka/pro/base_consumer.rb
210
212
  - lib/karafka/pro/cleaner.rb
211
213
  - lib/karafka/pro/cleaner/errors.rb
@@ -374,6 +376,7 @@ files:
374
376
  - lib/karafka/pro/routing/features/long_running_job/topic.rb
375
377
  - lib/karafka/pro/routing/features/multiplexing.rb
376
378
  - lib/karafka/pro/routing/features/multiplexing/config.rb
379
+ - lib/karafka/pro/routing/features/multiplexing/contracts/routing.rb
377
380
  - lib/karafka/pro/routing/features/multiplexing/contracts/topic.rb
378
381
  - lib/karafka/pro/routing/features/multiplexing/patches/contracts/consumer_group.rb
379
382
  - lib/karafka/pro/routing/features/multiplexing/proxy.rb
@@ -542,6 +545,7 @@ files:
542
545
  - lib/karafka/swarm/liveness_listener.rb
543
546
  - lib/karafka/swarm/manager.rb
544
547
  - lib/karafka/swarm/node.rb
548
+ - lib/karafka/swarm/producer_replacer.rb
545
549
  - lib/karafka/swarm/supervisor.rb
546
550
  - lib/karafka/templates/application_consumer.rb.erb
547
551
  - lib/karafka/templates/example_consumer.rb.erb
@@ -576,7 +580,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
576
580
  - !ruby/object:Gem::Version
577
581
  version: '0'
578
582
  requirements: []
579
- rubygems_version: 4.0.3
583
+ rubygems_version: 4.0.6
580
584
  specification_version: 4
581
585
  summary: Karafka is Ruby and Rails efficient Kafka processing framework.
582
586
  test_files: []