karafka 2.4.0 → 2.4.18

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 (326) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +26 -34
  4. data/.github/workflows/ci.yml +18 -6
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.md +146 -1
  7. data/Gemfile +10 -5
  8. data/Gemfile.lock +60 -39
  9. data/LICENSE +8 -3
  10. data/bin/integrations +13 -1
  11. data/certs/cert.pem +26 -0
  12. data/config/locales/errors.yml +18 -2
  13. data/config/locales/pro_errors.yml +44 -0
  14. data/docker-compose.yml +1 -3
  15. data/karafka.gemspec +6 -4
  16. data/lib/active_job/queue_adapters/karafka_adapter.rb +18 -7
  17. data/lib/karafka/active_job/dispatcher.rb +13 -0
  18. data/lib/karafka/active_job/job_extensions.rb +3 -0
  19. data/lib/karafka/admin.rb +86 -0
  20. data/lib/karafka/app.rb +17 -0
  21. data/lib/karafka/base_consumer.rb +130 -19
  22. data/lib/karafka/cli/base.rb +24 -8
  23. data/lib/karafka/cli/install.rb +2 -1
  24. data/lib/karafka/cli/server.rb +1 -0
  25. data/lib/karafka/cli/swarm.rb +1 -0
  26. data/lib/karafka/cli/topics/align.rb +12 -2
  27. data/lib/karafka/cli/topics/plan.rb +54 -6
  28. data/lib/karafka/cli/topics.rb +45 -18
  29. data/lib/karafka/connection/client.rb +102 -35
  30. data/lib/karafka/connection/listener.rb +48 -11
  31. data/lib/karafka/connection/messages_buffer.rb +19 -6
  32. data/lib/karafka/connection/proxy.rb +3 -0
  33. data/lib/karafka/connection/raw_messages_buffer.rb +43 -9
  34. data/lib/karafka/connection/rebalance_manager.rb +24 -13
  35. data/lib/karafka/contracts/config.rb +4 -0
  36. data/lib/karafka/contracts/consumer_group.rb +17 -0
  37. data/lib/karafka/contracts/routing.rb +59 -0
  38. data/lib/karafka/contracts/topic.rb +14 -0
  39. data/lib/karafka/embedded.rb +46 -3
  40. data/lib/karafka/errors.rb +3 -2
  41. data/lib/karafka/helpers/async.rb +11 -2
  42. data/lib/karafka/helpers/config_importer.rb +13 -0
  43. data/lib/karafka/instrumentation/assignments_tracker.rb +7 -2
  44. data/lib/karafka/instrumentation/logger_listener.rb +45 -4
  45. data/lib/karafka/instrumentation/notifications.rb +12 -0
  46. data/lib/karafka/instrumentation/vendors/appsignal/client.rb +32 -11
  47. data/lib/karafka/instrumentation/vendors/appsignal/errors_listener.rb +1 -1
  48. data/lib/karafka/instrumentation/vendors/appsignal/metrics_listener.rb +3 -1
  49. data/lib/karafka/instrumentation/vendors/datadog/logger_listener.rb +17 -19
  50. data/lib/karafka/instrumentation/vendors/datadog/metrics_listener.rb +27 -18
  51. data/lib/karafka/instrumentation/vendors/kubernetes/base_listener.rb +2 -2
  52. data/lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb +41 -13
  53. data/lib/karafka/messages/message.rb +9 -9
  54. data/lib/karafka/pro/active_job/consumer.rb +2 -10
  55. data/lib/karafka/pro/active_job/dispatcher.rb +67 -19
  56. data/lib/karafka/pro/active_job/job_options_contract.rb +12 -10
  57. data/lib/karafka/pro/base_consumer.rb +2 -10
  58. data/lib/karafka/pro/cleaner/errors.rb +2 -10
  59. data/lib/karafka/pro/cleaner/messages/message.rb +14 -12
  60. data/lib/karafka/pro/cleaner/messages/messages.rb +2 -10
  61. data/lib/karafka/pro/cleaner/messages/metadata.rb +41 -0
  62. data/lib/karafka/pro/cleaner.rb +3 -10
  63. data/lib/karafka/pro/connection/manager.rb +6 -10
  64. data/lib/karafka/pro/connection/multiplexing/listener.rb +2 -10
  65. data/lib/karafka/pro/contracts/base.rb +2 -10
  66. data/lib/karafka/pro/contracts/server_cli_options.rb +2 -10
  67. data/lib/karafka/pro/encryption/cipher.rb +2 -10
  68. data/lib/karafka/pro/encryption/contracts/config.rb +2 -10
  69. data/lib/karafka/pro/encryption/errors.rb +2 -10
  70. data/lib/karafka/pro/encryption/messages/middleware.rb +2 -10
  71. data/lib/karafka/pro/encryption/messages/parser.rb +2 -10
  72. data/lib/karafka/pro/encryption/setup/config.rb +2 -10
  73. data/lib/karafka/pro/encryption.rb +2 -10
  74. data/lib/karafka/pro/instrumentation/performance_tracker.rb +2 -10
  75. data/lib/karafka/pro/iterator/expander.rb +2 -10
  76. data/lib/karafka/pro/iterator/tpl_builder.rb +2 -10
  77. data/lib/karafka/pro/iterator.rb +2 -10
  78. data/lib/karafka/pro/loader.rb +5 -11
  79. data/lib/karafka/pro/processing/adaptive_iterator/consumer.rb +54 -0
  80. data/lib/karafka/pro/processing/adaptive_iterator/tracker.rb +67 -0
  81. data/lib/karafka/pro/processing/collapser.rb +2 -10
  82. data/lib/karafka/pro/processing/coordinator.rb +2 -10
  83. data/lib/karafka/pro/processing/coordinators/errors_tracker.rb +2 -10
  84. data/lib/karafka/pro/processing/coordinators/filters_applier.rb +19 -10
  85. data/lib/karafka/pro/processing/coordinators/virtual_offset_manager.rb +2 -10
  86. data/lib/karafka/pro/processing/executor.rb +2 -10
  87. data/lib/karafka/pro/processing/expansions_selector.rb +3 -10
  88. data/lib/karafka/pro/processing/filters/base.rb +14 -10
  89. data/lib/karafka/pro/processing/filters/delayer.rb +4 -12
  90. data/lib/karafka/pro/processing/filters/expirer.rb +2 -10
  91. data/lib/karafka/pro/processing/filters/inline_insights_delayer.rb +2 -10
  92. data/lib/karafka/pro/processing/filters/throttler.rb +2 -10
  93. data/lib/karafka/pro/processing/filters/virtual_limiter.rb +2 -10
  94. data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +4 -10
  95. data/lib/karafka/pro/processing/jobs/eofed_non_blocking.rb +26 -0
  96. data/lib/karafka/pro/processing/jobs/periodic.rb +4 -10
  97. data/lib/karafka/pro/processing/jobs/periodic_non_blocking.rb +4 -10
  98. data/lib/karafka/pro/processing/jobs/revoked_non_blocking.rb +4 -10
  99. data/lib/karafka/pro/processing/jobs_builder.rb +14 -10
  100. data/lib/karafka/pro/processing/jobs_queue.rb +2 -10
  101. data/lib/karafka/pro/processing/offset_metadata/consumer.rb +2 -10
  102. data/lib/karafka/pro/processing/offset_metadata/fetcher.rb +2 -10
  103. data/lib/karafka/pro/processing/offset_metadata/listener.rb +2 -10
  104. data/lib/karafka/pro/processing/partitioner.rb +35 -24
  105. data/lib/karafka/pro/processing/periodic_job/consumer.rb +2 -10
  106. data/lib/karafka/pro/processing/piping/consumer.rb +2 -10
  107. data/lib/karafka/pro/processing/schedulers/base.rb +2 -10
  108. data/lib/karafka/pro/processing/schedulers/default.rb +3 -10
  109. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom.rb +3 -11
  110. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb +3 -11
  111. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom.rb +2 -10
  112. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom_vp.rb +2 -10
  113. data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb +3 -11
  114. data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb +3 -11
  115. data/lib/karafka/pro/processing/strategies/aj/dlq_mom.rb +2 -10
  116. data/lib/karafka/pro/processing/strategies/aj/dlq_mom_vp.rb +2 -10
  117. data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom.rb +2 -10
  118. data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb +3 -11
  119. data/lib/karafka/pro/processing/strategies/aj/ftr_mom.rb +2 -10
  120. data/lib/karafka/pro/processing/strategies/aj/ftr_mom_vp.rb +2 -10
  121. data/lib/karafka/pro/processing/strategies/aj/lrj_mom.rb +2 -10
  122. data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +5 -13
  123. data/lib/karafka/pro/processing/strategies/aj/mom.rb +2 -10
  124. data/lib/karafka/pro/processing/strategies/aj/mom_vp.rb +2 -10
  125. data/lib/karafka/pro/processing/strategies/base.rb +2 -10
  126. data/lib/karafka/pro/processing/strategies/default.rb +140 -58
  127. data/lib/karafka/pro/processing/strategies/dlq/default.rb +23 -15
  128. data/lib/karafka/pro/processing/strategies/dlq/ftr.rb +2 -10
  129. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb +3 -11
  130. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb +7 -11
  131. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom_vp.rb +2 -10
  132. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_vp.rb +2 -10
  133. data/lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb +19 -11
  134. data/lib/karafka/pro/processing/strategies/dlq/ftr_mom_vp.rb +2 -10
  135. data/lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb +2 -10
  136. data/lib/karafka/pro/processing/strategies/dlq/lrj.rb +3 -11
  137. data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +19 -11
  138. data/lib/karafka/pro/processing/strategies/dlq/lrj_mom_vp.rb +2 -10
  139. data/lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb +2 -10
  140. data/lib/karafka/pro/processing/strategies/dlq/mom.rb +24 -16
  141. data/lib/karafka/pro/processing/strategies/dlq/mom_vp.rb +2 -10
  142. data/lib/karafka/pro/processing/strategies/dlq/vp.rb +2 -10
  143. data/lib/karafka/pro/processing/strategies/ftr/default.rb +17 -12
  144. data/lib/karafka/pro/processing/strategies/ftr/vp.rb +2 -10
  145. data/lib/karafka/pro/processing/strategies/lrj/default.rb +5 -13
  146. data/lib/karafka/pro/processing/strategies/lrj/ftr.rb +3 -11
  147. data/lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb +2 -10
  148. data/lib/karafka/pro/processing/strategies/lrj/ftr_mom_vp.rb +2 -10
  149. data/lib/karafka/pro/processing/strategies/lrj/ftr_vp.rb +2 -10
  150. data/lib/karafka/pro/processing/strategies/lrj/mom.rb +4 -12
  151. data/lib/karafka/pro/processing/strategies/lrj/mom_vp.rb +2 -10
  152. data/lib/karafka/pro/processing/strategies/lrj/vp.rb +2 -10
  153. data/lib/karafka/pro/processing/strategies/mom/default.rb +2 -10
  154. data/lib/karafka/pro/processing/strategies/mom/ftr.rb +2 -10
  155. data/lib/karafka/pro/processing/strategies/mom/ftr_vp.rb +2 -10
  156. data/lib/karafka/pro/processing/strategies/mom/vp.rb +2 -10
  157. data/lib/karafka/pro/processing/strategies/vp/default.rb +5 -10
  158. data/lib/karafka/pro/processing/strategies.rb +2 -10
  159. data/lib/karafka/pro/processing/strategy_selector.rb +2 -10
  160. data/lib/karafka/pro/processing/subscription_groups_coordinator.rb +2 -10
  161. data/lib/karafka/pro/recurring_tasks/consumer.rb +97 -0
  162. data/lib/karafka/pro/recurring_tasks/contracts/config.rb +45 -0
  163. data/lib/karafka/pro/recurring_tasks/contracts/task.rb +33 -0
  164. data/lib/karafka/pro/recurring_tasks/deserializer.rb +27 -0
  165. data/lib/karafka/pro/recurring_tasks/dispatcher.rb +79 -0
  166. data/lib/karafka/pro/recurring_tasks/errors.rb +26 -0
  167. data/lib/karafka/pro/recurring_tasks/executor.rb +144 -0
  168. data/lib/karafka/pro/recurring_tasks/listener.rb +30 -0
  169. data/lib/karafka/pro/recurring_tasks/matcher.rb +30 -0
  170. data/lib/karafka/pro/recurring_tasks/schedule.rb +55 -0
  171. data/lib/karafka/pro/recurring_tasks/serializer.rb +105 -0
  172. data/lib/karafka/pro/recurring_tasks/setup/config.rb +44 -0
  173. data/lib/karafka/pro/recurring_tasks/task.rb +143 -0
  174. data/lib/karafka/pro/recurring_tasks.rb +79 -0
  175. data/lib/karafka/pro/routing/features/active_job/builder.rb +2 -10
  176. data/lib/karafka/pro/routing/features/active_job.rb +2 -10
  177. data/lib/karafka/pro/routing/features/adaptive_iterator/config.rb +26 -0
  178. data/lib/karafka/pro/routing/features/adaptive_iterator/contracts/topic.rb +66 -0
  179. data/lib/karafka/pro/routing/features/adaptive_iterator/topic.rb +54 -0
  180. data/lib/karafka/pro/routing/features/adaptive_iterator.rb +23 -0
  181. data/lib/karafka/pro/routing/features/base.rb +2 -10
  182. data/lib/karafka/pro/routing/features/dead_letter_queue/contracts/topic.rb +2 -10
  183. data/lib/karafka/pro/routing/features/dead_letter_queue/topic.rb +2 -10
  184. data/lib/karafka/pro/routing/features/dead_letter_queue.rb +2 -10
  185. data/lib/karafka/pro/routing/features/delaying/config.rb +2 -10
  186. data/lib/karafka/pro/routing/features/delaying/contracts/topic.rb +2 -10
  187. data/lib/karafka/pro/routing/features/delaying/topic.rb +2 -10
  188. data/lib/karafka/pro/routing/features/delaying.rb +2 -10
  189. data/lib/karafka/pro/routing/features/direct_assignments/config.rb +2 -10
  190. data/lib/karafka/pro/routing/features/direct_assignments/contracts/consumer_group.rb +2 -10
  191. data/lib/karafka/pro/routing/features/direct_assignments/contracts/topic.rb +2 -10
  192. data/lib/karafka/pro/routing/features/direct_assignments/subscription_group.rb +2 -10
  193. data/lib/karafka/pro/routing/features/direct_assignments/topic.rb +2 -10
  194. data/lib/karafka/pro/routing/features/direct_assignments.rb +2 -10
  195. data/lib/karafka/pro/routing/features/expiring/config.rb +2 -10
  196. data/lib/karafka/pro/routing/features/expiring/contracts/topic.rb +2 -10
  197. data/lib/karafka/pro/routing/features/expiring/topic.rb +2 -10
  198. data/lib/karafka/pro/routing/features/expiring.rb +2 -10
  199. data/lib/karafka/pro/routing/features/filtering/config.rb +2 -10
  200. data/lib/karafka/pro/routing/features/filtering/contracts/topic.rb +2 -10
  201. data/lib/karafka/pro/routing/features/filtering/topic.rb +2 -10
  202. data/lib/karafka/pro/routing/features/filtering.rb +2 -10
  203. data/lib/karafka/pro/routing/features/inline_insights/config.rb +2 -10
  204. data/lib/karafka/pro/routing/features/inline_insights/contracts/topic.rb +2 -10
  205. data/lib/karafka/pro/routing/features/inline_insights/topic.rb +2 -10
  206. data/lib/karafka/pro/routing/features/inline_insights.rb +2 -10
  207. data/lib/karafka/pro/routing/features/long_running_job/config.rb +2 -10
  208. data/lib/karafka/pro/routing/features/long_running_job/contracts/topic.rb +2 -10
  209. data/lib/karafka/pro/routing/features/long_running_job/topic.rb +2 -10
  210. data/lib/karafka/pro/routing/features/long_running_job.rb +2 -10
  211. data/lib/karafka/pro/routing/features/multiplexing/config.rb +2 -10
  212. data/lib/karafka/pro/routing/features/multiplexing/contracts/topic.rb +2 -10
  213. data/lib/karafka/pro/routing/features/multiplexing/patches/contracts/consumer_group.rb +2 -10
  214. data/lib/karafka/pro/routing/features/multiplexing/proxy.rb +2 -10
  215. data/lib/karafka/pro/routing/features/multiplexing/subscription_group.rb +2 -10
  216. data/lib/karafka/pro/routing/features/multiplexing/subscription_groups_builder.rb +2 -10
  217. data/lib/karafka/pro/routing/features/multiplexing.rb +2 -10
  218. data/lib/karafka/pro/routing/features/non_blocking_job/topic.rb +2 -10
  219. data/lib/karafka/pro/routing/features/non_blocking_job.rb +2 -10
  220. data/lib/karafka/pro/routing/features/offset_metadata/config.rb +2 -10
  221. data/lib/karafka/pro/routing/features/offset_metadata/contracts/topic.rb +2 -10
  222. data/lib/karafka/pro/routing/features/offset_metadata/topic.rb +2 -10
  223. data/lib/karafka/pro/routing/features/offset_metadata.rb +2 -10
  224. data/lib/karafka/pro/routing/features/patterns/builder.rb +2 -10
  225. data/lib/karafka/pro/routing/features/patterns/config.rb +2 -10
  226. data/lib/karafka/pro/routing/features/patterns/consumer_group.rb +2 -10
  227. data/lib/karafka/pro/routing/features/patterns/contracts/consumer_group.rb +2 -10
  228. data/lib/karafka/pro/routing/features/patterns/contracts/pattern.rb +2 -10
  229. data/lib/karafka/pro/routing/features/patterns/contracts/topic.rb +2 -10
  230. data/lib/karafka/pro/routing/features/patterns/detector.rb +2 -10
  231. data/lib/karafka/pro/routing/features/patterns/pattern.rb +2 -10
  232. data/lib/karafka/pro/routing/features/patterns/patterns.rb +2 -10
  233. data/lib/karafka/pro/routing/features/patterns/topic.rb +2 -10
  234. data/lib/karafka/pro/routing/features/patterns/topics.rb +2 -10
  235. data/lib/karafka/pro/routing/features/patterns.rb +2 -10
  236. data/lib/karafka/pro/routing/features/pausing/contracts/topic.rb +2 -10
  237. data/lib/karafka/pro/routing/features/pausing/topic.rb +2 -10
  238. data/lib/karafka/pro/routing/features/pausing.rb +2 -10
  239. data/lib/karafka/pro/routing/features/periodic_job/config.rb +2 -10
  240. data/lib/karafka/pro/routing/features/periodic_job/contracts/topic.rb +2 -10
  241. data/lib/karafka/pro/routing/features/periodic_job/topic.rb +2 -10
  242. data/lib/karafka/pro/routing/features/periodic_job.rb +2 -10
  243. data/lib/karafka/pro/routing/features/recurring_tasks/builder.rb +123 -0
  244. data/lib/karafka/pro/routing/features/recurring_tasks/config.rb +20 -0
  245. data/lib/karafka/pro/routing/features/recurring_tasks/contracts/topic.rb +32 -0
  246. data/lib/karafka/pro/routing/features/recurring_tasks/proxy.rb +19 -0
  247. data/lib/karafka/pro/routing/features/recurring_tasks/topic.rb +36 -0
  248. data/lib/karafka/pro/routing/features/recurring_tasks.rb +17 -0
  249. data/lib/karafka/pro/routing/features/scheduled_messages/builder.rb +123 -0
  250. data/lib/karafka/pro/routing/features/scheduled_messages/config.rb +20 -0
  251. data/lib/karafka/pro/routing/features/scheduled_messages/contracts/topic.rb +32 -0
  252. data/lib/karafka/pro/routing/features/scheduled_messages/proxy.rb +19 -0
  253. data/lib/karafka/pro/routing/features/scheduled_messages/topic.rb +36 -0
  254. data/lib/karafka/pro/routing/features/scheduled_messages.rb +16 -0
  255. data/lib/karafka/pro/routing/features/swarm/config.rb +2 -10
  256. data/lib/karafka/pro/routing/features/swarm/contracts/routing.rb +2 -10
  257. data/lib/karafka/pro/routing/features/swarm/contracts/topic.rb +2 -10
  258. data/lib/karafka/pro/routing/features/swarm/topic.rb +2 -10
  259. data/lib/karafka/pro/routing/features/swarm.rb +2 -10
  260. data/lib/karafka/pro/routing/features/throttling/config.rb +2 -10
  261. data/lib/karafka/pro/routing/features/throttling/contracts/topic.rb +2 -10
  262. data/lib/karafka/pro/routing/features/throttling/topic.rb +2 -10
  263. data/lib/karafka/pro/routing/features/throttling.rb +2 -10
  264. data/lib/karafka/pro/routing/features/virtual_partitions/config.rb +3 -10
  265. data/lib/karafka/pro/routing/features/virtual_partitions/contracts/topic.rb +3 -10
  266. data/lib/karafka/pro/routing/features/virtual_partitions/topic.rb +10 -12
  267. data/lib/karafka/pro/routing/features/virtual_partitions.rb +2 -10
  268. data/lib/karafka/pro/scheduled_messages/consumer.rb +177 -0
  269. data/lib/karafka/pro/scheduled_messages/contracts/config.rb +48 -0
  270. data/lib/karafka/pro/scheduled_messages/contracts/message.rb +88 -0
  271. data/lib/karafka/pro/scheduled_messages/daily_buffer.rb +71 -0
  272. data/lib/karafka/pro/scheduled_messages/day.rb +37 -0
  273. data/lib/karafka/pro/scheduled_messages/deserializers/headers.rb +38 -0
  274. data/lib/karafka/pro/scheduled_messages/deserializers/payload.rb +27 -0
  275. data/lib/karafka/pro/scheduled_messages/dispatcher.rb +114 -0
  276. data/lib/karafka/pro/scheduled_messages/errors.rb +20 -0
  277. data/lib/karafka/pro/scheduled_messages/max_epoch.rb +33 -0
  278. data/lib/karafka/pro/scheduled_messages/proxy.rb +177 -0
  279. data/lib/karafka/pro/scheduled_messages/schema_validator.rb +29 -0
  280. data/lib/karafka/pro/scheduled_messages/serializer.rb +47 -0
  281. data/lib/karafka/pro/scheduled_messages/setup/config.rb +52 -0
  282. data/lib/karafka/pro/scheduled_messages/state.rb +54 -0
  283. data/lib/karafka/pro/scheduled_messages/tracker.rb +56 -0
  284. data/lib/karafka/pro/scheduled_messages.rb +59 -0
  285. data/lib/karafka/pro/swarm/liveness_listener.rb +2 -10
  286. data/lib/karafka/processing/coordinator.rb +14 -0
  287. data/lib/karafka/processing/executor.rb +29 -1
  288. data/lib/karafka/processing/jobs/base.rb +13 -0
  289. data/lib/karafka/processing/jobs/consume.rb +2 -0
  290. data/lib/karafka/processing/jobs/eofed.rb +29 -0
  291. data/lib/karafka/processing/jobs/idle.rb +2 -0
  292. data/lib/karafka/processing/jobs/revoked.rb +2 -0
  293. data/lib/karafka/processing/jobs/shutdown.rb +2 -0
  294. data/lib/karafka/processing/jobs_builder.rb +6 -0
  295. data/lib/karafka/processing/schedulers/default.rb +1 -0
  296. data/lib/karafka/processing/strategies/aj_dlq_mom.rb +1 -1
  297. data/lib/karafka/processing/strategies/default.rb +45 -13
  298. data/lib/karafka/processing/strategies/dlq.rb +19 -5
  299. data/lib/karafka/processing/strategies/dlq_mom.rb +27 -8
  300. data/lib/karafka/processing/worker.rb +26 -13
  301. data/lib/karafka/railtie.rb +11 -42
  302. data/lib/karafka/routing/builder.rb +19 -1
  303. data/lib/karafka/routing/consumer_group.rb +9 -14
  304. data/lib/karafka/routing/features/dead_letter_queue/config.rb +3 -0
  305. data/lib/karafka/routing/features/dead_letter_queue/contracts/topic.rb +1 -0
  306. data/lib/karafka/routing/features/dead_letter_queue/topic.rb +7 -2
  307. data/lib/karafka/routing/features/eofed/config.rb +15 -0
  308. data/lib/karafka/routing/features/eofed/contracts/topic.rb +39 -0
  309. data/lib/karafka/routing/features/eofed/topic.rb +31 -0
  310. data/lib/karafka/routing/features/eofed.rb +14 -0
  311. data/lib/karafka/routing/subscription_group.rb +29 -1
  312. data/lib/karafka/routing/topic.rb +24 -1
  313. data/lib/karafka/runner.rb +10 -9
  314. data/lib/karafka/server.rb +37 -1
  315. data/lib/karafka/setup/attributes_map.rb +11 -4
  316. data/lib/karafka/setup/config.rb +11 -52
  317. data/lib/karafka/setup/defaults_injector.rb +64 -0
  318. data/lib/karafka/swarm/node.rb +2 -0
  319. data/lib/karafka/swarm/supervisor.rb +11 -2
  320. data/lib/karafka/templates/karafka.rb.erb +2 -2
  321. data/lib/karafka/version.rb +1 -1
  322. data/lib/karafka.rb +47 -7
  323. data.tar.gz.sig +0 -0
  324. metadata +116 -33
  325. metadata.gz.sig +0 -0
  326. data/certs/cert_chain.pem +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8111bc347c891837ee1f7cbabd4d98ee1c55f2bb7366e72aa077628cc4052c14
