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
@@ -66,21 +66,21 @@ module Karafka
66
66
  def current_search
67
67
  return @current_search if @current_search
68
68
 
69
- search = @request_params['search']
69
+ search = @request_params["search"]
70
70
 
71
71
  @current_search = search.is_a?(Hash) ? search : {}
72
72
  end
73
73
 
74
74
  # @return [String] sort query value
75
75
  def current_sort
76
- @current_sort ||= @request_params['sort'].to_s.downcase
76
+ @current_sort ||= @request_params["sort"].to_s.downcase
77
77
  end
78
78
 
79
79
  # @return [Integer] current page for paginated views
80
80
  # @note It does basic sanitization
81
81
  def current_page
82
82
  @current_page ||= begin
83
- page = @request_params['page'].to_i
83
+ page = @request_params["page"].to_i
84
84
 
85
85
  page.positive? ? page : 1
86
86
  end
@@ -88,7 +88,7 @@ module Karafka
88
88
 
89
89
  # @return [String] Range type for charts we want to fetch
90
90
  def current_range
91
- candidate = @request_params.fetch('range', 'seconds')
91
+ candidate = @request_params.fetch("range", "seconds")
92
92
  candidate = ALLOWED_RANGES.first unless ALLOWED_RANGES.include?(candidate)
93
93
  candidate.to_sym
94
94
  end
@@ -98,14 +98,14 @@ module Karafka
98
98
  # is provided, we go with the high offset first page approach
99
99
  def current_offset
100
100
  @current_offset ||= begin
101
- offset = @request_params.fetch('offset', -1).to_i
101
+ offset = @request_params.fetch("offset", -1).to_i
102
102
  [offset, -1].max
103
103
  end
104
104
  end
105
105
 
106
106
  # @return [Integer] currently selected partition or -1 if nothing provided
107
107
  def current_partition
108
- @current_partition ||= @request_params.fetch('partition', -1).to_i
108
+ @current_partition ||= @request_params.fetch("partition", -1).to_i
109
109
  end
110
110
  end
111
111
  end
@@ -11,22 +11,22 @@ module Karafka
11
11
  # Default attribute names mapped from the attributes themselves
12
12
  # It makes it easier as we do not have to declare those all the time
13
13
  SORT_NAMES = {
14
- id: 'ID',
15
- partition_id: 'Partition',
16
- memory_usage: 'RSS',
17
- started_at: 'Started',
18
- committed_offset: 'Committed',
19
- last_offset: 'Last',
20
- first_offset: 'First',
21
- lo_offset: 'Low',
22
- hi_offset: 'High',
23
- ls_offset: 'LSO',
24
- lag_hybrid: 'Lag',
25
- lag_stored: 'Stored',
26
- stored_offset: 'Stored',
27
- fetch_state: 'Fetch',
28
- poll_state: 'Poll',
29
- lso_risk_state: 'LSO'
14
+ id: "ID",
15
+ partition_id: "Partition",
16
+ memory_usage: "RSS",
17
+ started_at: "Started",
18
+ committed_offset: "Committed",
19
+ last_offset: "Last",
20
+ first_offset: "First",
21
+ lo_offset: "Low",
22
+ hi_offset: "High",
23
+ ls_offset: "LSO",
24
+ lag_hybrid: "Lag",
25
+ lag_stored: "Stored",
26
+ stored_offset: "Stored",
27
+ fetch_state: "Fetch",
28
+ poll_state: "Poll",
29
+ lso_risk_state: "LSO"
30
30
  }.freeze
31
31
 
32
32
  private_constant :SORT_NAMES
@@ -36,8 +36,8 @@ module Karafka
36
36
  def nav_class(location)
37
37
  comparator, value = location.to_a.first
38
38
 
