karafka-web 0.11.5 → 0.11.6

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 (517) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/Gemfile +9 -10
  4. data/Gemfile.lint +14 -0
  5. data/Gemfile.lint.lock +123 -0
  6. data/Gemfile.lock +15 -16
  7. data/README.md +15 -15
  8. data/Rakefile +2 -2
  9. data/bin/balance_specs +120 -0
  10. data/bin/check_coverage +31 -0
  11. data/bin/collect_timings +83 -0
  12. data/bin/rspecs +10 -0
  13. data/bin/rspecs_parallel +111 -0
  14. data/docker-compose.yml +1 -1
  15. data/karafka-web.gemspec +35 -35
  16. data/lib/karafka/web/cli/base.rb +2 -2
  17. data/lib/karafka/web/cli/help.rb +2 -2
  18. data/lib/karafka/web/cli/install.rb +3 -3
  19. data/lib/karafka/web/cli/migrate.rb +3 -3
  20. data/lib/karafka/web/cli/reset.rb +3 -3
  21. data/lib/karafka/web/cli/uninstall.rb +1 -1
  22. data/lib/karafka/web/config.rb +40 -32
  23. data/lib/karafka/web/contracts/base.rb +2 -2
  24. data/lib/karafka/web/deserializer.rb +5 -5
  25. data/lib/karafka/web/installer.rb +14 -14
  26. data/lib/karafka/web/management/actions/base.rb +5 -5
  27. data/lib/karafka/web/management/actions/clean_boot_file.rb +3 -3
  28. data/lib/karafka/web/management/actions/create_initial_states.rb +8 -8
  29. data/lib/karafka/web/management/actions/enable.rb +3 -3
  30. data/lib/karafka/web/management/actions/extend_boot_file.rb +3 -3
  31. data/lib/karafka/web/management/migrations/base.rb +3 -3
  32. data/lib/karafka/web/management/migrations/consumers_metrics/0_set_initial.rb +1 -1
  33. data/lib/karafka/web/management/migrations/consumers_metrics/1699543515_fill_missing_received_and_sent_bytes.rb +1 -1
  34. data/lib/karafka/web/management/migrations/consumers_metrics/1700234522_introduce_waiting.rb +1 -1
  35. data/lib/karafka/web/management/migrations/consumers_metrics/1700234522_remove_processing.rb +1 -1
  36. data/lib/karafka/web/management/migrations/consumers_metrics/1704722380_split_listeners_into_active_and_paused.rb +7 -7
  37. data/lib/karafka/web/management/migrations/consumers_metrics/1706607960_introduce_lag_total.rb +1 -1
  38. data/lib/karafka/web/management/migrations/consumers_metrics/1706611396_rename_lag_total_to_lag_hybrid.rb +1 -1
  39. data/lib/karafka/web/management/migrations/consumers_metrics/1716218393_populate_jobs_metrics.rb +1 -1
  40. data/lib/karafka/web/management/migrations/consumers_reports/1761645571_rename_process_name_to_id.rb +1 -1
  41. data/lib/karafka/web/management/migrations/consumers_reports/1765657887_add_group_instance_id_to_subscription_groups.rb +42 -0
  42. data/lib/karafka/web/management/migrations/consumers_states/0_set_initial.rb +2 -2
  43. data/lib/karafka/web/management/migrations/consumers_states/1699543515_fill_missing_received_and_sent_bytes.rb +1 -1
  44. data/lib/karafka/web/management/migrations/consumers_states/1700234522_introduce_waiting.rb +1 -1
  45. data/lib/karafka/web/management/migrations/consumers_states/1700234522_remove_processing.rb +1 -1
  46. data/lib/karafka/web/management/migrations/consumers_states/1704722380_split_listeners_into_active_and_paused.rb +7 -7
  47. data/lib/karafka/web/management/migrations/consumers_states/1706607960_introduce_lag_total.rb +1 -1
  48. data/lib/karafka/web/management/migrations/consumers_states/1706611396_rename_lag_total_to_lag_hybrid.rb +1 -1
  49. data/lib/karafka/web/management/migrations/consumers_states/1716218393_add_jobs_counter.rb +1 -1
  50. data/lib/karafka/web/management/migrator.rb +2 -2
  51. data/lib/karafka/web/pro/commanding/commands/base.rb +20 -4
  52. data/lib/karafka/web/pro/commanding/commands/consumers/quiet.rb +22 -5
  53. data/lib/karafka/web/pro/commanding/commands/consumers/stop.rb +22 -5
  54. data/lib/karafka/web/pro/commanding/commands/consumers/trace.rb +21 -4
  55. data/lib/karafka/web/pro/commanding/commands/partitions/pause.rb +20 -3
  56. data/lib/karafka/web/pro/commanding/commands/partitions/resume.rb +20 -3
  57. data/lib/karafka/web/pro/commanding/commands/partitions/seek.rb +20 -3
  58. data/lib/karafka/web/pro/commanding/commands/topics/pause.rb +48 -0
  59. data/lib/karafka/web/pro/commanding/commands/topics/resume.rb +49 -0
  60. data/lib/karafka/web/pro/commanding/config.rb +23 -5
  61. data/lib/karafka/web/pro/commanding/contracts/config.rb +21 -4
  62. data/lib/karafka/web/pro/commanding/dispatcher.rb +61 -26
  63. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/base.rb +20 -3
  64. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/pause.rb +21 -4
  65. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/resume.rb +20 -3
  66. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/seek.rb +24 -7
  67. data/lib/karafka/web/pro/commanding/handlers/partitions/executor.rb +36 -12
  68. data/lib/karafka/web/pro/commanding/handlers/partitions/listener.rb +47 -8
  69. data/lib/karafka/web/pro/commanding/handlers/partitions/tracker.rb +62 -13
  70. data/lib/karafka/web/pro/commanding/handlers/topics/commands/base.rb +109 -0
  71. data/lib/karafka/web/pro/commanding/handlers/topics/commands/pause.rb +76 -0
  72. data/lib/karafka/web/pro/commanding/handlers/topics/commands/resume.rb +56 -0
  73. data/lib/karafka/web/pro/commanding/handlers/topics/executor.rb +75 -0
  74. data/lib/karafka/web/pro/commanding/handlers/topics/listener.rb +82 -0
  75. data/lib/karafka/web/pro/commanding/handlers/topics/tracker.rb +81 -0
  76. data/lib/karafka/web/pro/commanding/listener.rb +23 -6
  77. data/lib/karafka/web/pro/commanding/manager.rb +44 -23
  78. data/lib/karafka/web/pro/commanding/matcher.rb +46 -18
  79. data/lib/karafka/web/pro/commanding/matchers/base.rb +87 -0
  80. data/lib/karafka/web/pro/commanding/matchers/consumer_group_id.rb +58 -0
  81. data/lib/karafka/web/pro/commanding/matchers/message_type.rb +49 -0
  82. data/lib/karafka/web/pro/commanding/matchers/partition_id.rb +61 -0
  83. data/lib/karafka/web/pro/commanding/matchers/process_id.rb +58 -0
  84. data/lib/karafka/web/pro/commanding/matchers/schema_version.rb +44 -0
  85. data/lib/karafka/web/pro/commanding/matchers/topic.rb +58 -0
  86. data/lib/karafka/web/pro/commanding/request.rb +19 -2
  87. data/lib/karafka/web/pro/commanding.rb +19 -2
  88. data/lib/karafka/web/pro/loader.rb +20 -3
  89. data/lib/karafka/web/pro/ui/app.rb +25 -8
  90. data/lib/karafka/web/pro/ui/controllers/base_controller.rb +19 -2
  91. data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +19 -2
  92. data/lib/karafka/web/pro/ui/controllers/consumers/base_controller.rb +19 -2
  93. data/lib/karafka/web/pro/ui/controllers/consumers/commanding_controller.rb +37 -15
  94. data/lib/karafka/web/pro/ui/controllers/consumers/commands_controller.rb +23 -6
  95. data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +19 -2
  96. data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +19 -2
  97. data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +19 -2
  98. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/base_controller.rb +43 -42
  99. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/offsets_controller.rb +36 -17
  100. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/pauses_controller.rb +59 -33
  101. data/lib/karafka/web/pro/ui/controllers/consumers/topics/pauses_controller.rb +164 -0
  102. data/lib/karafka/web/pro/ui/controllers/dashboard_controller.rb +19 -2
  103. data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +26 -9
  104. data/lib/karafka/web/pro/ui/controllers/errors_controller.rb +25 -9
  105. data/lib/karafka/web/pro/ui/controllers/explorer/base_controller.rb +19 -2
  106. data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +22 -5
  107. data/lib/karafka/web/pro/ui/controllers/explorer/messages_controller.rb +26 -9
  108. data/lib/karafka/web/pro/ui/controllers/explorer/search_controller.rb +23 -6
  109. data/lib/karafka/web/pro/ui/controllers/health_controller.rb +19 -2
  110. data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +19 -2
  111. data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +22 -5
  112. data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +19 -2
  113. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/base_controller.rb +19 -2
  114. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/explorer_controller.rb +25 -8
  115. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb +21 -4
  116. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +26 -9
  117. data/lib/karafka/web/pro/ui/controllers/status_controller.rb +19 -2
  118. data/lib/karafka/web/pro/ui/controllers/support_controller.rb +19 -2
  119. data/lib/karafka/web/pro/ui/controllers/topics/base_controller.rb +19 -2
  120. data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +20 -3
  121. data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +20 -3
  122. data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +19 -2
  123. data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +41 -2
  124. data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +24 -7
  125. data/lib/karafka/web/pro/ui/controllers/ux_controller.rb +19 -2
  126. data/lib/karafka/web/pro/ui/lib/branding/config.rb +19 -2
  127. data/lib/karafka/web/pro/ui/lib/branding/contracts/config.rb +21 -4
  128. data/lib/karafka/web/pro/ui/lib/branding.rb +19 -2
  129. data/lib/karafka/web/pro/ui/lib/features.rb +19 -2
  130. data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +19 -2
  131. data/lib/karafka/web/pro/ui/lib/policies/config.rb +19 -2
  132. data/lib/karafka/web/pro/ui/lib/policies/contracts/config.rb +21 -4
  133. data/lib/karafka/web/pro/ui/lib/policies/messages.rb +20 -3
  134. data/lib/karafka/web/pro/ui/lib/policies/requests.rb +19 -2
  135. data/lib/karafka/web/pro/ui/lib/policies.rb +19 -2
  136. data/lib/karafka/web/pro/ui/lib/safe_runner.rb +20 -3
  137. data/lib/karafka/web/pro/ui/lib/search/config.rb +19 -2
  138. data/lib/karafka/web/pro/ui/lib/search/contracts/config.rb +21 -4
  139. data/lib/karafka/web/pro/ui/lib/search/contracts/form.rb +24 -6
  140. data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +21 -4
  141. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_header_includes.rb +19 -2
  142. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_key_includes.rb +19 -2
  143. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_payload_includes.rb +20 -3
  144. data/lib/karafka/web/pro/ui/lib/search/normalizer.rb +26 -9
  145. data/lib/karafka/web/pro/ui/lib/search/runner.rb +33 -16
  146. data/lib/karafka/web/pro/ui/lib/search.rb +19 -2
  147. data/lib/karafka/web/pro/ui/routes/base.rb +19 -2
  148. data/lib/karafka/web/pro/ui/routes/cluster.rb +21 -4
  149. data/lib/karafka/web/pro/ui/routes/consumers.rb +83 -49
  150. data/lib/karafka/web/pro/ui/routes/dashboard.rb +20 -3
  151. data/lib/karafka/web/pro/ui/routes/dlq.rb +20 -3
  152. data/lib/karafka/web/pro/ui/routes/errors.rb +21 -4
  153. data/lib/karafka/web/pro/ui/routes/explorer.rb +33 -16
  154. data/lib/karafka/web/pro/ui/routes/health.rb +26 -9
  155. data/lib/karafka/web/pro/ui/routes/jobs.rb +23 -6
  156. data/lib/karafka/web/pro/ui/routes/recurring_tasks.rb +29 -12
  157. data/lib/karafka/web/pro/ui/routes/routing.rb +20 -3
  158. data/lib/karafka/web/pro/ui/routes/scheduled_messages.rb +28 -11
  159. data/lib/karafka/web/pro/ui/routes/status.rb +20 -3
  160. data/lib/karafka/web/pro/ui/routes/support.rb +20 -3
  161. data/lib/karafka/web/pro/ui/routes/topics.rb +29 -12
  162. data/lib/karafka/web/pro/ui/routes/ux.rb +20 -3
  163. data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +13 -2
  164. data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +13 -2
  165. data/lib/karafka/web/pro/ui/views/cluster/_config.erb +14 -3
  166. data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +13 -2
  167. data/lib/karafka/web/pro/ui/views/cluster/index.erb +13 -2
  168. data/lib/karafka/web/pro/ui/views/cluster/show.erb +13 -2
  169. data/lib/karafka/web/pro/ui/views/consumers/commands/_backtrace.erb +13 -2
  170. data/lib/karafka/web/pro/ui/views/consumers/commands/_breadcrumbs.erb +13 -2
  171. data/lib/karafka/web/pro/ui/views/consumers/commands/_command.erb +24 -66
  172. data/lib/karafka/web/pro/ui/views/consumers/commands/_command_details.erb +13 -2
  173. data/lib/karafka/web/pro/ui/views/consumers/commands/_empty.erb +13 -2
  174. data/lib/karafka/web/pro/ui/views/consumers/commands/_incompatible_command.erb +19 -0
  175. data/lib/karafka/web/pro/ui/views/consumers/commands/_incompatible_schema.erb +13 -2
  176. data/lib/karafka/web/pro/ui/views/consumers/commands/_table.erb +15 -4
  177. data/lib/karafka/web/pro/ui/views/consumers/commands/details/_acceptance.erb +19 -0
  178. data/lib/karafka/web/pro/ui/views/consumers/commands/details/_request.erb +19 -0
  179. data/lib/karafka/web/pro/ui/views/consumers/commands/details/_result.erb +27 -0
  180. data/lib/karafka/web/pro/ui/views/consumers/commands/index.erb +13 -2
  181. data/lib/karafka/web/pro/ui/views/consumers/commands/metadata/_request.erb +52 -0
  182. data/lib/karafka/web/pro/ui/views/consumers/commands/metadata/_response.erb +46 -0
  183. data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_command_name_badge.erb +40 -0
  184. data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_request.erb +47 -0
  185. data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_response.erb +46 -0
  186. data/lib/karafka/web/pro/ui/views/consumers/commands/show.erb +14 -15
  187. data/lib/karafka/web/pro/ui/views/consumers/consumers/_breadcrumbs.erb +13 -2
  188. data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer.erb +13 -2
  189. data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer_performance.erb +13 -2
  190. data/lib/karafka/web/pro/ui/views/consumers/consumers/_tabs.erb +13 -2
  191. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_commands.erb +13 -2
  192. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_consumer_group.erb +13 -2
  193. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_metrics.erb +13 -2
  194. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_no_subscriptions.erb +13 -2
  195. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition.erb +15 -5
  196. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition_edit_options.erb +16 -5
  197. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_stopped.erb +13 -2
  198. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_subscription_group.erb +31 -7
  199. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_tabs.erb +13 -2
  200. data/lib/karafka/web/pro/ui/views/consumers/consumers/details.erb +13 -2
  201. data/lib/karafka/web/pro/ui/views/consumers/consumers/index.erb +13 -2
  202. data/lib/karafka/web/pro/ui/views/consumers/consumers/performance.erb +13 -2
  203. data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +13 -2
  204. data/lib/karafka/web/pro/ui/views/consumers/controls/_breadcrumbs.erb +13 -2
  205. data/lib/karafka/web/pro/ui/views/consumers/controls/_controls.erb +14 -3
  206. data/lib/karafka/web/pro/ui/views/consumers/controls/index.erb +35 -7
  207. data/lib/karafka/web/pro/ui/views/consumers/jobs/_breadcrumbs.erb +13 -2
  208. data/lib/karafka/web/pro/ui/views/consumers/jobs/_job.erb +14 -3
  209. data/lib/karafka/web/pro/ui/views/consumers/jobs/_no_jobs.erb +13 -2
  210. data/lib/karafka/web/pro/ui/views/consumers/jobs/pending.erb +13 -2
  211. data/lib/karafka/web/pro/ui/views/consumers/jobs/running.erb +13 -2
  212. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_basics.erb +20 -13
  213. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_breadcrumbs.erb +37 -46
  214. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_form.erb +25 -14
  215. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_not_running_error.erb +13 -2
  216. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_running_warning.erb +13 -2
  217. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/edit.erb +17 -6
  218. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_active_not_editable.erb +13 -2
  219. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_adjusting_warning.erb +14 -3
  220. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_breadcrumbs.erb +40 -48
  221. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_edit_form.erb +18 -8
  222. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_lrj_not_manageable.erb +13 -2
  223. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_new_form.erb +22 -11
  224. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_not_running.erb +13 -2
  225. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_partition_info.erb +57 -0
  226. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/edit.erb +16 -5
  227. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/new.erb +16 -5
  228. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_adjusting_warning.erb +38 -0
  229. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_breadcrumbs.erb +46 -0
  230. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_edit_form.erb +66 -0
  231. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_lrj_not_manageable.erb +30 -0
  232. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_new_form.erb +86 -0
  233. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_not_running.erb +27 -0
  234. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_topic_info.erb +72 -0
  235. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/edit.erb +29 -0
  236. data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/new.erb +29 -0
  237. data/lib/karafka/web/pro/ui/views/dashboard/index.erb +13 -2
  238. data/lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb +13 -2
  239. data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +13 -2
  240. data/lib/karafka/web/pro/ui/views/dlq/_topic.erb +13 -2
  241. data/lib/karafka/web/pro/ui/views/dlq/index.erb +13 -2
  242. data/lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb +13 -2
  243. data/lib/karafka/web/pro/ui/views/errors/_error.erb +14 -3
  244. data/lib/karafka/web/pro/ui/views/errors/_partition_option.erb +18 -5
  245. data/lib/karafka/web/pro/ui/views/errors/_selector.erb +14 -3
  246. data/lib/karafka/web/pro/ui/views/errors/_table.erb +14 -3
  247. data/lib/karafka/web/pro/ui/views/errors/index.erb +39 -26
  248. data/lib/karafka/web/pro/ui/views/errors/partition.erb +50 -37
  249. data/lib/karafka/web/pro/ui/views/errors/show.erb +14 -3
  250. data/lib/karafka/web/pro/ui/views/explorer/explorer/_breadcrumbs.erb +13 -2
  251. data/lib/karafka/web/pro/ui/views/explorer/explorer/_failed_deserialization.erb +13 -2
  252. data/lib/karafka/web/pro/ui/views/explorer/explorer/_filtered.erb +13 -2
  253. data/lib/karafka/web/pro/ui/views/explorer/explorer/_message.erb +14 -3
  254. data/lib/karafka/web/pro/ui/views/explorer/explorer/_no_topics.erb +13 -2
  255. data/lib/karafka/web/pro/ui/views/explorer/explorer/_partition_option.erb +18 -5
  256. data/lib/karafka/web/pro/ui/views/explorer/explorer/_selector.erb +14 -3
  257. data/lib/karafka/web/pro/ui/views/explorer/explorer/_topic.erb +13 -2
  258. data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +13 -2
  259. data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_metadata.erb +13 -2
  260. data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_payload.erb +13 -2
  261. data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_resources_utilization.erb +13 -2
  262. data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_too_big_to_be_displayed.erb +15 -4
  263. data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_detail.erb +13 -2
  264. data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_headers.erb +13 -2
  265. data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_key.erb +13 -2
  266. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_cleaned.erb +13 -2
  267. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_empty.erb +13 -2
  268. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_messages.erb +14 -3
  269. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_time_selector.erb +14 -3
  270. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_timestamp_selector.erb +15 -3
  271. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition.erb +52 -39
  272. data/lib/karafka/web/pro/ui/views/explorer/explorer/show.erb +13 -2
  273. data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_actions.erb +39 -26
  274. data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_empty.erb +13 -2
  275. data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_limited.erb +13 -2
  276. data/lib/karafka/web/pro/ui/views/explorer/explorer/topic.erb +13 -2
  277. data/lib/karafka/web/pro/ui/views/explorer/messages/_breadcrumbs.erb +13 -2
  278. data/lib/karafka/web/pro/ui/views/explorer/messages/forward.erb +28 -16
  279. data/lib/karafka/web/pro/ui/views/explorer/search/_breadcrumbs.erb +13 -2
  280. data/lib/karafka/web/pro/ui/views/explorer/search/_fix_errors.erb +13 -2
  281. data/lib/karafka/web/pro/ui/views/explorer/search/_metadata.erb +13 -2
  282. data/lib/karafka/web/pro/ui/views/explorer/search/_no_results.erb +13 -2
  283. data/lib/karafka/web/pro/ui/views/explorer/search/_no_search_criteria.erb +13 -2
  284. data/lib/karafka/web/pro/ui/views/explorer/search/_search_criteria.erb +14 -3
  285. data/lib/karafka/web/pro/ui/views/explorer/search/_search_modal.erb +27 -15
  286. data/lib/karafka/web/pro/ui/views/explorer/search/_timeout.erb +13 -2
  287. data/lib/karafka/web/pro/ui/views/explorer/search/index.erb +13 -2
  288. data/lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb +13 -2
  289. data/lib/karafka/web/pro/ui/views/health/_no_data.erb +13 -2
  290. data/lib/karafka/web/pro/ui/views/health/_no_partition_data.erb +13 -2
  291. data/lib/karafka/web/pro/ui/views/health/_partition.erb +22 -6
  292. data/lib/karafka/web/pro/ui/views/health/_partition_lags.erb +13 -2
  293. data/lib/karafka/web/pro/ui/views/health/_partition_offset.erb +13 -2
  294. data/lib/karafka/web/pro/ui/views/health/_partition_times.erb +13 -2
  295. data/lib/karafka/web/pro/ui/views/health/_partitions_with_fallback.erb +15 -2
  296. data/lib/karafka/web/pro/ui/views/health/_table_metadata.erb +13 -2
  297. data/lib/karafka/web/pro/ui/views/health/_tabs.erb +13 -2
  298. data/lib/karafka/web/pro/ui/views/health/_topic_edit_options.erb +64 -0
  299. data/lib/karafka/web/pro/ui/views/health/changes.erb +14 -2
  300. data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +13 -2
  301. data/lib/karafka/web/pro/ui/views/health/lags.erb +14 -2
  302. data/lib/karafka/web/pro/ui/views/health/offsets.erb +14 -2
  303. data/lib/karafka/web/pro/ui/views/health/overview.erb +29 -5
  304. data/lib/karafka/web/pro/ui/views/jobs/_job.erb +14 -3
  305. data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +13 -2
  306. data/lib/karafka/web/pro/ui/views/jobs/pending.erb +13 -2
  307. data/lib/karafka/web/pro/ui/views/jobs/running.erb +13 -2
  308. data/lib/karafka/web/pro/ui/views/recurring_tasks/_actions.erb +13 -2
  309. data/lib/karafka/web/pro/ui/views/recurring_tasks/_batch_actions.erb +13 -2
  310. data/lib/karafka/web/pro/ui/views/recurring_tasks/_breadcrumbs.erb +13 -2
  311. data/lib/karafka/web/pro/ui/views/recurring_tasks/_log.erb +13 -2
  312. data/lib/karafka/web/pro/ui/views/recurring_tasks/_not_active.erb +13 -2
  313. data/lib/karafka/web/pro/ui/views/recurring_tasks/_tabs.erb +13 -2
  314. data/lib/karafka/web/pro/ui/views/recurring_tasks/_task.erb +14 -3
  315. data/lib/karafka/web/pro/ui/views/recurring_tasks/logs.erb +13 -2
  316. data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +14 -3
  317. data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +14 -3
  318. data/lib/karafka/web/pro/ui/views/routing/_detail.erb +13 -2
  319. data/lib/karafka/web/pro/ui/views/routing/_topic.erb +14 -3
  320. data/lib/karafka/web/pro/ui/views/routing/index.erb +13 -2
  321. data/lib/karafka/web/pro/ui/views/routing/show.erb +13 -2
  322. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_breadcrumbs.erb +13 -2
  323. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_key.erb +13 -2
  324. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_message.erb +13 -2
  325. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_messages.erb +14 -3
  326. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_cancel.erb +14 -3
  327. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_compacted.erb +13 -2
  328. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_schedule.erb +14 -3
  329. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_tombstone.erb +14 -3
  330. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_unknown.erb +14 -3
  331. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/partition.erb +52 -39
  332. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/topic.erb +13 -2
  333. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_breadcrumbs.erb +13 -2
  334. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_no_groups.erb +13 -2
  335. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +13 -2
  336. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/show.erb +14 -3
  337. data/lib/karafka/web/pro/ui/views/shared/_navigation.erb +14 -3
  338. data/lib/karafka/web/pro/ui/views/shared/_rdkafka_form_error_alert_box.erb +13 -2
  339. data/lib/karafka/web/pro/ui/views/shared/branding/_label.erb +13 -2
  340. data/lib/karafka/web/pro/ui/views/shared/branding/_notice.erb +13 -2
  341. data/lib/karafka/web/pro/ui/views/topics/configs/_breadcrumbs.erb +13 -2
  342. data/lib/karafka/web/pro/ui/views/topics/configs/_config.erb +14 -3
  343. data/lib/karafka/web/pro/ui/views/topics/configs/_delete_button.erb +13 -2
  344. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_form.erb +17 -6
  345. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_plan.erb +13 -2
  346. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_warning.erb +13 -2
  347. data/lib/karafka/web/pro/ui/views/topics/configs/edit.erb +21 -10
  348. data/lib/karafka/web/pro/ui/views/topics/configs/index.erb +14 -3
  349. data/lib/karafka/web/pro/ui/views/topics/distributions/_add_partitions_button.erb +13 -2
  350. data/lib/karafka/web/pro/ui/views/topics/distributions/_badges.erb +13 -2
  351. data/lib/karafka/web/pro/ui/views/topics/distributions/_breadcrumbs.erb +13 -2
  352. data/lib/karafka/web/pro/ui/views/topics/distributions/_chart.erb +13 -2
  353. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_form.erb +18 -6
  354. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_hints.erb +13 -2
  355. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_warnings.erb +13 -2
  356. data/lib/karafka/web/pro/ui/views/topics/distributions/_empty_partitions.erb +13 -2
  357. data/lib/karafka/web/pro/ui/views/topics/distributions/_limited.erb +13 -2
  358. data/lib/karafka/web/pro/ui/views/topics/distributions/_partition.erb +13 -2
  359. data/lib/karafka/web/pro/ui/views/topics/distributions/edit.erb +13 -2
  360. data/lib/karafka/web/pro/ui/views/topics/distributions/show.erb +13 -2
  361. data/lib/karafka/web/pro/ui/views/topics/offsets/_breadcrumbs.erb +13 -2
  362. data/lib/karafka/web/pro/ui/views/topics/offsets/_partition.erb +13 -2
  363. data/lib/karafka/web/pro/ui/views/topics/offsets/show.erb +13 -2
  364. data/lib/karafka/web/pro/ui/views/topics/replications/_breadcrumbs.erb +13 -2
  365. data/lib/karafka/web/pro/ui/views/topics/replications/_metric_box.erb +20 -0
  366. data/lib/karafka/web/pro/ui/views/topics/replications/_partition.erb +13 -2
  367. data/lib/karafka/web/pro/ui/views/topics/replications/_replication_info.erb +65 -0
  368. data/lib/karafka/web/pro/ui/views/topics/replications/_resilience_success.erb +24 -0
  369. data/lib/karafka/web/pro/ui/views/topics/replications/_warning_low_durability.erb +67 -0
  370. data/lib/karafka/web/pro/ui/views/topics/replications/_warning_no_redundancy.erb +66 -0
  371. data/lib/karafka/web/pro/ui/views/topics/replications/_warning_zero_fault_tolerance.erb +67 -0
  372. data/lib/karafka/web/pro/ui/views/topics/replications/show.erb +15 -2
  373. data/lib/karafka/web/pro/ui/views/topics/topics/_breadcrumbs.erb +13 -2
  374. data/lib/karafka/web/pro/ui/views/topics/topics/_create_button.erb +13 -2
  375. data/lib/karafka/web/pro/ui/views/topics/topics/_create_hints.erb +13 -2
  376. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_form.erb +13 -2
  377. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_hints.erb +13 -2
  378. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_warning.erb +13 -2
  379. data/lib/karafka/web/pro/ui/views/topics/topics/_new_form.erb +25 -11
  380. data/lib/karafka/web/pro/ui/views/topics/topics/_tabs.erb +13 -2
  381. data/lib/karafka/web/pro/ui/views/topics/topics/_topic.erb +13 -2
  382. data/lib/karafka/web/pro/ui/views/topics/topics/edit.erb +13 -2
  383. data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +13 -2
  384. data/lib/karafka/web/pro/ui/views/topics/topics/new.erb +13 -2
  385. data/lib/karafka/web/processing/consumer.rb +1 -1
  386. data/lib/karafka/web/processing/consumers/aggregators/metrics.rb +11 -11
  387. data/lib/karafka/web/processing/consumers/aggregators/state.rb +4 -3
  388. data/lib/karafka/web/processing/consumers/reports_migrator.rb +2 -2
  389. data/lib/karafka/web/processing/consumers/schema_manager.rb +1 -1
  390. data/lib/karafka/web/processing/publisher.rb +2 -2
  391. data/lib/karafka/web/producer.rb +61 -0
  392. data/lib/karafka/web/tracking/consumers/contracts/report.rb +2 -2
  393. data/lib/karafka/web/tracking/consumers/contracts/subscription_group.rb +1 -0
  394. data/lib/karafka/web/tracking/consumers/listeners/booting.rb +1 -1
  395. data/lib/karafka/web/tracking/consumers/listeners/connections.rb +7 -2
  396. data/lib/karafka/web/tracking/consumers/listeners/errors.rb +10 -10
  397. data/lib/karafka/web/tracking/consumers/listeners/pausing.rb +1 -1
  398. data/lib/karafka/web/tracking/consumers/listeners/processing.rb +25 -25
  399. data/lib/karafka/web/tracking/consumers/listeners/statistics.rb +35 -35
  400. data/lib/karafka/web/tracking/consumers/reporter.rb +2 -2
  401. data/lib/karafka/web/tracking/consumers/sampler/enrichers/consumer_groups.rb +1 -0
  402. data/lib/karafka/web/tracking/consumers/sampler/metrics/base.rb +2 -1
  403. data/lib/karafka/web/tracking/consumers/sampler/metrics/container.rb +15 -15
  404. data/lib/karafka/web/tracking/consumers/sampler/metrics/network.rb +6 -6
  405. data/lib/karafka/web/tracking/consumers/sampler/metrics/os.rb +41 -37
  406. data/lib/karafka/web/tracking/consumers/sampler.rb +7 -7
  407. data/lib/karafka/web/tracking/helpers/error_info.rb +10 -10
  408. data/lib/karafka/web/tracking/helpers/sysconf.rb +2 -2
  409. data/lib/karafka/web/tracking/helpers/ttls/array.rb +1 -1
  410. data/lib/karafka/web/tracking/helpers/ttls/hash.rb +1 -1
  411. data/lib/karafka/web/tracking/helpers/ttls/stats.rb +4 -4
  412. data/lib/karafka/web/tracking/producers/listeners/booting.rb +1 -1
  413. data/lib/karafka/web/tracking/producers/listeners/errors.rb +2 -2
  414. data/lib/karafka/web/tracking/producers/reporter.rb +2 -2
  415. data/lib/karafka/web/tracking/producers/sampler.rb +1 -1
  416. data/lib/karafka/web/tracking/ui/errors.rb +4 -4
  417. data/lib/karafka/web/ui/app.rb +2 -2
  418. data/lib/karafka/web/ui/base.rb +30 -30
  419. data/lib/karafka/web/ui/controllers/base_controller.rb +24 -24
  420. data/lib/karafka/web/ui/controllers/cluster_controller.rb +3 -3
  421. data/lib/karafka/web/ui/controllers/requests/params.rb +6 -6
  422. data/lib/karafka/web/ui/helpers/application_helper.rb +59 -59
  423. data/lib/karafka/web/ui/helpers/paths_helper.rb +15 -7
  424. data/lib/karafka/web/ui/helpers/tailwind_helper.rb +6 -6
  425. data/lib/karafka/web/ui/helpers/time_helper.rb +1 -1
  426. data/lib/karafka/web/ui/helpers/topics_helper.rb +4 -4
  427. data/lib/karafka/web/ui/lib/admin.rb +2 -2
  428. data/lib/karafka/web/ui/lib/paginations/base.rb +7 -7
  429. data/lib/karafka/web/ui/lib/paginations/offset_based.rb +2 -2
  430. data/lib/karafka/web/ui/lib/paginations/page_based.rb +1 -1
  431. data/lib/karafka/web/ui/lib/paginations/paginators/arrays.rb +3 -3
  432. data/lib/karafka/web/ui/lib/paginations/watermark_offsets_based.rb +1 -1
  433. data/lib/karafka/web/ui/lib/sorter.rb +2 -2
  434. data/lib/karafka/web/ui/models/counters.rb +1 -1
  435. data/lib/karafka/web/ui/models/health.rb +1 -0
  436. data/lib/karafka/web/ui/models/jobs.rb +2 -2
  437. data/lib/karafka/web/ui/models/message.rb +9 -9
  438. data/lib/karafka/web/ui/models/metrics/charts/aggregated.rb +3 -3
  439. data/lib/karafka/web/ui/models/metrics/charts/topics.rb +3 -3
  440. data/lib/karafka/web/ui/models/metrics/topics.rb +8 -8
  441. data/lib/karafka/web/ui/models/processes.rb +3 -3
  442. data/lib/karafka/web/ui/models/recurring_tasks/schedule.rb +2 -2
  443. data/lib/karafka/web/ui/models/status/checks/base.rb +127 -0
  444. data/lib/karafka/web/ui/models/status/checks/commands_topic_presence.rb +52 -0
  445. data/lib/karafka/web/ui/models/status/checks/connection.rb +68 -0
  446. data/lib/karafka/web/ui/models/status/checks/consumers_reports.rb +34 -0
  447. data/lib/karafka/web/ui/models/status/checks/consumers_reports_schema_state.rb +32 -0
  448. data/lib/karafka/web/ui/models/status/checks/consumers_schemas.rb +44 -0
  449. data/lib/karafka/web/ui/models/status/checks/enabled.rb +39 -0
  450. data/lib/karafka/web/ui/models/status/checks/initial_consumers_metrics.rb +48 -0
  451. data/lib/karafka/web/ui/models/status/checks/initial_consumers_state.rb +48 -0
  452. data/lib/karafka/web/ui/models/status/checks/live_reporting.rb +31 -0
  453. data/lib/karafka/web/ui/models/status/checks/materializing_lag.rb +49 -0
  454. data/lib/karafka/web/ui/models/status/checks/partitions.rb +45 -0
  455. data/lib/karafka/web/ui/models/status/checks/pro_subscription.rb +29 -0
  456. data/lib/karafka/web/ui/models/status/checks/replication.rb +51 -0
  457. data/lib/karafka/web/ui/models/status/checks/routing_topics_presence.rb +53 -0
  458. data/lib/karafka/web/ui/models/status/checks/state_calculation.rb +39 -0
  459. data/lib/karafka/web/ui/models/status/checks/topics.rb +44 -0
  460. data/lib/karafka/web/ui/models/status/context.rb +142 -0
  461. data/lib/karafka/web/ui/models/status/step.rb +64 -0
  462. data/lib/karafka/web/ui/models/status.rb +70 -356
  463. data/lib/karafka/web/ui/models/topic.rb +2 -2
  464. data/lib/karafka/web/ui/public/javascripts/application.min.js +1 -1
  465. data/lib/karafka/web/ui/public/javascripts/application.min.js.br +0 -0
  466. data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
  467. data/lib/karafka/web/ui/public/javascripts/components/live_poll.js +2 -2
  468. data/lib/karafka/web/ui/public/stylesheets/application.min.css +4660 -2524
  469. data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
  470. data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
  471. data/lib/karafka/web/ui/public/stylesheets/libs/tailwind.css +62 -3
  472. data/lib/karafka/web/ui/routes/assets.rb +7 -7
  473. data/lib/karafka/web/ui/routes/cluster.rb +4 -4
  474. data/lib/karafka/web/ui/routes/consumers.rb +2 -2
  475. data/lib/karafka/web/ui/routes/dashboard.rb +1 -1
  476. data/lib/karafka/web/ui/routes/errors.rb +2 -2
  477. data/lib/karafka/web/ui/routes/jobs.rb +4 -4
  478. data/lib/karafka/web/ui/routes/routing.rb +1 -1
  479. data/lib/karafka/web/ui/routes/status.rb +1 -1
  480. data/lib/karafka/web/ui/routes/support.rb +1 -1
  481. data/lib/karafka/web/ui/routes/ux.rb +1 -1
  482. data/lib/karafka/web/ui/views/cluster/_partition.erb +1 -0
  483. data/lib/karafka/web/ui/views/dashboard/_counters.erb +16 -16
  484. data/lib/karafka/web/ui/views/errors/_detail.erb +2 -3
  485. data/lib/karafka/web/ui/views/errors/_error.erb +1 -1
  486. data/lib/karafka/web/ui/views/errors/index.erb +1 -1
  487. data/lib/karafka/web/ui/views/errors/show.erb +1 -1
  488. data/lib/karafka/web/ui/views/jobs/_job.erb +1 -1
  489. data/lib/karafka/web/ui/views/layout.erb +1 -1
  490. data/lib/karafka/web/ui/views/routing/_consumer_group.erb +1 -1
  491. data/lib/karafka/web/ui/views/routing/_topic.erb +1 -1
  492. data/lib/karafka/web/ui/views/shared/_header.erb +5 -5
  493. data/lib/karafka/web/ui/views/shared/_navigation.erb +1 -1
  494. data/lib/karafka/web/ui/views/shared/alerts/_error.erb +2 -2
  495. data/lib/karafka/web/ui/views/shared/alerts/_info.erb +1 -1
  496. data/lib/karafka/web/ui/views/shared/alerts/_primary.erb +1 -1
  497. data/lib/karafka/web/ui/views/shared/alerts/_secondary.erb +1 -1
  498. data/lib/karafka/web/ui/views/shared/alerts/_success.erb +1 -1
  499. data/lib/karafka/web/ui/views/shared/alerts/_warning.erb +2 -2
  500. data/lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb +3 -3
  501. data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +4 -4
  502. data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +4 -4
  503. data/lib/karafka/web/ui/views/shared/exceptions/unhandled_error.erb +4 -4
  504. data/lib/karafka/web/ui/views/status/show.erb +15 -0
  505. data/lib/karafka/web/ui/views/status/warnings/_commands_topic_presence.erb +14 -0
  506. data/lib/karafka/web/ui/views/ux/_code.erb +0 -1
  507. data/lib/karafka/web/ui/views/ux/_data_table.erb +79 -0
  508. data/lib/karafka/web/ui/views/ux/_headers.erb +1 -1
  509. data/lib/karafka/web/ui/views/ux/_pagination.erb +1 -1
  510. data/lib/karafka/web/version.rb +1 -1
  511. data/lib/karafka/web.rb +17 -17
  512. data/package-lock.json +480 -92
  513. data/package.json +3 -1
  514. data/renovate.json +12 -11
  515. data/tailwind.config.js +4 -7
  516. metadata +72 -3
  517. data/lib/karafka/web/pro/ui/views/consumers/commands/_metadata.erb +0 -44
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -20,7 +37,7 @@ module Karafka
20
37
 