4
- data.tar.gz: 9a616eb14fbbddc433e56691540613a728cab6163632981de1c9f21abee8f0b4
3
+ metadata.gz: 66dcb47a4936205b3d71838001db5c64e6fab4da332f54fcb8e64521a081c871
4
+ data.tar.gz: 5f113ec8bc1459a5994acf8935c802b893695fd69002937b4a91b5697423cb81
5
5
  SHA512:
6
- metadata.gz: 35e52c0f5ffeace79cc58e6ef85918f6ff32c80233419dec83a5b99485cd6f5ac2b163f3d0a73e96b4ac424e27a81a3f8f848d3bed5e461b69eb28399f102d3c
7
- data.tar.gz: 544848837b53a5e0e64b9c842f8dadc63a486b784660e37a6f44a67947682c59cd112e6ac509e19de99b7b084402b38d7e00d7fff52a89c9e07172f593b3032e
6
+ metadata.gz: 1abbfec5c703e755f012d9171934e7486ab0fbfd1295c0fd2b81216156783156415aaa2d547215aa9ec8a62f54db53b269181ed6638644c66529456f897a708a
7
+ data.tar.gz: 677b50678298d384ea4862fc703327a9e351d1f2bacd82f027f4f43fd60cceaac81a93cec133c005e7f90f917162301ff5725bfe5f0ba6ed1754ce2fa0503c66
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,51 +1,43 @@
1
1
  ---