39
- local_location = request.path.gsub(env.fetch('SCRIPT_NAME'), '')
40
- local_location.public_send(:"#{comparator}?", value) ? 'active' : ''
39
+ local_location = request.path.gsub(env.fetch("SCRIPT_NAME"), "")
40
+ local_location.public_send(:"#{comparator}?", value) ? "active" : ""
41
41
  end
42
42
 
43
43
  # Converts object into a string and for objects that would anyhow return their
@@ -47,7 +47,7 @@ module Karafka
47
47
  # @param object [Object]
48
48
  # @return [String]
49
49
  def object_value_to_s(object)
50
- object.to_s.include?('#<') ? object.class.to_s : object.to_s
50
+ object.to_s.include?("#<") ? object.class.to_s : object.to_s
51
51
  end
52
52
 
53
53
  # Takes a status and recommends background style color
@@ -56,14 +56,14 @@ module Karafka
56
56
  # @return [String] background style
57
57
  def status_badge(status)
58
58
  case status
59
- when 'initialized' then 'badge-success'
60
- when 'supervising' then 'badge-success'
61
- when 'running' then 'badge-success'
62
- when 'quieting' then 'badge-warning'
63
- when 'quiet' then 'badge-warning'
64
- when 'stopping' then 'badge-warning'
65
- when 'stopped' then 'badge-error'
66
- when 'terminated' then 'badge-error'
59
+ when "initialized" then "badge-success"
60
+ when "supervising" then "badge-success"
61
+ when "running" then "badge-success"
62
+ when "quieting" then "badge-warning"
63
+ when "quiet" then "badge-warning"
64
+ when "stopping" then "badge-warning"
65
+ when "stopped" then "badge-error"
66
+ when "terminated" then "badge-error"
67
67
  else
68
68
  raise ::Karafka::Errors::UnsupportedCaseError, status
69
69
  end
@@ -74,9 +74,9 @@ module Karafka
74
74
  # @param trend [Numeric] lag trend
75
75
  # @return [String] bg classes
76
76
  def lag_trend_badge(trend)
77
- bg = 'badge-success' if trend.negative?
78
- bg ||= 'badge-warning' if trend.positive?
79
- bg ||= 'badge-secondary'
77
+ bg = "badge-success" if trend.negative?
78
+ bg ||= "badge-warning" if trend.positive?
79
+ bg ||= "badge-secondary"
80
80
  bg
81
81
  end
82
82
 
@@ -87,7 +87,7 @@ module Karafka
87
87
  def tags(tags_array)
88
88
  tags_array