21
38
  loader = Zeitwerk::Loader.new
22
39
  loader.push_dir(
23
- File.join(Karafka::Web.gem_root, 'lib/karafka/web/pro'),
40
+ File.join(Karafka::Web.gem_root, "lib/karafka/web/pro"),
24
41
  namespace: Karafka::Web::Pro
25
42
  )
26
43
 
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -11,17 +28,17 @@ module Karafka
11
28
  module Ui
12
29
  # Main Roda Web App that servers all the metrics and stats
13
30
  class App < Web::Ui::Base
14
- opts[:root] = Karafka::Web.gem_root.join('lib/karafka/web/pro/ui')
31
+ opts[:root] = Karafka::Web.gem_root.join("lib/karafka/web/pro/ui")
15
32
 
16
33
  instance_exec(&CONTEXT_DETAILS)
17
34
 
18
- plugin :render, escape: true, engine: 'erb', allowed_paths: [
19
- Karafka::Web.gem_root.join('lib/karafka/web/pro/ui/views'),
20
- Karafka::Web.gem_root.join('lib/karafka/web/ui/views')
35
+ plugin :render, escape: true, engine: "erb", allowed_paths: [
36
+ Karafka::Web.gem_root.join("lib/karafka/web/pro/ui/views"),
37
+ Karafka::Web.gem_root.join("lib/karafka/web/ui/views")
21
38
  ]
22
39
 
23
40
  plugin :additional_view_directories, [
24
- Karafka::Web.gem_root.join('lib/karafka/web/ui/views')
41
+ Karafka::Web.gem_root.join("lib/karafka/web/ui/views")
25
42
  ]
26
43
 
27
44
  before do
@@ -61,7 +78,7 @@ module Karafka
61
78
  private_constant :SUB_ROUTES
62
79
 
63
80
  route do |r|
64
- r.root { r.redirect root_path('dashboard') }
81
+ r.root { r.redirect root_path("dashboard") }
65
82
 
66
83
  SUB_ROUTES.each { |sub_route| sub_route.bind(self, r) }
67
84
 
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -67,10 +84,7 @@ module Karafka
67
84
  def quiet_all
68
85
  features.commanding!
69
86
 
70
- request(
71
- Commanding::Commands::Consumers::Quiet,
72
- '*'
73
- )
87
+ broadcast_request(Commanding::Commands::Consumers::Quiet)
74
88
 
75
89
  redirect(
76
90
  :back,
@@ -82,10 +96,7 @@ module Karafka
82
96
  def stop_all
83
97
  features.commanding!
84
98
 
85
- request(
86
- Commanding::Commands::Consumers::Stop,
87
- '*'
88
- )
99
+ broadcast_request(Commanding::Commands::Consumers::Stop)
89
100
 
90
101
  redirect(
91
102
  :back,
@@ -95,13 +106,24 @@ module Karafka
95
106
 
96
107
  private
97
108
 
98
- # Dispatches given command
109
+ # Dispatches given command to a specific process
99
110
  # @param command [Class] command class
100
111
  # @param process_id [String] process id
101
112
  def request(command, process_id)
102
113
  Commanding::Dispatcher.request(
103
114
  command.name,
104
- process_id
115
+ {},
116
+ matchers: { process_id: process_id }
117
+ )
118
+ end
119
+
120
+ # Dispatches given command to all processes (no matchers)
121
+ # @param command [Class] command class
122
+ def broadcast_request(command)
123
+ Commanding::Dispatcher.request(
124
+ command.name,
125
+ {},
126
+ matchers: {}
105
127
  )
106
128
  end
107
129
 
@@ -121,7 +143,7 @@ module Karafka
121
143
  command_name = name.to_s.capitalize
122
144
 
123
145
  format_flash(
124
- 'The ? command has been dispatched to the ? process',
146
+ "The ? command has been dispatched to the ? process",
125
147
  command_name,
126
148
  process_id
127
149
  )
@@ -134,9 +156,9 @@ module Karafka
134
156
  command_name = name.to_s.capitalize
135
157
 
136
158
  format_flash(
137
- 'The ? command has been dispatched to ? active processes',
159
+ "The ? command has been dispatched to ? active processes",
138
160
  command_name,
139
- 'all'
161
+ "all"
140
162
  )
141
163
  end
142
164
  end
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -65,15 +82,15 @@ module Karafka
65
82
 
66
83
  # If nothing found, lets redirect user back to the commands list
67
84
  redirect(
68
- 'commands',
69
- warning: 'No recent commands available'
85
+ "commands",
86
+ warning: "No recent commands available"
70
87
  )
71
88
  end
72
89
 
73
90
  private
74
91
 
75
- # @return [Array] Array with requested messages as well as pagination details and other
76
- # obtained metadata
92
+ # @return [Array] Array with requested messages as well as pagination details
93
+ # and other obtained metadata
77
94
  def current_partition_data
78
95
  Models::Message.offset_page(
79
96
  commands_topic,
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -17,64 +34,48 @@ module Karafka
17
34
  private
18
35
 
19
36
  # Finds all the needed details and if not found raises a not found.
20
- # This prevents most cases where something would change between visiting the pages
21
- # and dispatching no longer valid data.
37
+ # Uses the aggregated health stats data instead of process-specific data.
22
38
  #
23
- # @param process_id [String]
24
- # @param subscription_group_id [String]
39
+ # @param consumer_group_id [String]
25
40
  # @param topic [String]
26
41
  # @param partition_id [Integer]
27
- def bootstrap!(
28
- process_id,
29
- subscription_group_id,
30
- topic,
31
- partition_id
32
- )
33
- subscriptions(process_id)
34
-
35
- @subscription_group_id = subscription_group_id
42
+ def bootstrap!(consumer_group_id, topic, partition_id)
43
+ @consumer_group_id = consumer_group_id
36
44
  @topic = topic
37
- @partition_id = partition_id
38
- @consumer_group = nil
39
- @subscription_group = nil
40
- @partition_stats = nil
41
-
42
- # Looks for the appropriate details about given partition and so on in the
43
- # current process data. Since we operate in the context of the given process,
44
- # it must have those details. If not it means that assignment most likely have
45
- # changed and it is no longer valid anyhow.
46
- @process.consumer_groups.each do |consumer_group|
47
- consumer_group.subscription_groups.each do |subscription_group|
48
- next unless subscription_group.id == @subscription_group_id
45
+ @partition_id = partition_id.to_i
49
46
 
50
- @subscription_group = subscription_group
51
- @consumer_group = consumer_group
47
+ # Get aggregated stats from all processes
48
+ current_state = Models::ConsumersState.current!
49
+ @stats = Models::Health.current(current_state)
52
50
 
53
- subscription_group.topics.each do |s_topic|
54
- next unless s_topic.name == @topic
51
+ # Find the consumer group
52
+ cg_stats = @stats[@consumer_group_id]
53
+ cg_stats || raise(Karafka::Web::Errors::Ui::NotFoundError)
55
54
 
56
- s_topic.partitions.each do |partition|
57
- next unless @partition_id.to_s == partition.partition_id.to_s
58
-
59
- @partition_stats = partition
60
- end
61
- end
62
- end
63
- end
55
+ # Find the topic within the consumer group
56
+ @topic_stats = cg_stats[:topics][@topic]
57
+ @topic_stats || raise(Karafka::Web::Errors::Ui::NotFoundError)
64
58
 
65
- @subscription_group || raise(Karafka::Web::Errors::Ui::NotFoundError)
59
+ # Find the partition within the topic
60
+ @partition_stats = @topic_stats[:partitions][@partition_id]
61
+ @partition_stats || raise(Karafka::Web::Errors::Ui::NotFoundError)
66
62
 
63
+ # Check if topic is LRJ from routing
67
64
  routing_topics = Karafka::App.routes.flat_map(&:topics).flat_map(&:to_a)
68
65
 
69
66
  @routing_topic = routing_topics.find do |r_topic|
70
- r_topic.subscription_group.id == @subscription_group.id &&
67
+ r_topic.consumer_group.id == @consumer_group_id &&
71
68
  r_topic.name == @topic
72
69
  end
73
70
 
74
- @partition_stats || raise(Karafka::Web::Errors::Ui::NotFoundError)
75
71
  # May not be found when not all routing is available. In such cases we assume
76
72
  # that topic is not LRJ and it's up to the end user to handle this correctly.
77
73
  @topic_lrj = @routing_topic&.long_running_job?
74
+
75
+ # Check if any active process is running (needed to issue commands)
76
+ @any_process_running = Models::Processes.active(current_state).any? do |process|
77
+ process.status == "running"
78
+ end
78
79
  end
79
80
  end
80
81
  end
@@ -1,7 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # This code is part of Karafka Pro, a commercial component not licensed under LGPL.
4
- # See LICENSE for details.
3
+ # Karafka Pro - Source Available Commercial Software
4
+ # Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
5
+ #
6
+ # This software is NOT open source. It is source-available commercial software
7
+ # requiring a paid license for use. It is NOT covered by LGPL.
8
+ #
9
+ # PROHIBITED:
10
+ # - Use without a valid commercial license
11
+ # - Redistribution, modification, or derivative works without authorization
12
+ # - Use as training data for AI/ML models or inclusion in datasets
13
+ # - Scraping, crawling, or automated collection for any purpose
14
+ #
15
+ # PERMITTED:
16
+ # - Reading, referencing, and linking for personal or commercial use
17
+ # - Runtime retrieval by AI assistants, coding agents, and RAG systems
18
+ # for the purpose of providing contextual help to Karafka users
19
+ #
20
+ # License: https://karafka.io/docs/Pro-License-Comm/
21
+ # Contact: contact@karafka.io
5
22
 
6
23
  module Karafka
7
24
  module Web
@@ -10,58 +27,60 @@ module Karafka
10
27
  module Controllers
11
28
  module Consumers
12
29
  module Partitions
13
- # Partition offset management controller in the context of current consumer process
14
- # assignments
30
+ # Partition offset management controller at the consumer group level
15
31
  class OffsetsController < BaseController
16
32
  self.sortable_attributes = [].freeze
17
33
 
18
34
  # Displays the offset edit page with the edit form or a warning when not applicable
19
35
  #
20
- # @param process_id [String] id of the process we're interested in
21
- # @param subscription_group_id [String]
36
+ # @param consumer_group_id [String]
22
37
  # @param topic [String]
23
38
  # @param partition_id [Integer]
24
- def edit(process_id, subscription_group_id, topic, partition_id)
25
- bootstrap!(process_id, subscription_group_id, topic, partition_id)
39
+ def edit(consumer_group_id, topic, partition_id)
40
+ bootstrap!(consumer_group_id, topic, partition_id)
26
41
 
27
42
  render
28
43
  end
29
44
 
30
45
  # Triggers the offset change in the running process via the commanding API
31
46
  #
32
- # @param process_id [String] id of the process we're interested in
33
- # @param subscription_group_id [String]
47
+ # @param consumer_group_id [String]
34
48
  # @param topic [String]
35
49
  # @param partition_id [Integer]
36
- def update(process_id, subscription_group_id, topic, partition_id)
37
- edit(process_id, subscription_group_id, topic, partition_id)
50
+ def update(consumer_group_id, topic, partition_id)
51
+ edit(consumer_group_id, topic, partition_id)
38
52
 
39
53
  offset = params.int(:offset)
40
54
  prevent_overtaking = params.bool(:prevent_overtaking)
41
55
  force_resume = params.bool(:force_resume)
42
56
 
57
+ # Broadcast to all processes with matchers to filter by consumer group,
58
+ # topic, and partition
43
59
  Commanding::Dispatcher.request(
44
60
  Commanding::Commands::Partitions::Seek.name,
45
- process_id,
46
61
  {
47
- consumer_group_id: @consumer_group.id,
48
- subscription_group_id: @subscription_group.id,
62
+ consumer_group_id: consumer_group_id,
49
63
  topic: topic,
50
64
  partition_id: partition_id,
51
65
  offset: offset,
52
66
  prevent_overtaking: prevent_overtaking,
53
67
  force_resume: force_resume
68
+ },
69
+ matchers: {
70
+ consumer_group_id: consumer_group_id,
71
+ topic: topic,
72
+ partition_id: partition_id
54
73
  }
55
74
  )
56
75
 
57
76
  redirect(
58
77
  :previous,
59
78
  success: format_flash(
60
- 'Initiated offset adjustment to ? for ?#? (subscription group: ?)',
79
+ "Initiated offset adjustment to ? for ?#? in consumer group ?",
61
80
  offset,
62
81
  topic,
63
82
  partition_id,
64
- subscription_group_id
83
+ consumer_group_id
65
84
  )
66
85
  )
67
86
  end