2
2
  name: Bug Report
3
- about: Report an issue with Karafka you've discovered.
3
+ about: Report an issue within the Karafka ecosystem you've discovered.
4
4
  ---
5
5
 
6
- *Be clear, concise and precise in your description of the problem.
7
- Open an issue with a descriptive title and a summary in grammatically correct,
8
- complete sentences.*
6
+ To make this process smoother for everyone involved, please read the following information before filling out the template.
9
7
 
10
- *Use the template below when reporting bugs. Please, make sure that
11
- you're running the latest stable Karafka and that the problem you're reporting
12
- hasn't been reported (and potentially fixed) already.*
8
+ Scope of the OSS Support
9
+ ===========
13
10
 
14
- *Before filing the ticket you should replace all text above the horizontal
15
- rule with your own words.*
11
+ We do not provide OSS support for outdated versions of Karafka and its components.
16
12
 
17
- --------
13
+ Please ensure that you are using a version that is still actively supported. We cannot assist with any no longer maintained versions unless you support us with our Pro offering (https://karafka.io/docs/Pro-Support/).
18
14
 
19
- ## Expected behavior
15
+ We acknowledge that understanding the specifics of your application and its configuration can be essential for resolving certain issues. However, due to the extensive time and resources such analysis can require, this may fall beyond our Open Source Support scope.
20
16
 
21
- Describe here how you expected Karafka to behave in this particular situation.
17
+ If Karafka or its components are critical to your infrastructure, we encourage you to consider our Pro Offering.
22
18
 
23
- ## Actual behavior
19
+ By backing us up, you can gain direct assistance and ensure your use case receives the dedicated attention it deserves.
24
20
 
25
- Describe here what actually happened.
26
21
 
27
- ## Steps to reproduce the problem
22
+ Important Links to Read
23
+ ===========
28
24
 
29
- This is extremely important! Providing us with a reliable way to reproduce
30
- a problem will expedite its solution.
25
+ Please take a moment to review the following resources before submitting your report:
31
26
 
32
- ## Your setup details
27
+ - Issue Reporting Guide: https://karafka.io/docs/Support/#issue-reporting-guide
28
+ - Support Policy: https://karafka.io/docs/Support/
29
+ - Versions, Lifecycle, and EOL: https://karafka.io/docs/Versions-Lifecycle-and-EOL/
33
30
 
34
- Please provide kafka version and the output of `karafka info` or `bundle exec karafka info` if using Bundler.
35
31
 
36
- Here's an example:
32
+ Bug Report Details
33
+ ===========
37
34
 
38
- ```
39
- $ [bundle exec] karafka info
40
- Karafka version: 2.2.10 + Pro
41
- Ruby version: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
42
- Rdkafka version: 0.13.8
43
- Consumer groups count: 2
44
- Subscription groups count: 2
45
- Workers count: 2
46
- Application client id: example_app
47
- Boot file: /app/karafka.rb
48
- Environment: development
49
- License: Commercial
50
- License entity: karafka-ci
51
- ```
35
+ Please provide all the details per our Issue Reporting Guide: https://karafka.io/docs/Support/#issue-reporting-guide
36
+
37
+ Failing to provide the required details may result in the issue being closed. Please include all necessary information to help us understand and resolve your issue effectively.
38
+
39
+
40
+ Additional Context
41
+ ===========
42
+
43
+ Add any other context about the problem here.
@@ -27,7 +27,7 @@ jobs:
27
27
  - name: Set up Ruby
28
28
  uses: ruby/setup-ruby@v1
29
29
  with:
30
- ruby-version: 3.3
30
+ ruby-version: 3.4
31
31
  bundler-cache: true
32
32
 
33
33
  - name: Install Diffend plugin
@@ -73,12 +73,12 @@ jobs:
73
73
  fail-fast: false
74
74
  matrix:
75
75
  ruby:
76
+ - '3.4'
76
77
  - '3.3'
77
78
  - '3.2'
78
79
  - '3.1'
79
- - '3.0'
80
80
  include:
81
- - ruby: '3.3'
81
+ - ruby: '3.4'
82
82
  coverage: 'true'
83
83
  steps:
84
84
  - uses: actions/checkout@v4
@@ -89,6 +89,13 @@ jobs:
89
89
  run: |
90
90
  docker compose up -d || (sleep 5 && docker compose up -d)
91
91
 
92
+ # Newer versions of ActiveSupport and Rails do not work with Ruby 3.1 anymore.
93
+ # While we use newer by default we do want to resolve older and test, thus we remove
94
+ # Gemfile.lock and let it resolve to the most compatible version possible
95
+ - name: Remove Gemfile.lock if Ruby 3.1
96
+ if: matrix.ruby == '3.1'
97
+ run: rm -f Gemfile.lock
98
+
92
99
  - name: Set up Ruby
93
100
  uses: ruby/setup-ruby@v1
94
101
  with:
@@ -113,10 +120,10 @@ jobs:
113
120
  fail-fast: false
114
121
  matrix:
115
122
  ruby:
123
+ - '3.4'
116
124
  - '3.3'
117
125
  - '3.2'
118
126
  - '3.1'
119
- - '3.0'
120
127
  steps:
121
128
  - uses: actions/checkout@v4
122
129
  - name: Install package dependencies
@@ -146,6 +153,11 @@ jobs:
146
153
 
147
154
  bundle config set without 'tools benchmarks docs'
148
155
 
156
+ - name: Fix directory permissions for Bundler
157
+ run: |
158
+ chmod -R o-w /opt/hostedtoolcache/Ruby/3*/x64/lib/ruby/gems/3*/gems
159
+ chmod +t /opt/hostedtoolcache/Ruby/3*/x64/lib/ruby/gems/3*/gems
160
+
149
161
  - name: Bundle install
150
162
  run: |
151
163
  bundle config set without development
@@ -159,17 +171,17 @@ jobs:
159
171
  run: bin/integrations --exclude '/pro'
160
172
 
161
173
  integrations_pro:
162
- timeout-minutes: 40
174
+ timeout-minutes: 45
163
175
  runs-on: ubuntu-latest
164
176
  needs: diffend
165
177
  strategy:
166
178
  fail-fast: false
167
179
  matrix:
168
180
  ruby:
181
+ - '3.4'
169
182
  - '3.3'
170
183
  - '3.2'
171
184
  - '3.1'
172
- - '3.0'
173
185
  steps:
174
186
  - uses: actions/checkout@v4
175
187
  - name: Install package dependencies
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.3.1
1
+ 3.4.1
data/CHANGELOG.md CHANGED
@@ -1,4 +1,145 @@
1
- # Karafka framework changelog
1
+ # Karafka Framework Changelog
2
+
3
+ ## 2.4.18 (2025-04-09)
4
+ - [Fix] Make sure `Bundler.with_unbundled_env` is not called multiple times.
5
+
6
+ ## 2.4.17 (2025-01-15)
7
+ - [Enhancement] Clean message key and headers when cleaning messages via the cleaner API (Pro).
8
+ - [Enhancement] Allow for setting `metadata: false` in the cleaner API for granular cleaning control (Pro)
9
+ - [Enhancement] Instrument successful transaction via `consumer.consuming.transaction` event (Pro).
10
+
11
+ ## 2.4.16 (2024-12-27)
12
+ - [Enhancement] Improve post-rebalance revocation messages filtering.
13
+ - [Enhancement] Introduce `Consumer#wrap` for connection pooling management and other wrapped operations.
14
+ - [Enhancement] Guard transactional operations from marking beyond assignment ownership under some extreme edge-cases.
15
+ - [Enhancement] Improve VPs work with transactional producers.
16
+ - [Enhancement] Prevent non-transactional operations leakage into transactional managed offset management consumers.
17
+ - [Fix] Prevent transactions from being marked with a non-transactional default producer when automatic offset management and other advanced features are on.
18
+ - [Fix] Fix `kafka_format` `KeyError` that occurs when a non-hash is assigned to the kafka scope of the settings.
19
+ - [Fix] Non cooperative-sticky transactional offset management can refetch reclaimed partitions.
20
+
21
+ ## 2.4.15 (2024-12-04)
22
+ - [Fix] Assignment tracker current state fetch during a rebalance loop can cause an error on multi CG setup.
23
+ - [Fix] Prevent double post-transaction offset dispatch to Kafka.
24
+
25
+ ## 2.4.14 (2024-11-25)
26
+ - [Enhancement] Improve low-level critical error reporting.
27
+ - [Enhancement] Expand Kubernetes Liveness state reporting with critical errors detection.
28
+ - [Enhancement] Save several string allocations and one array allocation on each job execution when using Datadog instrumentation.
29
+ - [Enhancement] Support `eofed` jobs in the AppSignal instrumentation.
30
+ - [Enhancement] Allow running bootfile-less Rails setup Karafka CLI commands where stuff is configured in the initializers.
31
+ - [Fix] `Instrumentation::Vendors::Datadog::LoggerListener` treats eof jobs as consume jobs.
32
+
33
+ ## 2.4.13 (2024-10-11)
34
+ - [Enhancement] Make declarative topics return different exit codes on migrable/non-migrable states (0 - no changes, 2 - changes) when used with `--detailed-exitcode` flag.
35
+ - [Enhancement] Introduce `config.strict_declarative_topics` that should force declaratives on all non-pattern based topics and DLQ topics
36
+ - [Enhancement] Report ignored repartitioning to lower number of partitions in declarative topics.
37
+ - [Enhancement] Promote the `LivenessListener#healty?` to a public API.
38
+ - [Fix] Fix `Karafka::Errors::MissingBootFileError` when debugging in VScode with ruby-lsp.
39
+ - [Fix] Require `karafka-core` `>=` `2.4.4` to prevent dependencies conflicts.
40
+ - [Fix] Validate swarm cli and always parse options from argv (roelbondoc)
41
+
42
+ ## 2.4.12 (2024-09-17)
43
+ - **[Feature]** Provide Adaptive Iterator feature as a fast alternative to Long-Running Jobs (Pro).
44
+ - [Enhancement] Provide `Consumer#each` as a delegation to messages batch.
45
+ - [Enhancement] Verify cancellation request envelope topic similar to the schedule one.
46
+ - [Enhancement] Validate presence of `bootstrap.servers` to avoid incomplete partial reconfiguration.
47
+ - [Enhancement] Support `ActiveJob#enqueue_at` via Scheduled Messages feature (Pro).
48
+ - [Enhancement] Introduce `Karafka::App#debug!` that will switch Karafka and the default producer into extensive debug mode. Useful for CLI debugging.
49
+ - [Enhancement] Support full overwrite of the `BaseConsumer#producer`.
50
+ - [Enhancement] Transfer the time of last poll back to the coordinator for more accurate metrics tracking.
51
+ - [Enhancement] Instrument `Consumer#seek` via `consumer.consuming.seek`.
52
+ - [Fix] Fix incorrect time reference reload in scheduled messages.
53
+
54
+ ## 2.4.11 (2024-09-04)
55
+ - [Enhancement] Validate envelope target topic type for Scheduled Messages.
56
+ - [Enhancement] Support for enqueue_after_transaction_commit in rails active job.
57
+ - [Fix] Fix invalid reference to AppSignal version.
58
+
59
+ ## 2.4.10 (2024-09-03)
60
+ - **[Feature]** Provide Kafka based Scheduled Messages to be able to send messages in the future via a proxy topic.
61
+ - [Enhancement] Introduce a `#assigned` hook for consumers to be able to trigger actions when consumer is built and assigned but before first consume/ticking, etc.
62
+ - [Enhancement] Provide `Karafka::Messages::Message#tombstone?` to be able to quickly check if a message is a tombstone message.
63
+ - [Enhancement] Provide more flexible API for Recurring Tasks topics reconfiguration.
64
+ - [Enhancement] Remove no longer needed Rails connection releaser.
65
+ - [Enhancement] Update AppSignal client to support newer versions (tombruijn and hieuk09).
66
+ - [Fix] Fix a case where there would be a way to define multiple subscription groups for same topic with different consumer.
67
+
68
+ ## 2.4.9 (2024-08-23)
69
+ - **[Feature]** Provide Kafka based Recurring (Cron) Tasks.
70
+ - [Enhancement] Wrap worker work with Rails Reloader/Executor (fusion2004)
71
+ - [Enhancement] Allow for partial topic level kafka scope settings reconfiguration via `inherit` flag.
72
+ - [Enhancement] Validate `eof` kafka scope flag when `eofed` in routing enabled.
73
+ - [Enhancement] Provide `mark_after_dispatch` setting for granular DLQ marking control.
74
+ - [Enhancement] Provide `Karafka::Admin.rename_consumer_group`.
75
+
76
+ ## 2.4.8 (2024-08-09)
77
+ - **[Feature]** Introduce ability to react to `#eof` either from `#consume` or from `#eofed` when EOF without new messages.
78
+ - [Enhancement] Provide `Consumer#eofed?` to indicate reaching EOF.
79
+ - [Enhancement] Always immediately report on `inconsistent_group_protocol` error.
80
+ - [Enhancement] Reduce virtual partitioning to 1 partition when any partitioner execution in a partitioned batch crashes.
81
+ - [Enhancement] Provide `KARAFKA_REQUIRE_RAILS` to disable default Rails `require` to run Karafka without Rails despite having Rails in the Gemfile.
82
+ - [Enhancement] Increase final listener recovery from 1 to 60 seconds to prevent constant rebalancing. This is the last resort recovery and should never happen unless critical errors occur.
83
+
84
+ ## 2.4.7 (2024-08-01)
85
+ - [Enhancement] Introduce `Karafka::Server.execution_mode` to check in what mode Karafka process operates (`standalone`, `swarm`, `supervisor`, `embedded`).
86
+ - [Enhancement] Ensure `max.poll.interval.ms` is always present and populate it with librdkafka default.
87
+ - [Enhancement] Introduce a shutdown time limit for unsubscription wait.
88
+ - [Enhancement] Tag with `mode:swarm` each of the running swarm consumers.
89
+ - [Change] Tag with `mode:embedded` instead of `embedded` the embedded consumers.
90
+ - [Fix] License identifier `LGPL-3.0` is deprecated for SPDX (#2177).
91
+ - [Fix] Fix an issue where custom clusters would not have default settings populated same as the primary cluster.
92
+ - [Fix] Fix Rspec warnings of nil mocks.
93
+ - [Maintenance] Cover `cooperative-sticky` librdkafka issues with integration spec.
94
+
95
+ ## 2.4.6 (2024-07-22)
96
+ - [Fix] Mitigate `rd_kafka_cgrp_terminated` and other `librdkafka` shutdown issues by unsubscribing fully prior to shutdown.
97
+
98
+ ## 2.4.5 (2024-07-18)
99
+ - [Change] Inject `client.id` when building subscription group and not during the initial setup.
100
+ - [Fix] Mitigate `confluentinc/librdkafka/issues/4783` by injecting dynamic client id when using `cooperative-sticky` strategy.
101
+
102
+ ### Change Note
103
+
104
+ `client.id` is technically a low-importance value that should not (aside from this error) impact operations. This is why it is not considered a breaking change. This change may be reverted when the original issue is fixed in librdkafka.
105
+
106
+ ## 2.4.4 (2024-07-04)
107
+ - [Enhancement] Allow for offset storing from the Filtering API.
108
+ - [Enhancement] Print more extensive error info on forceful shutdown.
109
+ - [Enhancement] Include `original_key` in the DLQ dispatch headers.
110
+ - [Enhancement] Support embedding mode control management from the trap context.
111
+ - [Enhancement] Make sure, that the listener thread is stopped before restarting.
112
+ - [Fix] Do not block on hanging listener shutdown when invoking forceful shutdown.
113
+ - [Fix] Static membership fencing error is not propagated explicitly enough.
114
+ - [Fix] Make sure DLQ dispatches raw headers and not deserialized headers (same as payload).
115
+ - [Fix] Fix a typo where `ms` in logger listener would not have space before it.
116
+ - [Maintenance] Require `karafka-core` `>=` `2.4.3`.
117
+ - [Maintenance] Allow for usage of `karafka-rdkafka` `~` `0.16` to support librdkafka `2.4.0`.
118
+ - [Maintenance] Lower the precision reporting to 100 microseconds in the logger listener.
119
+
120
+ ## 2.4.3 (2024-06-12)
121
+ - [Enhancement] Allow for customization of Virtual Partitions reducer for enhanced parallelization.
122
+ - [Enhancement] Add more error codes to early report on polling issues (kidlab)
123
+ - [Enhancement] Add `transport`, `network_exception` and `coordinator_load_in_progress` alongside `timed_out` to retryable errors for the proxy.
124
+ - [Enhancement] Improve `strict_topics_namespacing` validation message.
125
+ - [Change] Remove default empty thread name from `Async` since Web has been upgraded.
126
+ - [Fix] Installer doesn't respect directories in `KARAFKA_BOOT_FILE`.
127
+ - [Fix] Fix case where non absolute boot file path would not work as expected.
128
+ - [Fix] Allow for installing Karafka in a non-existing (yet) directory
129
+ - [Maintenance] Require `waterdrop` `>=` `2.7.3` to support idempotent producer detection.
130
+
131
+ ## 2.4.2 (2024-05-14)
132
+ - [Enhancement] Validate ActiveJob adapter custom producer format.
133
+ - [Fix] Internal seek does not resolve the offset correctly for time based lookup.
134
+
135
+ ## 2.4.1 (2024-05-10)
136
+ - [Enhancement] Allow for usage of producer variants and alternative producers with ActiveJob Jobs (Pro).
137
+ - [Enhancement] Support `:earliest` and `:latest` in `Karafka::Admin#seek_consumer_group`.
138
+ - [Enhancement] Align configuration attributes mapper with exact librdkafka version used and not master.
139
+ - [Maintenance] Use `base64` from RubyGems as it will no longer be part of standard library in Ruby 3.4.
140
+ - [Fix] Support migrating via aliases and plan with aliases usage.
141
+ - [Fix] Active with default set to `false` cannot be overwritten
142
+ - [Fix] Fix inheritance of ActiveJob adapter `karafka_options` partitioner and dispatch method.
2
143
 
3
144
  ## 2.4.0 (2024-04-26)
4
145
 
@@ -61,6 +202,10 @@ This release contains **BREAKING** changes. Make sure to read and apply upgrade
61
202
 
62
203
  Available [here](https://karafka.io/docs/Upgrades-2.4/).
63
204
 
205
+ ## 2.3.4 (2024-04-11)
206
+
207
+ - [Fix] Seek consumer group on a topic level is updating only recent partition.
208
+
64
209
  ## 2.3.3 (2024-02-26)
65
210
  - [Enhancement] Routing based topics allocation for swarm (Pro)
66
211
  - [Enhancement] Publish the `-1` shutdown reason status for a non-responding node in swarm.
data/Gemfile CHANGED
@@ -6,19 +6,24 @@ plugin 'diffend'
6
6
 
7
7
  gemspec
8
8
 
9
- # Karafka gem does not require activejob nor karafka-web to work
9
+ # Karafka gem does not require activejob, karafka-web or fugit to work
10
10
  # They are added here because they are part of the integration suite
11
11
  # Since some of those are only needed for some specs, they should never be required automatically
12
+ group :integrations, :test do
13
+ gem 'fugit', require: false
14
+ gem 'rspec', require: false
15
+ gem 'stringio'
16
+ end
17
+
12
18
  group :integrations do
13
19
  gem 'activejob', require: false
14
- gem 'karafka-testing', '>= 2.4.0.rc1', require: false
15
- gem 'karafka-web', '>= 0.9.0.rc3', require: false
16
- gem 'rspec', require: false
20
+ gem 'karafka-testing', '>= 2.4.6', require: false
21
+ gem 'karafka-web', '>= 0.10.0.rc2', require: false
17
22
  end
18
23
 
19
24
  group :test do
20
25
  gem 'byebug'
21
26
  gem 'factory_bot'
22
- gem 'rspec'
27
+ gem 'ostruct'
23
28
  gem 'simplecov'
24
29
  end
data/Gemfile.lock CHANGED
@@ -1,64 +1,78 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka (2.4.0)
5
- karafka-core (>= 2.4.0, < 2.5.0)
6
- waterdrop (>= 2.7.0, < 3.0.0)
4
+ karafka (2.4.18)
5
+ base64 (~> 0.2)
6
+ karafka-core (>= 2.4.4, < 2.5.0)
7
+ karafka-rdkafka (>= 0.17.2)
8
+ waterdrop (>= 2.7.3, < 3.0.0)
7
9
  zeitwerk (~> 2.3)
8
10
 
9
11
  GEM
10
12
  remote: https://rubygems.org/
11
13
  specs:
12
- activejob (7.1.3.2)
13
- activesupport (= 7.1.3.2)
14
+ activejob (8.0.1)
15
+ activesupport (= 8.0.1)
14
16
  globalid (>= 0.3.6)
15
- activesupport (7.1.3.2)
17
+ activesupport (8.0.1)
16
18
  base64
19
+ benchmark (>= 0.3)
17
20
  bigdecimal
18
- concurrent-ruby (~> 1.0, >= 1.0.2)
21
+ concurrent-ruby (~> 1.0, >= 1.3.1)
19
22
  connection_pool (>= 2.2.5)
20
23
  drb
21
24
  i18n (>= 1.6, < 2)
25
+ logger (>= 1.4.2)
22
26
  minitest (>= 5.1)
23
- mutex_m
24
- tzinfo (~> 2.0)
27
+ securerandom (>= 0.3)
28
+ tzinfo (~> 2.0, >= 2.0.5)
29
+ uri (>= 0.13.1)
25
30
  base64 (0.2.0)
26
- bigdecimal (3.1.7)
31
+ benchmark (0.3.0)
32
+ bigdecimal (3.1.8)
27
33
  byebug (11.1.3)
28
- concurrent-ruby (1.2.3)
34
+ concurrent-ruby (1.3.4)
29
35
  connection_pool (2.4.1)
30
36
  diff-lcs (1.5.1)
31
- docile (1.4.0)
37
+ docile (1.4.1)
32
38
  drb (2.2.1)
33
- erubi (1.12.0)
34
- factory_bot (6.4.6)
39
+ erubi (1.13.0)
40
+ et-orbi (1.2.11)
41
+ tzinfo
42
+ factory_bot (6.5.0)
35
43
  activesupport (>= 5.0.0)
36
- ffi (1.16.3)
44
+ ffi (1.17.0)
45
+ fugit (1.11.1)
46
+ et-orbi (~> 1, >= 1.2.11)
47
+ raabro (~> 1.4)
37
48
  globalid (1.2.1)
38
49
  activesupport (>= 6.1)
39
- i18n (1.14.4)
50
+ i18n (1.14.6)
40
51
  concurrent-ruby (~> 1.0)
41
- karafka-core (2.4.0)
42
- karafka-rdkafka (>= 0.15.0, < 0.16.0)
43
- karafka-rdkafka (0.15.0)
52
+ karafka-core (2.4.8)
53
+ karafka-rdkafka (>= 0.17.6, < 0.19.0)
54
+ logger (>= 1.6.0)
55
+ karafka-rdkafka (0.18.1)
44
56
  ffi (~> 1.15)
45
57
  mini_portile2 (~> 2.6)
46
58
  rake (> 12)
47
- karafka-testing (2.4.0.rc2)
48
- karafka (>= 2.4.0.beta1, < 2.5.0)
49
- waterdrop (>= 2.7.0.rc1)
50
- karafka-web (0.9.0.rc3)
59
+ karafka-testing (2.4.6)
60
+ karafka (>= 2.4.0, < 2.5.0)
61
+ waterdrop (>= 2.7.0)
62
+ karafka-web (0.10.4)
51
63
  erubi (~> 1.4)
52
- karafka (>= 2.4.0.rc1, < 2.5.0)
53
- karafka-core (>= 2.4.0.rc2, < 2.5.0)
64
+ karafka (>= 2.4.10, < 2.5.0)
65
+ karafka-core (>= 2.4.0, < 2.5.0)
54
66
  roda (~> 3.68, >= 3.69)
55
67
  tilt (~> 2.0)
56
- mini_portile2 (2.8.6)
57
- minitest (5.22.3)
58
- mutex_m (0.2.0)
59
- rack (3.0.10)
68
+ logger (1.6.3)
69
+ mini_portile2 (2.8.8)
70
+ minitest (5.25.4)
71
+ ostruct (0.6.1)
72
+ raabro (1.4.0)
73
+ rack (3.1.8)
60
74
  rake (13.2.1)
61
- roda (3.79.0)
75
+ roda (3.84.0)
62
76
  rack
63
77
  rspec (3.13.0)
64
78
  rspec-core (~> 3.13.0)
@@ -66,26 +80,30 @@ GEM
66
80
  rspec-mocks (~> 3.13.0)
67
81
  rspec-core (3.13.0)
68
82
  rspec-support (~> 3.13.0)
69
- rspec-expectations (3.13.0)
83
+ rspec-expectations (3.13.1)
70
84
  diff-lcs (>= 1.2.0, < 2.0)
71
85
  rspec-support (~> 3.13.0)
72
- rspec-mocks (3.13.0)
86
+ rspec-mocks (3.13.1)
73
87
  diff-lcs (>= 1.2.0, < 2.0)
74
88
  rspec-support (~> 3.13.0)
75
89
  rspec-support (3.13.1)
90
+ securerandom (0.3.2)
76
91
  simplecov (0.22.0)
77
92
  docile (~> 1.1)
78
93
  simplecov-html (~> 0.11)
79
94
  simplecov_json_formatter (~> 0.1)
80
95
  simplecov-html (0.12.3)
81
96
  simplecov_json_formatter (0.1.4)
82
- tilt (2.3.0)
97
+ stringio (3.1.2)
98
+ tilt (2.4.0)
83
99
  tzinfo (2.0.6)
84
100
  concurrent-ruby (~> 1.0)
85
- waterdrop (2.7.0)
86
- karafka-core (>= 2.4.0, < 3.0.0)
101
+ uri (1.0.2)
102
+ waterdrop (2.8.1)
103
+ karafka-core (>= 2.4.3, < 3.0.0)
104
+ karafka-rdkafka (>= 0.17.5)
87
105
  zeitwerk (~> 2.3)
88
- zeitwerk (2.6.13)
106
+ zeitwerk (2.7.1)
89
107
 
90
108
  PLATFORMS
91
109
  ruby
@@ -95,11 +113,14 @@ DEPENDENCIES
95
113
  activejob
96
114
  byebug
97
115
  factory_bot
116
+ fugit
98
117
  karafka!
99
- karafka-testing (>= 2.4.0.rc1)
100
- karafka-web (>= 0.9.0.rc3)
118
+ karafka-testing (>= 2.4.6)
119
+ karafka-web (>= 0.10.0.rc2)
120
+ ostruct
101
121
  rspec
102
122
  simplecov
123
+ stringio
103
124
 
104
125
  BUNDLED WITH
105
- 2.5.9
126
+ 2.4.22
data/LICENSE CHANGED
@@ -1,13 +1,18 @@
1
1
  Copyright (c) Maciej Mensfeld
2
2
 
3
3
  Karafka is an Open Source project licensed under the terms of
4
- the LGPLv3 license. Please see <https://github.com/karafka/karafka/blob/master/LGPL>
4
+ the LGPLv3 license. Please see <https://github.com/karafka/karafka/blob/master/LICENSE-LGPL>
5
5
  for license text.
6
6
 
7
7
  Karafka has also commercial-friendly license, commercial support and commercial components.
8
8
 
9
- All of the commercial components are present in the lib/karafka/pro directory of this repository
10
- and their usage requires commercial license agreement.
9
+ All of the commercial components are present in the:
10
+
11
+ - `lib/karafka/pro`
12
+ - `spec/lib/karafka/pro`
13
+ - `spec/integrations/pro`
14
+
15
+ directories of this repository and their usage requires commercial license agreement.
11
16
 
12
17
  By sending a pull request to the pro components, you are agreeing to transfer the copyright of your
13
18
  code to Maciej Mensfeld.
data/bin/integrations CHANGED
@@ -45,7 +45,10 @@ class Scenario
45
45
  'shutdown/on_hanging_on_shutdown_job_and_a_shutdown_spec.rb' => [2].freeze,
46
46
  'shutdown/on_hanging_listener_and_shutdown_spec.rb' => [2].freeze,
47
47
  'swarm/forceful_shutdown_of_hanging_spec.rb' => [2].freeze,
48
- 'instrumentation/post_errors_instrumentation_error_spec.rb' => [1].freeze
48
+ 'instrumentation/post_errors_instrumentation_error_spec.rb' => [1].freeze,
49
+ 'cli/declaratives/delete/existing_with_exit_code_spec.rb' => [2].freeze,
50
+ 'cli/declaratives/create/new_with_exit_code_spec.rb' => [2].freeze,
51
+ 'cli/declaratives/plan/when_changes_with_detailed_exit_code_spec.rb' => [2].freeze
49
52
  }.freeze
50
53
 
51
54
  private_constant :MAX_RUN_TIME, :EXIT_CODES
@@ -240,6 +243,15 @@ ARGV.each do |filter|
240
243
  end
241
244
  end
242
245
 
246
+ # Remove Rails 7.2 specs from Ruby < 3.1 because it requires 3.1
247
+ # Remove Rails 8.0 specs from Ruby < 3.2 because it requires 3.2
248
+ specs.delete_if do |spec|
249
+ next true if RUBY_VERSION < '3.1' && spec.include?('rails72')
250
+ next true if RUBY_VERSION < '3.2' && spec.include?('rails8')
251
+
252
+ false
253
+ end
254
+
243
255
  raise ArgumentError, "No integration specs with filters: #{ARGV.join(', ')}" if specs.empty?
244
256
 
245
257
  # Randomize order
data/certs/cert.pem ADDED
@@ -0,0 +1,26 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
3
+ YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
4
+ MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
5
+ dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
6
+ bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
7
+ PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
8
+ ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
9
+ Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
10
+ JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
11
+ T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
12
+ flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
13
+ vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
14
+ iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
15
+ HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
16
+ sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
17
+ bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
18
+ eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
19
+ Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
20
+ agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
21
+ TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
22
+ Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
23
+ oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
24
+ i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
25
+ ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
26
+ -----END CERTIFICATE-----