89
89
  .map { |tag| %(<span class="badge badge-info">#{tag}</span>) }
90
- .join(' ')
90
+ .join(" ")
91
91
  end
92
92
 
93
93
  # Takes a kafka report state and recommends background style color
@@ -95,18 +95,18 @@ module Karafka
95
95
  # @return [String] background style
96
96
  def kafka_state_badge(state)
97
97
  case state
98
- when 'up' then 'badge-success'
99
- when 'active' then 'badge-success'
100
- when 'steady' then 'badge-success'
98
+ when "up" then "badge-success"
99
+ when "active" then "badge-success"
100
+ when "steady" then "badge-success"
101
101
  else
102
- 'badge-warning'
102
+ "badge-warning"
103
103
  end
104
104
  end
105
105
 
106
106
  # @param mem_kb [Integer] memory used in KB
107
107
  # @return [String] formatted memory usage
108
108
  def format_memory(mem_kb)
109
- return '0' if !mem_kb || mem_kb.zero?
109
+ return "0" if !mem_kb || mem_kb.zero?
110
110
 
111
111
  if mem_kb < 10_240
112
112
  "#{number_with_delimiter(mem_kb.round(4))} KB"
@@ -121,12 +121,12 @@ module Karafka
121
121
  # @param number [Numeric]
122
122
  # @param delimiter [String] delimiter (comma by default)
123
123
  # @return [String] number with delimiter
124
- def number_with_delimiter(number, delimiter = ',')
125
- return '' unless number
124
+ def number_with_delimiter(number, delimiter = ",")
125
+ return "" unless number
126
126
 
127
- parts = number.to_s.to_str.split('.')
127
+ parts = number.to_s.to_str.split(".")
128
128
  parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
129
- parts.join('.')
129
+ parts.join(".")
130
130
  end
131
131
 
132
132
  # @param lag [Integer] lag
@@ -134,7 +134,7 @@ module Karafka
134
134
  # @see #offset_with_label
135
135
  def lag_with_label(lag)
136
136
  if lag.negative?
137
- title = 'Not available until first offset commit'
137
+ title = "Not available until first offset commit"
138
138
  %(<span class="badge badge-secondary" title="#{title}">N/A</span>)
139
139
  else
140
140
  lag.to_s
@@ -150,7 +150,7 @@ module Karafka
150
150
  # yet committed and there is no value we know of
151
151
  def offset_with_label(topic_name, partition_id, offset, explore: false)
152
152
  if offset.negative?
153
- title = 'Not available until first offset commit'
153
+ title = "Not available until first offset commit"
154
154
  %(<span class="badge badge-secondary" title="#{title}">N/A</span>)
155
155
  elsif explore
156
156
  path = explorer_topics_path(topic_name, partition_id, offset)
@@ -166,7 +166,7 @@ module Karafka
166
166
  # @param value [Integer]
167
167
  # @return [String] input value if not negative or N/A
168
168
  def normalized_metric(value)
169
- value.negative? ? 'N/A' : value.to_s
169
+ value.negative? ? "N/A" : value.to_s
170
170
  end
171
171
 
172
172
  # @param details [::Karafka::Web::Ui::Models::Partition] partition information with
@@ -175,11 +175,11 @@ module Karafka
175
175
  def lso_risk_state_bg(details)
176
176
  case details.lso_risk_state
177
177
  when :active
178
- ''
178
+ ""
179
179
  when :at_risk
180
- 'bg-warning bg-opacity-25'
180
+ "bg-warning bg-opacity-25"
181
181
  when :stopped
182
- 'bg-error bg-opacity-25'
182
+ "bg-error bg-opacity-25"
183
183
  else
184
184
  raise ::Karafka::Errors::UnsupportedCaseError
185
185
  end
@@ -191,11 +191,11 @@ module Karafka
191
191
  def lso_risk_state_badge(details)
192
192
  case details.lso_risk_state
193
193
  when :active
194
- ''
194
+ ""
195
195
  when :at_risk
196
- 'badge-warning'
196
+ "badge-warning"
197
197
  when :stopped
198
- 'badge-error'
198
+ "badge-error"
199
199
  else
200
200
  raise ::Karafka::Errors::UnsupportedCaseError
201
201
  end
@@ -245,15 +245,15 @@ module Karafka
245
245
  if SORT_NAMES[attribute]
246
246
  name = SORT_NAMES[attribute]
247
247
  else
248
- name = attribute.to_s.tr('_', ' ').tr('?', '')
248
+ name = attribute.to_s.tr("_", " ").tr("?", "")
249
249
  # Always capitalize the name
250
- name = name.split.map(&:capitalize).join(' ')
250
+ name = name.split.map(&:capitalize).join(" ")
251
251
  end
252
252
  end
253
253
 
254
- arrow_both = '&#x21D5;'
255
- arrow_down = '&#9662;'
256
- arrow_up = '&#9652;'
254
+ arrow_both = "&#x21D5;"
255
+ arrow_down = "&#9662;"
256
+ arrow_up = "&#9652;"
257
257
 
258
258
  desc = "#{attribute} desc"
259
259
  asc = "#{attribute} asc"
@@ -286,7 +286,7 @@ module Karafka
286
286
  # @param omission [String] truncation omission
287
287
  # @param strategy [Symbol] `:default` or `:middle` how should we truncate
288
288
  # @return [String] HTML span tag with truncated content and full content title
289
- def truncate(string, length: 50, omission: '...', strategy: :default)
289
+ def truncate(string, length: 50, omission: "...", strategy: :default)
290
290
  return string if string.length <= length
291
291
 
292
292
  case strategy
@@ -321,10 +321,10 @@ module Karafka
321
321
  tv = merged_hash[k]
322
322
 
323
323
  merged_hash[k] = if tv.is_a?(Hash) && v.is_a?(Hash)
324
- deep_merge(tv, v)
325
- else
326
- v
327
- end
324
+ deep_merge(tv, v)
325
+ else
326
+ v
327
+ end
328
328
  end
329
329
 
330
330
  merged_hash
@@ -48,7 +48,7 @@ module Karafka
48
48
  # mounted in a sub-path and we need to make sure our all paths are relative to "our"
49
49
  # root, not the root of the app in which it was mounted.
50
50
  def root_path(*args)
51
- "#{env.fetch('SCRIPT_NAME')}/#{args.join('/')}"
51
+ "#{env.fetch("SCRIPT_NAME")}/#{args.join("/")}"
52
52
  end
53
53
 
54
54
  # Generates a full path to any asset with our web-ui version. We ship all assets with
@@ -66,7 +66,7 @@ module Karafka
66
66
  # @param args [Array<String>] sub-paths
67
67
  # @return [String] path to the expected location
68
68
  def explorer_path(*args)
69
- root_path(*['explorer', args.compact].flatten)
69
+ root_path(*["explorer", args.compact].flatten)
70
70
  end
71
71
 
72
72
  # Generates routes for explorer topics paths
@@ -74,7 +74,7 @@ module Karafka
74
74
  # @param args [Array<String>] sub-paths
75
75
  # @return explorer topics path
76
76
  def explorer_topics_path(*args)
77
- explorer_path(*['topics', args.compact].flatten)
77
+ explorer_path(*["topics", args.compact].flatten)
78
78
  end
79
79
 
80
80
  # Generates routes for explorer messages paths
@@ -82,21 +82,21 @@ module Karafka
82
82
  # @param args [Array<String>] sub-paths
83
83
  # @return [String] explorer messages path
84
84
  def explorer_messages_path(*args)
85
- explorer_path(*['messages', args.compact].flatten)
85
+ explorer_path(*["messages", args.compact].flatten)
86
86
  end
87
87
 
88
88
  # Helps build topics paths
89
89
  #
90
90
  # @return [String] topics scope path
91
91
  def topics_path(*)
92
- root_path('topics', *)
92
+ root_path("topics", *)
93
93
  end
94
94
 
95
95
  # Helps build consumers paths
96
96
  #
97
97
  # @return [String] consumers scope path
98
98
  def consumers_path(*)
99
- root_path('consumers', *)
99
+ root_path("consumers", *)
100
100
  end
101
101
 
102
102
  # Helps build per-consumer scope paths
@@ -121,7 +121,15 @@ module Karafka
121
121
  action = nil
122
122
  )
123
123
  root_path(
124
- *['scheduled_messages', 'explorer', 'topics', topic_name, partition_id, offset, action].compact
124
+ *[
125
+ "scheduled_messages",
126
+ "explorer",
127
+ "topics",
128
+ topic_name,
129
+ partition_id,
130
+ offset,
131
+ action
132
+ ].compact
125
133
  )
126
134
  end
127
135
  end
@@ -26,7 +26,7 @@ module Karafka
26
26
  # @param content [String] badge content
27
27
  # @param classes [String] extra css classes
28
28
  # @return [String] badge html
29
- def badge(content, classes: '')
29
+ def badge(content, classes: "")
30
30
  %(<span class="badge #{classes}">#{content}</span>)
31
31
  end
32
32
 
@@ -36,26 +36,26 @@ module Karafka
36
36
  # @param classes [String] extra css classes
37
37
  # @param title [String, nil] title (if any)
38
38
  # @return [String] button link html
39
- def link_button(name, path, classes: '', title: nil)
39
+ def link_button(name, path, classes: "", title: nil)
40
40
  %(<a href="#{path}" class="btn #{classes}" title="#{title}">#{name}</a>)
41
41
  end
42
42
 
43
43
  # Defines various methods for badges and links that simplify defining them without
44
44
  # having to provide whole classes scopes always.
45
45
  TYPES.each do |type|
46
- define_method :"badge_#{type}" do |content, classes: ''|
46
+ define_method :"badge_#{type}" do |content, classes: ""|
47
47
  badge(content, classes: "#{classes} badge-#{type}")
48
48
  end
49
49
 
50
- define_method :"badge_#{type}_sm" do |content, classes: ''|
50
+ define_method :"badge_#{type}_sm" do |content, classes: ""|
51
51
  badge(content, classes: "#{classes} badge-#{type} badge-sm")
52
52
  end
53
53
 
54
- define_method :"link_button_#{type}" do |name, path, classes: ''|
54
+ define_method :"link_button_#{type}" do |name, path, classes: ""|
55
55
  link_button(name, path, classes: "#{classes} btn-#{type}")
56
56
  end
57
57
 
58
- define_method :"link_button_#{type}_sm" do |name, path, classes: '', title: nil|
58
+ define_method :"link_button_#{type}_sm" do |name, path, classes: "", title: nil|
59
59
  link_button(name, path, classes: "#{classes} btn-#{type} btn-sm", title: title)
60
60
  end
61
61
 
@@ -51,7 +51,7 @@ module Karafka
51
51
  state_ch_in_seconds = state_ch / 1_000.0
52
52
 
53
53
  # If state is active, there is no date of change
54
- if state == 'active'
54
+ if state == "active"
55
55
  %(
56
56
  <span class="badge #{kafka_state_badge(state)}">#{state}</span>
57
57
  )
@@ -59,9 +59,9 @@ module Karafka
59
59
  # Apply limit if specified and partitions exceed it
60
60
  elsif limit && sorted_partitions.size > limit
61
61
  displayed_partitions = sorted_partitions.first(limit)
62
- "#{topic}-[#{displayed_partitions.join(',')}...]"
62
+ "#{topic}-[#{displayed_partitions.join(",")}...]"
63
63
  else
64
- "#{topic}-[#{sorted_partitions.join(',')}]"
64
+ "#{topic}-[#{sorted_partitions.join(",")}]"
65
65
  end
66
66
  end
67
67
  end
@@ -97,9 +97,9 @@ module Karafka
97
97
  elsif sorted_partitions.size > limit
98
98
  displayed = sorted_partitions.first(limit)
99
99
  remaining = sorted_partitions.size - limit
100
- "#{topic}-[#{displayed.join(',')}] (+#{remaining} more)"
100
+ "#{topic}-[#{displayed.join(",")}] (+#{remaining} more)"
101
101
  else
102
- "#{topic}-[#{sorted_partitions.join(',')}]"
102
+ "#{topic}-[#{sorted_partitions.join(",")}]"
103
103
  end
104
104
  end
105
105
 
@@ -24,8 +24,8 @@ module Karafka
24
24
  # @param name [String, Symbol] topic name
25
25
  # @param partition [Integer] partition
26
26
  # @param count [Integer] how many messages we want to get at most
27
- # @param start_offset [Integer, Time] offset from which we should start. If -1 is provided
28
- # (default) we will start from the latest offset. If time is provided, the appropriate
27
+ # @param start_offset [Integer, Time] offset from which we should start. If -1 is
28
+ # provided (default) we will start from the latest offset. If time is provided, the
29
29
  # offset will be resolved. If negative beyond -1 is provided, we move backwards more.
30
30
  # @param settings [Hash] kafka extra settings (optional)
31
31
  #
@@ -17,41 +17,41 @@ module Karafka
17
17
 
18
18
  # @return [Boolean] Should we show pagination at all
19
19
  def paginate?
20
- raise NotImplementedError, 'Implement in a subclass'
20
+ raise NotImplementedError, "Implement in a subclass"
21
21
  end
22
22
 
23
23
  # @return [Boolean] Should first offset link be active. If false, the first offset link
24
24
  # will be disabled
25
25
  def first_offset?
26
- raise NotImplementedError, 'Implement in a subclass'
26
+ raise NotImplementedError, "Implement in a subclass"
27
27
  end
28
28
 
29
29
  # @return [String] first offset url value
30
30
  def first_offset
31
- raise NotImplementedError, 'Implement in a subclass'
31
+ raise NotImplementedError, "Implement in a subclass"
32
32
  end
33
33
 
34
34
  # @return [Boolean] Should previous offset link be active. If false, the previous
35
35
  # offset link will be disabled
36
36
  def previous_offset?
37
- raise NotImplementedError, 'Implement in a subclass'
37
+ raise NotImplementedError, "Implement in a subclass"
38
38
  end
39
39
 
40
40
  # @return [Boolean] Should we show current offset. If false, the current offset link
41
41
  # will not be visible at all. Useful for non-linear pagination.
42
42
  def current_offset?
43
- raise NotImplementedError, 'Implement in a subclass'
43
+ raise NotImplementedError, "Implement in a subclass"
44
44
  end
45
45
 
46
46
  # @return [Boolean] Should we show next offset pagination. If false, next offset link
47
47
  # will be disabled.
48
48
  def next_offset?
49
- raise NotImplementedError, 'Implement in a subclass'
49
+ raise NotImplementedError, "Implement in a subclass"
50
50
  end
51
51
 
52
52
  # @return [String] the url offset key
53
53
  def offset_key
54
- raise NotImplementedError, 'Implement in a subclass'
54
+ raise NotImplementedError, "Implement in a subclass"
55
55
  end
56
56
  end
57
57
  end
@@ -80,12 +80,12 @@ module Karafka
80
80
  def current_label
81
81
  first = @visible_offsets.first
82
82
  last = @visible_offsets.last
83
- [first, last].compact.uniq.join(' - ').to_s
83
+ [first, last].compact.uniq.join(" - ").to_s
84
84
  end
85
85
 
86
86
  # @return [String] for offset based pagination we use the offset param name
87
87
  def offset_key
88
- 'offset'
88
+ "offset"
89
89
  end
90
90
  end
91
91
  end
@@ -60,7 +60,7 @@ module Karafka
60
60
 
61
61
  # @return [String] for page pages pagination, always use page as the url value
62
62
  def offset_key
63
- 'page'
63
+ "page"
64
64
  end
65
65
  end
66
66
  end
@@ -13,9 +13,9 @@ module Karafka
13
13
  class << self
14
14
  # @param array [Array] array we want to paginate
15
15
  # @param current_page [Integer] page we want to be on
16
- # @return [Array<Array, Boolean>] Array with two elements: first is the array with
17
- # data of the given page and second is a boolean flag with info if the elements we got
18
- # are from the last page
16
+ # @return [Array<Array, Boolean>] Array with two elements: first is the array
17
+ # with data of the given page and second is a boolean flag with info if the
18
+ # elements we got are from the last page
19
19
  def call(array, current_page)
20
20
  slices = array.each_slice(per_page).to_a
21
21
  current_data = slices[current_page - 1] || []
@@ -65,7 +65,7 @@ module Karafka
65
65
 
66
66
  # @return [String] params offset key
67
67
  def offset_key
68
- 'offset'
68
+ "offset"
69
69
  end
70
70
  end
71
71
  end
@@ -30,7 +30,7 @@ module Karafka
30
30
  # Normalize the key since we do not operate on capitalized values
31
31
  @field = field.to_s.downcase
32
32
 
33
- @field = '' unless allowed_attributes.include?(@field)
33
+ @field = "" unless allowed_attributes.include?(@field)
34
34
 
35
35
  # Things we have already seen and sorted. Prevents crashing on the circular
36
36
  # dependencies sorting when same resources are present in different parts of the tree
@@ -135,7 +135,7 @@ module Karafka
135
135
 
136
136
  # @return [Boolean] true if we sort in desc, otherwise false
137
137
  def desc?
138
- @order == 'desc'
138
+ @order == "desc"
139
139
  end
140
140
 
141
141
  # Extracts the attribute based on which we should sort (if present)
@@ -42,7 +42,7 @@ module Karafka
42
42
  # Most of the users use one or few error partitions at most, so this is fairly
43
43
  # efficient and not problematic
44
44
  rescue Rdkafka::RdkafkaError => e
45
- e.code == :unknown_partition ? break : raise
45
+ (e.code == :unknown_partition) ? break : raise
46
46
  end
47
47
 
48
48
  estimated += offsets.last - offsets.first
@@ -66,6 +66,7 @@ module Karafka
66
66
  stats[cg_id][:topics][t_name][:partitions][pt_id] = partition
67
67
  stats[cg_id][:topics][t_name][:partitions][pt_id][:process] = process
68
68
  stats[cg_id][:topics][t_name][:partitions][pt_id][:subscription_group_id] = sg_id
69
+ stats[cg_id][:topics][t_name][:partitions][pt_id][:instance_id] = subscription_group.instance_id
69
70
  end
70
71
  end
71
72
 
@@ -21,12 +21,12 @@ module Karafka
21
21
 
22
22
  # @return [Jobs] running jobs
23
23
  def running
24
- select { |job| job.status == 'running' }
24
+ select { |job| job.status == "running" }
25
25
  end
26
26
 
27
27
  # @return [Jobs] pending jobs
28
28
  def pending
29
- select { |job| job.status == 'pending' }
29
+ select { |job| job.status == "pending" }
30
30
  end
31
31
 
32
32
  # Creates a new Jobs object with selected jobs
@@ -39,14 +39,14 @@ module Karafka
39
39
  # requested offset is within the range and if so, it means it has been cleaned or
40
40
  # is a system entry. In such cases we do display user an info message.
41
41
  return nil if watermark_offsets &&
42
- offset >= watermark_offsets.low &&
43
- offset < watermark_offsets.high
42
+ offset >= watermark_offsets.low &&
43
+ offset < watermark_offsets.high
44
44
 
45
45
  # If beyond the watermark offsets, we raise 404 as user should not reach such
46
46
  # non-existent messages as we cannot reason about them
47
47
  raise(
48
48
  ::Karafka::Web::Errors::Ui::NotFoundError,
49
- [topic_id, partition_id, offset].join(', ')
49
+ [topic_id, partition_id, offset].join(", ")
50
50
  )
51
51
  end
52
52
 
@@ -111,7 +111,7 @@ module Karafka
111
111
  # We do not reset the offset here because we are not interested in seeking from
112
112
  # any offset. We are interested in the indication, that there is no offset of a
113
113
  # given value so we can try with a more recent one
114
- 'auto.offset.reset': 'error'
114
+ "auto.offset.reset": "error"
115
115
  )
116
116
 
117
117
  next unless messages
@@ -126,11 +126,11 @@ module Karafka
126
126
  previous_offset
127
127
  end
128
128
 
129
- return [
130
- previous_offset,
131
- fill_compacted(messages, partition_id, context_offset, context_count, high_offset).reverse,
132
- next_offset
133
- ]
129
+ filled = fill_compacted(
130
+ messages, partition_id, context_offset, context_count, high_offset
131
+ )
132
+
133
+ return [previous_offset, filled.reverse, next_offset]
134
134
  end
135
135
 
136
136
  no_data_result