karafka-web 0.10.4 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +70 -176
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +78 -45
  5. data/LICENSE +6 -2
  6. data/Rakefile +4 -0
  7. data/bin/verify_kafka_warnings +35 -0
  8. data/bin/verify_topics_naming +35 -0
  9. data/config/locales/pro_errors.yml +1 -0
  10. data/config/locales/slogans.yml +1 -1
  11. data/docker-compose.yml +1 -1
  12. data/gulpfile.js +0 -2
  13. data/karafka-web.gemspec +2 -7
  14. data/lib/karafka/web/config.rb +80 -9
  15. data/lib/karafka/web/contracts/config.rb +44 -5
  16. data/lib/karafka/web/errors.rb +10 -12
  17. data/lib/karafka/web/management/actions/create_initial_states.rb +6 -6
  18. data/lib/karafka/web/management/actions/create_topics.rb +30 -64
  19. data/lib/karafka/web/management/actions/delete_topics.rb +5 -5
  20. data/lib/karafka/web/management/actions/enable.rb +5 -5
  21. data/lib/karafka/web/pro/commanding/commands/base.rb +37 -13
  22. data/lib/karafka/web/pro/commanding/commands/consumers/quiet.rb +33 -0
  23. data/lib/karafka/web/pro/commanding/commands/consumers/stop.rb +32 -0
  24. data/lib/karafka/web/pro/commanding/commands/consumers/trace.rb +37 -0
  25. data/lib/karafka/web/pro/commanding/commands/partitions/pause.rb +30 -0
  26. data/lib/karafka/web/pro/commanding/commands/partitions/resume.rb +30 -0
  27. data/lib/karafka/web/pro/commanding/commands/partitions/seek.rb +30 -0
  28. data/lib/karafka/web/pro/commanding/config.rb +6 -10
  29. data/lib/karafka/web/pro/commanding/contracts/config.rb +2 -10
  30. data/lib/karafka/web/pro/commanding/dispatcher.rb +45 -24
  31. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/base.rb +67 -0
  32. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/pause.rb +44 -0
  33. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/resume.rb +29 -0
  34. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/seek.rb +86 -0
  35. data/lib/karafka/web/pro/commanding/handlers/partitions/executor.rb +56 -0
  36. data/lib/karafka/web/pro/commanding/handlers/partitions/listener.rb +55 -0
  37. data/lib/karafka/web/pro/commanding/handlers/partitions/tracker.rb +62 -0
  38. data/lib/karafka/web/pro/commanding/listener.rb +4 -12
  39. data/lib/karafka/web/pro/commanding/manager.rb +36 -24
  40. data/lib/karafka/web/pro/commanding/matcher.rb +7 -17
  41. data/lib/karafka/web/pro/commanding/request.rb +39 -0
  42. data/lib/karafka/web/pro/commanding.rb +2 -10
  43. data/lib/karafka/web/pro/loader.rb +13 -10
  44. data/lib/karafka/web/pro/ui/app.rb +31 -390
  45. data/lib/karafka/web/pro/ui/controllers/base_controller.rb +8 -10
  46. data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +2 -10
  47. data/lib/karafka/web/pro/ui/controllers/consumers/base_controller.rb +21 -0
  48. data/lib/karafka/web/pro/ui/controllers/consumers/commanding_controller.rb +148 -0
  49. data/lib/karafka/web/pro/ui/controllers/consumers/commands_controller.rb +96 -0
  50. data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +99 -0
  51. data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +36 -0
  52. data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +57 -0
  53. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/base_controller.rb +86 -0
  54. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/offsets_controller.rb +75 -0
  55. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/pauses_controller.rb +110 -0
  56. data/lib/karafka/web/pro/ui/controllers/dashboard_controller.rb +2 -10
  57. data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +2 -10
  58. data/lib/karafka/web/pro/ui/controllers/errors_controller.rb +11 -15
  59. data/lib/karafka/web/pro/ui/controllers/explorer/base_controller.rb +21 -0
  60. data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +225 -0
  61. data/lib/karafka/web/pro/ui/controllers/explorer/messages_controller.rb +145 -0
  62. data/lib/karafka/web/pro/ui/controllers/explorer/search_controller.rb +68 -0
  63. data/lib/karafka/web/pro/ui/controllers/health_controller.rb +2 -10
  64. data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +2 -10
  65. data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +12 -13
  66. data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +2 -10
  67. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/base_controller.rb +2 -10
  68. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/explorer_controller.rb +8 -16
  69. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb +9 -15
  70. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +2 -10
  71. data/lib/karafka/web/pro/ui/controllers/status_controller.rb +2 -10
  72. data/lib/karafka/web/pro/ui/controllers/support_controller.rb +2 -10
  73. data/lib/karafka/web/pro/ui/controllers/topics/base_controller.rb +21 -0
  74. data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +86 -0
  75. data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +91 -0
  76. data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +55 -0
  77. data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +37 -0
  78. data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +101 -0
  79. data/lib/karafka/web/pro/ui/controllers/ux_controller.rb +2 -10
  80. data/lib/karafka/web/pro/ui/lib/branding/config.rb +2 -10
  81. data/lib/karafka/web/pro/ui/lib/branding/contracts/config.rb +2 -10
  82. data/lib/karafka/web/pro/ui/lib/branding.rb +2 -10
  83. data/lib/karafka/web/pro/ui/lib/features.rb +53 -0
  84. data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +2 -10
  85. data/lib/karafka/web/pro/ui/lib/policies/config.rb +2 -10
  86. data/lib/karafka/web/pro/ui/lib/policies/contracts/config.rb +2 -10
  87. data/lib/karafka/web/pro/ui/lib/policies/messages.rb +2 -10
  88. data/lib/karafka/web/pro/ui/lib/policies/requests.rb +2 -10
  89. data/lib/karafka/web/pro/ui/lib/policies.rb +2 -10
  90. data/lib/karafka/web/pro/ui/lib/safe_runner.rb +5 -0
  91. data/lib/karafka/web/pro/ui/lib/search/config.rb +2 -10
  92. data/lib/karafka/web/pro/ui/lib/search/contracts/config.rb +2 -10
  93. data/lib/karafka/web/pro/ui/lib/search/contracts/form.rb +2 -10
  94. data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +2 -10
  95. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_header_includes.rb +10 -11
  96. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_key_includes.rb +2 -10
  97. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_payload_includes.rb +23 -11
  98. data/lib/karafka/web/pro/ui/lib/search/normalizer.rb +2 -10
  99. data/lib/karafka/web/pro/ui/lib/search/runner.rb +3 -11
  100. data/lib/karafka/web/pro/ui/lib/search.rb +2 -10
  101. data/lib/karafka/web/pro/ui/routes/base.rb +19 -0
  102. data/lib/karafka/web/pro/ui/routes/cluster.rb +37 -0
  103. data/lib/karafka/web/pro/ui/routes/consumers.rb +145 -0
  104. data/lib/karafka/web/pro/ui/routes/dashboard.rb +25 -0
  105. data/lib/karafka/web/pro/ui/routes/dlq.rb +24 -0
  106. data/lib/karafka/web/pro/ui/routes/errors.rb +39 -0
  107. data/lib/karafka/web/pro/ui/routes/explorer.rb +118 -0
  108. data/lib/karafka/web/pro/ui/routes/health.rb +47 -0
  109. data/lib/karafka/web/pro/ui/routes/jobs.rb +33 -0
  110. data/lib/karafka/web/pro/ui/routes/recurring_tasks.rb +59 -0
  111. data/lib/karafka/web/pro/ui/routes/routing.rb +31 -0
  112. data/lib/karafka/web/pro/ui/routes/scheduled_messages.rb +75 -0
  113. data/lib/karafka/web/pro/ui/routes/status.rb +24 -0
  114. data/lib/karafka/web/pro/ui/routes/support.rb +24 -0
  115. data/lib/karafka/web/pro/ui/routes/topics.rb +90 -0
  116. data/lib/karafka/web/pro/ui/routes/ux.rb +24 -0
  117. data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +3 -0
  118. data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +3 -0
  119. data/lib/karafka/web/pro/ui/views/cluster/_config.erb +3 -0
  120. data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +3 -0
  121. data/lib/karafka/web/pro/ui/views/cluster/index.erb +4 -1
  122. data/lib/karafka/web/pro/ui/views/cluster/show.erb +3 -0
  123. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_backtrace.erb +3 -0
  124. data/lib/karafka/web/pro/ui/views/consumers/commands/_breadcrumbs.erb +24 -0
  125. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_command.erb +22 -6
  126. data/lib/karafka/web/pro/ui/views/consumers/commands/_command_details.erb +4 -0
  127. data/lib/karafka/web/pro/ui/views/consumers/commands/_empty.erb +6 -0
  128. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_incompatible_schema.erb +3 -0
  129. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_metadata.erb +4 -1
  130. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_table.erb +5 -2
  131. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/index.erb +7 -4
  132. data/lib/karafka/web/pro/ui/views/consumers/commands/show.erb +32 -0
  133. data/lib/karafka/web/pro/ui/views/consumers/consumers/_breadcrumbs.erb +46 -0
  134. data/lib/karafka/web/pro/ui/views/consumers/{_consumer.erb → consumers/_consumer.erb} +4 -1
  135. data/lib/karafka/web/pro/ui/views/consumers/{_consumer_performance.erb → consumers/_consumer_performance.erb} +4 -1
  136. data/lib/karafka/web/pro/ui/views/consumers/consumers/_tabs.erb +38 -0
  137. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_commands.erb +80 -0
  138. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_consumer_group.erb +11 -0
  139. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_metrics.erb +3 -0
  140. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_no_subscriptions.erb +10 -0
  141. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_partition.erb +16 -0
  142. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition_edit_options.erb +33 -0
  143. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_stopped.erb +3 -0
  144. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_subscription_group.erb +7 -3
  145. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_tabs.erb +7 -4
  146. data/lib/karafka/web/pro/ui/views/consumers/consumers/details.erb +15 -0
  147. data/lib/karafka/web/pro/ui/views/consumers/{index.erb → consumers/index.erb} +6 -3
  148. data/lib/karafka/web/pro/ui/views/consumers/{performance.erb → consumers/performance.erb} +6 -3
  149. data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +24 -0
  150. data/lib/karafka/web/pro/ui/views/consumers/controls/_breadcrumbs.erb +16 -0
  151. data/lib/karafka/web/pro/ui/views/consumers/{_consumer_controls.erb → controls/_controls.erb} +10 -7
  152. data/lib/karafka/web/pro/ui/views/consumers/{controls.erb → controls/index.erb} +8 -5
  153. data/lib/karafka/web/pro/ui/views/consumers/jobs/_breadcrumbs.erb +36 -0
  154. data/lib/karafka/web/pro/ui/views/consumers/{consumer → jobs}/_job.erb +4 -2
  155. data/lib/karafka/web/pro/ui/views/consumers/jobs/_no_jobs.erb +6 -0
  156. data/lib/karafka/web/pro/ui/views/consumers/{pending_jobs.erb → jobs/pending.erb} +7 -8
  157. data/lib/karafka/web/pro/ui/views/consumers/{running_jobs.erb → jobs/running.erb} +7 -8
  158. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_basics.erb +77 -0
  159. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_breadcrumbs.erb +58 -0
  160. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_form.erb +109 -0
  161. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_not_running_error.erb +16 -0
  162. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_running_warning.erb +15 -0
  163. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/edit.erb +16 -0
  164. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_active_not_editable.erb +22 -0
  165. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_adjusting_warning.erb +27 -0
  166. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_breadcrumbs.erb +60 -0
  167. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_edit_form.erb +59 -0
  168. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_lrj_not_manageable.erb +24 -0
  169. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_new_form.erb +78 -0
  170. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_not_running.erb +16 -0
  171. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/edit.erb +24 -0
  172. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/new.erb +20 -0
  173. data/lib/karafka/web/pro/ui/views/dashboard/index.erb +4 -1
  174. data/lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb +3 -0
  175. data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +3 -0
  176. data/lib/karafka/web/pro/ui/views/dlq/_topic.erb +4 -1
  177. data/lib/karafka/web/pro/ui/views/dlq/index.erb +3 -0
  178. data/lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb +4 -6
  179. data/lib/karafka/web/pro/ui/views/errors/_error.erb +9 -1
  180. data/lib/karafka/web/pro/ui/views/errors/_partition_option.erb +3 -0
  181. data/lib/karafka/web/pro/ui/views/errors/_selector.erb +3 -0
  182. data/lib/karafka/web/pro/ui/views/errors/_table.erb +4 -1
  183. data/lib/karafka/web/pro/ui/views/errors/index.erb +6 -3
  184. data/lib/karafka/web/pro/ui/views/errors/partition.erb +5 -2
  185. data/lib/karafka/web/pro/ui/views/errors/show.erb +42 -33
  186. data/lib/karafka/web/pro/ui/views/explorer/{_breadcrumbs.erb → explorer/_breadcrumbs.erb} +7 -4
  187. data/lib/karafka/web/pro/ui/views/explorer/{_failed_deserialization.erb → explorer/_failed_deserialization.erb} +3 -0
  188. data/lib/karafka/web/pro/ui/views/explorer/{_filtered.erb → explorer/_filtered.erb} +3 -0
  189. data/lib/karafka/web/pro/ui/views/explorer/{_message.erb → explorer/_message.erb} +4 -1
  190. data/lib/karafka/web/pro/ui/views/explorer/explorer/_no_topics.erb +4 -0
  191. data/lib/karafka/web/pro/ui/views/explorer/{_partition_option.erb → explorer/_partition_option.erb} +4 -1
  192. data/lib/karafka/web/pro/ui/views/explorer/{_selector.erb → explorer/_selector.erb} +4 -1
  193. data/lib/karafka/web/pro/ui/views/explorer/explorer/_topic.erb +13 -0
  194. data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +17 -0
  195. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_metadata.erb +10 -7
  196. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_payload.erb +6 -3
  197. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_resources_utilization.erb +7 -4
  198. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_too_big_to_be_displayed.erb +3 -0
  199. data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_detail.erb +3 -0
  200. data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_headers.erb +51 -0
  201. data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_key.erb +3 -0
  202. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_cleaned.erb +6 -0
  203. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_empty.erb +6 -0
  204. data/lib/karafka/web/pro/ui/views/explorer/{partition → explorer/partition}/_messages.erb +4 -1
  205. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_time_selector.erb +16 -0
  206. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_timestamp_selector.erb +33 -0
  207. data/lib/karafka/web/pro/ui/views/explorer/{partition.erb → explorer/partition.erb} +24 -17
  208. data/lib/karafka/web/pro/ui/views/explorer/explorer/show.erb +100 -0
  209. data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_actions.erb +5 -2
  210. data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_empty.erb +6 -0
  211. data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_limited.erb +3 -0
  212. data/lib/karafka/web/pro/ui/views/explorer/{topic.erb → explorer/topic.erb} +7 -4
  213. data/lib/karafka/web/pro/ui/views/explorer/messages/_breadcrumbs.erb +32 -0
  214. data/lib/karafka/web/pro/ui/views/explorer/messages/forward.erb +143 -0
  215. data/lib/karafka/web/pro/ui/views/explorer/search/_breadcrumbs.erb +4 -0
  216. data/lib/karafka/web/pro/ui/views/explorer/search/_fix_errors.erb +6 -0
  217. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_metadata.erb +3 -0
  218. data/lib/karafka/web/pro/ui/views/explorer/search/_no_results.erb +6 -0
  219. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_no_search_criteria.erb +3 -0
  220. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_criteria.erb +3 -0
  221. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_modal.erb +5 -2
  222. data/lib/karafka/web/pro/ui/views/explorer/search/_timeout.erb +6 -0
  223. data/lib/karafka/web/pro/ui/views/explorer/search/index.erb +32 -0
  224. data/lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb +3 -0
  225. data/lib/karafka/web/pro/ui/views/health/_no_data.erb +3 -0
  226. data/lib/karafka/web/pro/ui/views/health/_partition.erb +16 -1
  227. data/lib/karafka/web/pro/ui/views/health/_partition_lags.erb +3 -0
  228. data/lib/karafka/web/pro/ui/views/health/_partition_offset.erb +3 -0
  229. data/lib/karafka/web/pro/ui/views/health/_partition_times.erb +3 -0
  230. data/lib/karafka/web/pro/ui/views/health/_table_metadata.erb +4 -1
  231. data/lib/karafka/web/pro/ui/views/health/_tabs.erb +3 -0
  232. data/lib/karafka/web/pro/ui/views/health/changes.erb +4 -1
  233. data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +3 -0
  234. data/lib/karafka/web/pro/ui/views/health/lags.erb +5 -2
  235. data/lib/karafka/web/pro/ui/views/health/offsets.erb +4 -1
  236. data/lib/karafka/web/pro/ui/views/health/overview.erb +8 -3
  237. data/lib/karafka/web/pro/ui/views/jobs/_job.erb +5 -3
  238. data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +3 -0
  239. data/lib/karafka/web/pro/ui/views/jobs/pending.erb +4 -1
  240. data/lib/karafka/web/pro/ui/views/jobs/running.erb +4 -1
  241. data/lib/karafka/web/pro/ui/views/recurring_tasks/_actions.erb +3 -0
  242. data/lib/karafka/web/pro/ui/views/recurring_tasks/_batch_actions.erb +3 -0
  243. data/lib/karafka/web/pro/ui/views/recurring_tasks/_breadcrumbs.erb +3 -0
  244. data/lib/karafka/web/pro/ui/views/recurring_tasks/_log.erb +3 -0
  245. data/lib/karafka/web/pro/ui/views/recurring_tasks/_not_active.erb +3 -0
  246. data/lib/karafka/web/pro/ui/views/recurring_tasks/_tabs.erb +3 -0
  247. data/lib/karafka/web/pro/ui/views/recurring_tasks/_task.erb +3 -0
  248. data/lib/karafka/web/pro/ui/views/recurring_tasks/logs.erb +3 -0
  249. data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +3 -0
  250. data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +3 -0
  251. data/lib/karafka/web/pro/ui/views/routing/_detail.erb +3 -0
  252. data/lib/karafka/web/pro/ui/views/routing/_topic.erb +3 -0
  253. data/lib/karafka/web/pro/ui/views/routing/index.erb +3 -0
  254. data/lib/karafka/web/pro/ui/views/routing/show.erb +3 -0
  255. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_breadcrumbs.erb +6 -3
  256. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_key.erb +3 -0
  257. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_message.erb +28 -115
  258. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_messages.erb +3 -0
  259. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_cancel.erb +49 -0
  260. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_compacted.erb +16 -0
  261. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_schedule.erb +83 -0
  262. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_tombstone.erb +69 -0
  263. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_unknown.erb +26 -0
  264. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/partition.erb +23 -16
  265. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/topic.erb +6 -3
  266. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_breadcrumbs.erb +3 -0
  267. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_no_groups.erb +3 -0
  268. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +4 -1
  269. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/show.erb +17 -1
  270. data/lib/karafka/web/pro/ui/views/shared/_navigation.erb +25 -17
  271. data/lib/karafka/web/pro/ui/views/shared/_rdkafka_form_error_alert_box.erb +16 -0
  272. data/lib/karafka/web/pro/ui/views/shared/branding/_label.erb +3 -0
  273. data/lib/karafka/web/pro/ui/views/shared/branding/_notice.erb +3 -0
  274. data/lib/karafka/web/pro/ui/views/topics/configs/_breadcrumbs.erb +34 -0
  275. data/lib/karafka/web/pro/ui/views/topics/configs/_config.erb +26 -0
  276. data/lib/karafka/web/pro/ui/views/topics/configs/_delete_button.erb +13 -0
  277. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_form.erb +50 -0
  278. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_plan.erb +16 -0
  279. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_warning.erb +12 -0
  280. data/lib/karafka/web/pro/ui/views/topics/configs/edit.erb +16 -0
  281. data/lib/karafka/web/pro/ui/views/topics/{config.erb → configs/index.erb} +9 -3
  282. data/lib/karafka/web/pro/ui/views/topics/distributions/_add_partitions_button.erb +13 -0
  283. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_badges.erb +3 -0
  284. data/lib/karafka/web/pro/ui/views/topics/distributions/_breadcrumbs.erb +28 -0
  285. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_chart.erb +3 -0
  286. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_form.erb +47 -0
  287. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_hints.erb +15 -0
  288. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_warnings.erb +14 -0
  289. data/lib/karafka/web/pro/ui/views/topics/distributions/_empty_partitions.erb +4 -0
  290. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_limited.erb +3 -0
  291. data/lib/karafka/web/pro/ui/views/topics/distributions/_partition.erb +13 -0
  292. data/lib/karafka/web/pro/ui/views/topics/distributions/edit.erb +16 -0
  293. data/lib/karafka/web/pro/ui/views/topics/{distribution.erb → distributions/show.erb} +11 -7
  294. data/lib/karafka/web/pro/ui/views/topics/offsets/_breadcrumbs.erb +20 -0
  295. data/lib/karafka/web/pro/ui/views/topics/offsets/_partition.erb +13 -0
  296. data/lib/karafka/web/pro/ui/views/topics/{offsets.erb → offsets/show.erb} +6 -3
  297. data/lib/karafka/web/pro/ui/views/topics/replications/_breadcrumbs.erb +20 -0
  298. data/lib/karafka/web/pro/ui/views/topics/{_partition.erb → replications/_partition.erb} +4 -1
  299. data/lib/karafka/web/pro/ui/views/topics/{replication.erb → replications/show.erb} +6 -3
  300. data/lib/karafka/web/pro/ui/views/topics/topics/_breadcrumbs.erb +32 -0
  301. data/lib/karafka/web/pro/ui/views/topics/topics/_create_button.erb +13 -0
  302. data/lib/karafka/web/pro/ui/views/topics/topics/_create_hints.erb +15 -0
  303. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_form.erb +36 -0
  304. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_hints.erb +15 -0
  305. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_warning.erb +13 -0
  306. data/lib/karafka/web/pro/ui/views/topics/topics/_new_form.erb +80 -0
  307. data/lib/karafka/web/pro/ui/views/topics/{_tabs.erb → topics/_tabs.erb} +7 -4
  308. data/lib/karafka/web/pro/ui/views/topics/topics/_topic.erb +12 -0
  309. data/lib/karafka/web/pro/ui/views/topics/topics/edit.erb +10 -0
  310. data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +19 -0
  311. data/lib/karafka/web/pro/ui/views/topics/topics/new.erb +12 -0
  312. data/lib/karafka/web/processing/consumer.rb +7 -7
  313. data/lib/karafka/web/processing/consumers/aggregators/state.rb +14 -14
  314. data/lib/karafka/web/processing/consumers/metrics.rb +1 -1
  315. data/lib/karafka/web/processing/consumers/state.rb +1 -1
  316. data/lib/karafka/web/processing/publisher.rb +4 -4
  317. data/lib/karafka/web/tracking/consumers/contracts/partition.rb +1 -0
  318. data/lib/karafka/web/tracking/consumers/listeners/errors.rb +1 -0
  319. data/lib/karafka/web/tracking/consumers/listeners/pausing.rb +2 -2
  320. data/lib/karafka/web/tracking/consumers/listeners/transactions.rb +44 -0
  321. data/lib/karafka/web/tracking/consumers/reporter.rb +8 -4
  322. data/lib/karafka/web/tracking/consumers/sampler.rb +81 -14
  323. data/lib/karafka/web/tracking/helpers/sysconf.rb +33 -0
  324. data/lib/karafka/web/tracking/helpers/ttls/array.rb +11 -0
  325. data/lib/karafka/web/tracking/helpers/ttls/hash.rb +7 -1
  326. data/lib/karafka/web/tracking/producers/reporter.rb +5 -3
  327. data/lib/karafka/web/ui/app.rb +19 -112
  328. data/lib/karafka/web/ui/base.rb +60 -3
  329. data/lib/karafka/web/ui/controllers/base_controller.rb +43 -1
  330. data/lib/karafka/web/ui/controllers/cluster_controller.rb +5 -2
  331. data/lib/karafka/web/ui/controllers/errors_controller.rb +13 -4
  332. data/lib/karafka/web/ui/controllers/requests/execution_wrapper.rb +52 -0
  333. data/lib/karafka/web/ui/controllers/requests/hookable.rb +99 -0
  334. data/lib/karafka/web/ui/controllers/requests/params.rb +39 -1
  335. data/lib/karafka/web/ui/controllers/responses/redirect.rb +0 -5
  336. data/lib/karafka/web/ui/controllers/status_controller.rb +3 -0
  337. data/lib/karafka/web/ui/helpers/application_helper.rb +10 -71
  338. data/lib/karafka/web/ui/helpers/paths_helper.rb +54 -10
  339. data/lib/karafka/web/ui/helpers/time_helper.rb +82 -0
  340. data/lib/karafka/web/ui/helpers/topics_helper.rb +156 -0
  341. data/lib/karafka/web/ui/lib/admin.rb +1 -1
  342. data/lib/karafka/web/ui/lib/cache.rb +135 -0
  343. data/lib/karafka/web/ui/models/broker.rb +1 -2
  344. data/lib/karafka/web/ui/models/cluster_info.rb +15 -21
  345. data/lib/karafka/web/ui/models/consumers_metrics.rb +1 -1
  346. data/lib/karafka/web/ui/models/consumers_state.rb +1 -1
  347. data/lib/karafka/web/ui/models/counters.rb +1 -1
  348. data/lib/karafka/web/ui/models/health.rb +9 -7
  349. data/lib/karafka/web/ui/models/message.rb +20 -2
  350. data/lib/karafka/web/ui/models/process.rb +16 -0
  351. data/lib/karafka/web/ui/models/processes.rb +29 -8
  352. data/lib/karafka/web/ui/models/recurring_tasks/schedule.rb +1 -1
  353. data/lib/karafka/web/ui/models/status.rb +28 -9
  354. data/lib/karafka/web/ui/models/topic.rb +1 -2
  355. data/lib/karafka/web/ui/public/javascripts/application.js +8 -98
  356. data/lib/karafka/web/ui/public/javascripts/application.min.js +12 -4
  357. data/lib/karafka/web/ui/public/javascripts/application.min.js.br +0 -0
  358. data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
  359. data/lib/karafka/web/ui/public/javascripts/components/action_confirmation_manager.js +30 -0
  360. data/lib/karafka/web/ui/public/javascripts/components/alerts.js +39 -0
  361. data/lib/karafka/web/ui/public/javascripts/components/button_lock_manager.js +50 -0
  362. data/lib/karafka/web/ui/public/javascripts/components/live_poll.js +71 -19
  363. data/lib/karafka/web/ui/public/javascripts/components/message_republish_manager.js +50 -0
  364. data/lib/karafka/web/ui/public/javascripts/components/page_title_tracker.js +21 -0
  365. data/lib/karafka/web/ui/public/javascripts/components/partition_redirect_manager.js +21 -0
  366. data/lib/karafka/web/ui/public/javascripts/components/time_ago_manager.js +25 -0
  367. data/lib/karafka/web/ui/public/javascripts/components/timestamp_selector.js +30 -0
  368. data/lib/karafka/web/ui/public/javascripts/libs/datepicker.js +2 -2
  369. data/lib/karafka/web/ui/public/stylesheets/application.css +30 -0
  370. data/lib/karafka/web/ui/public/stylesheets/application.min.css +5120 -13
  371. data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
  372. data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
  373. data/lib/karafka/web/ui/public/stylesheets/libs/highlight_dark.min.css.gz +0 -0
  374. data/lib/karafka/web/ui/public/stylesheets/libs/highlight_light.min.css.gz +0 -0
  375. data/lib/karafka/web/ui/public/stylesheets/libs/tailwind.css +507 -214
  376. data/lib/karafka/web/ui/routes/assets.rb +53 -0
  377. data/lib/karafka/web/ui/routes/base.rb +36 -0
  378. data/lib/karafka/web/ui/routes/cluster.rb +28 -0
  379. data/lib/karafka/web/ui/routes/consumers.rb +35 -0
  380. data/lib/karafka/web/ui/routes/dashboard.rb +20 -0
  381. data/lib/karafka/web/ui/routes/errors.rb +30 -0
  382. data/lib/karafka/web/ui/routes/jobs.rb +28 -0
  383. data/lib/karafka/web/ui/routes/pro_only.rb +27 -0
  384. data/lib/karafka/web/ui/routes/routing.rb +26 -0
  385. data/lib/karafka/web/ui/routes/status.rb +19 -0
  386. data/lib/karafka/web/ui/routes/support.rb +19 -0
  387. data/lib/karafka/web/ui/routes/ux.rb +19 -0
  388. data/lib/karafka/web/ui/views/cluster/_partition.erb +2 -2
  389. data/lib/karafka/web/ui/views/cluster/brokers.erb +1 -1
  390. data/lib/karafka/web/ui/views/consumers/_assignments_badges.erb +2 -7
  391. data/lib/karafka/web/ui/views/consumers/_breadcrumbs.erb +7 -1
  392. data/lib/karafka/web/ui/views/consumers/_consumer.erb +1 -1
  393. data/lib/karafka/web/ui/views/consumers/_no_consumers.erb +2 -2
  394. data/lib/karafka/web/ui/views/consumers/_tabs.erb +4 -4
  395. data/lib/karafka/web/ui/views/consumers/index.erb +1 -1
  396. data/lib/karafka/web/ui/views/dashboard/_feature_pro.erb +1 -1
  397. data/lib/karafka/web/ui/views/dashboard/_not_enough_data.erb +2 -2
  398. data/lib/karafka/web/ui/views/dashboard/_ranges_selector.erb +1 -1
  399. data/lib/karafka/web/ui/views/dashboard/index.erb +6 -49
  400. data/lib/karafka/web/ui/views/errors/_breadcrumbs.erb +3 -8
  401. data/lib/karafka/web/ui/views/errors/_detail.erb +3 -3
  402. data/lib/karafka/web/ui/views/errors/_error.erb +6 -1
  403. data/lib/karafka/web/ui/views/errors/index.erb +1 -1
  404. data/lib/karafka/web/ui/views/errors/show.erb +39 -33
  405. data/lib/karafka/web/ui/views/jobs/_job.erb +2 -3
  406. data/lib/karafka/web/ui/views/jobs/pending.erb +1 -1
  407. data/lib/karafka/web/ui/views/jobs/running.erb +1 -1
  408. data/lib/karafka/web/ui/views/layout.erb +7 -5
  409. data/lib/karafka/web/ui/views/shared/_become_pro.erb +1 -1
  410. data/lib/karafka/web/ui/views/shared/_brand.erb +1 -1
  411. data/lib/karafka/web/ui/views/shared/_breadcrumbs.erb +1 -1
  412. data/lib/karafka/web/ui/views/shared/_compacted_message_info.erb +16 -0
  413. data/lib/karafka/web/ui/views/shared/_content.erb +1 -1
  414. data/lib/karafka/web/ui/views/shared/_controls.erb +10 -3
  415. data/lib/karafka/web/ui/views/shared/_custom_nav.erb +9 -0
  416. data/lib/karafka/web/ui/views/shared/_flashes.erb +3 -5
  417. data/lib/karafka/web/ui/views/shared/_header.erb +25 -2
  418. data/lib/karafka/web/ui/views/shared/_navigation.erb +17 -15
  419. data/lib/karafka/web/ui/views/shared/alerts/_error.erb +8 -0
  420. data/lib/karafka/web/ui/views/shared/alerts/_info.erb +8 -0
  421. data/lib/karafka/web/ui/views/shared/alerts/_primary.erb +8 -0
  422. data/lib/karafka/web/ui/views/shared/alerts/_secondary.erb +8 -0
  423. data/lib/karafka/web/ui/views/shared/alerts/_success.erb +8 -0
  424. data/lib/karafka/web/ui/views/shared/alerts/_warning.erb +8 -0
  425. data/lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb +4 -0
  426. data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +5 -1
  427. data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +4 -0
  428. data/lib/karafka/web/ui/views/shared/icons/_arrow_left.erb +3 -0
  429. data/lib/karafka/web/ui/views/shared/icons/_arrow_up_tray.erb +3 -0
  430. data/lib/karafka/web/ui/views/shared/icons/_clock.erb +3 -0
  431. data/lib/karafka/web/ui/views/shared/icons/_pencil.erb +3 -0
  432. data/lib/karafka/web/ui/views/shared/icons/_pencil_square.erb +3 -0
  433. data/lib/karafka/web/ui/views/shared/icons/_play_pause.erb +3 -0
  434. data/lib/karafka/web/ui/views/shared/icons/_plus.erb +3 -0
  435. data/lib/karafka/web/ui/views/shared/icons/_trash.erb +3 -0
  436. data/lib/karafka/web/ui/views/status/failures/_live_reporting.erb +1 -1
  437. data/lib/karafka/web/ui/views/status/failures/_partitions.erb +3 -3
  438. data/lib/karafka/web/ui/views/status/failures/_state_calculation.erb +2 -2
  439. data/lib/karafka/web/ui/views/status/info/_components.erb +6 -6
  440. data/lib/karafka/web/ui/views/status/show.erb +15 -0
  441. data/lib/karafka/web/ui/views/status/warnings/_consumers_schemas.erb +31 -0
  442. data/lib/karafka/web/ui/views/ux/_icons.erb +1 -1
  443. data/lib/karafka/web/version.rb +1 -1
  444. data/lib/karafka/web.rb +3 -0
  445. data/package-lock.json +867 -1282
  446. data/package.json +6 -7
  447. data/postcss.config.js +1 -2
  448. data/renovate.json +20 -1
  449. data/tailwind.config.js +0 -4
  450. metadata +235 -135
  451. checksums.yaml.gz.sig +0 -0
  452. data/certs/cert.pem +0 -26
  453. data/lib/karafka/web/pro/commanding/commands/quiet.rb +0 -34
  454. data/lib/karafka/web/pro/commanding/commands/stop.rb +0 -34
  455. data/lib/karafka/web/pro/commanding/commands/trace.rb +0 -41
  456. data/lib/karafka/web/pro/ui/controllers/commanding_controller.rb +0 -118
  457. data/lib/karafka/web/pro/ui/controllers/commands_controller.rb +0 -96
  458. data/lib/karafka/web/pro/ui/controllers/consumers_controller.rb +0 -138
  459. data/lib/karafka/web/pro/ui/controllers/explorer_controller.rb +0 -220
  460. data/lib/karafka/web/pro/ui/controllers/messages_controller.rb +0 -107
  461. data/lib/karafka/web/pro/ui/controllers/search_controller.rb +0 -73
  462. data/lib/karafka/web/pro/ui/controllers/topics_controller.rb +0 -130
  463. data/lib/karafka/web/pro/ui/views/commands/_breadcrumbs.erb +0 -21
  464. data/lib/karafka/web/pro/ui/views/commands/_command_details.erb +0 -1
  465. data/lib/karafka/web/pro/ui/views/commands/_empty.erb +0 -3
  466. data/lib/karafka/web/pro/ui/views/commands/show.erb +0 -33
  467. data/lib/karafka/web/pro/ui/views/consumers/_breadcrumbs.erb +0 -55
  468. data/lib/karafka/web/pro/ui/views/consumers/_tabs.erb +0 -33
  469. data/lib/karafka/web/pro/ui/views/consumers/consumer/_commands.erb +0 -72
  470. data/lib/karafka/web/pro/ui/views/consumers/consumer/_consumer_group.erb +0 -8
  471. data/lib/karafka/web/pro/ui/views/consumers/consumer/_no_jobs.erb +0 -7
  472. data/lib/karafka/web/pro/ui/views/consumers/consumer/_no_subscriptions.erb +0 -7
  473. data/lib/karafka/web/pro/ui/views/consumers/details.erb +0 -13
  474. data/lib/karafka/web/pro/ui/views/consumers/subscriptions.erb +0 -25
  475. data/lib/karafka/web/pro/ui/views/explorer/_no_topics.erb +0 -1
  476. data/lib/karafka/web/pro/ui/views/explorer/_topic.erb +0 -10
  477. data/lib/karafka/web/pro/ui/views/explorer/index.erb +0 -14
  478. data/lib/karafka/web/pro/ui/views/explorer/messages/_headers.erb +0 -33
  479. data/lib/karafka/web/pro/ui/views/explorer/partition/_cleaned.erb +0 -3
  480. data/lib/karafka/web/pro/ui/views/explorer/partition/_empty.erb +0 -3
  481. data/lib/karafka/web/pro/ui/views/explorer/show.erb +0 -97
  482. data/lib/karafka/web/pro/ui/views/explorer/topic/_empty.erb +0 -3
  483. data/lib/karafka/web/pro/ui/views/search/_breadcrumbs.erb +0 -1
  484. data/lib/karafka/web/pro/ui/views/search/_fix_errors.erb +0 -3
  485. data/lib/karafka/web/pro/ui/views/search/_no_results.erb +0 -3
  486. data/lib/karafka/web/pro/ui/views/search/_timeout.erb +0 -3
  487. data/lib/karafka/web/pro/ui/views/search/index.erb +0 -29
  488. data/lib/karafka/web/pro/ui/views/topics/_breadcrumbs.erb +0 -45
  489. data/lib/karafka/web/pro/ui/views/topics/_partition_offsets.erb +0 -10
  490. data/lib/karafka/web/pro/ui/views/topics/_topic.erb +0 -9
  491. data/lib/karafka/web/pro/ui/views/topics/distribution/_empty_partitions.erb +0 -1
  492. data/lib/karafka/web/pro/ui/views/topics/distribution/_partition.erb +0 -10
  493. data/lib/karafka/web/pro/ui/views/topics/index.erb +0 -14
  494. data/lib/karafka/web/ui/lib/ttl_cache.rb +0 -82
  495. data.tar.gz.sig +0 -0
  496. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13c431e0fa6d1b8927bd419298bc0ea522f0e823f91197fe989f72a9a08479ad
4
- data.tar.gz: 6424f804a013bc34d1393fa79962cfacab6e6d5028726b7e90e93ada457b7a48
3
+ metadata.gz: 4320bd74426900e3a77f1748242c757cb44a1b0b578300a413d5a1cb706ec3de
4
+ data.tar.gz: 75be8a6b974829adde0b266cb2df6e1f62752a35dc271110a04a00eef93865df
5
5
  SHA512:
6
- metadata.gz: e3ccb77dcf9624e1ca23473a963ea59cd8efc227feae098c7a80898b45c573eb70b564fd963abc6d3b0dd01a4b9e0577c1708bc2904afa6c5523360fc3880362
7
- data.tar.gz: 60f20e2ed98fb8818164157e91ce117c5fb2d6b60f5c1371abef787f0f637269f27ed378a0ca8ffe7e95c43defddfc4749cfe1c06cbf905c8e591f8b171c2c36
6
+ metadata.gz: 58a4c8ed2d9d400070aa4d43bb29a73006c435c00fd4d9143dd520db01368b5984729bd947bd88a8f2c1865fff25935449150b329f9396405ec53ce82c850299
7
+ data.tar.gz: d1c96b677662d862d9d05a70945f3ca7fbc55359033fb7f3350600eb4e0388673bc8482f1f165f0775b5d02bf8075801e1450286b59a0fdc4bd2b2d9e5405ef7
data/CHANGELOG.md CHANGED
@@ -1,5 +1,75 @@
1
1
  # Karafka Web Changelog
2
2
 
3
+ ## 0.11.2 (2025-08-18)
4
+ - [Enhancement] Make sure that TTL counters related `#inspect` are thread-safe.
5
+ - [Change] Add new CI action to trigger auto-doc refresh.
6
+ - [Change] Update daisyUI to `5.0.50`
7
+
8
+ ## 0.11.1 (2025-06-23)
9
+ - [Fix] Extremely high error turnover from hundreds of partitions can cause a deadlock in the reporter for transactional Web producer.
10
+
11
+ ## 0.11.0 (2025-06-15)
12
+ - **[Feature]** Provide ability to pause/resume partitions on running consumers via the UI (Pro).
13
+ - **[Feature]** Provide ability to edit offsets of running consumers (Pro).
14
+ - **[Feature]** Support consumers that have mismatching schema in the Status page.
15
+ - **[Feature]** Provide ability to navigate to a timestamp in the Explorer (Pro).
16
+ - **[Feature]** Provide ability to create and delete topics from the Web UI (Pro).
17
+ - **[Feature]** Provide ability to manage topics configuration from the Web UI (Pro).
18
+ - **[Feature]** Provide ability to manage topics partitioning from the Web UI (Pro).
19
+ - **[Feature]** Provide ability to inject custom CSS and JS to adjust the Web UI.
20
+ - [Enhancement] Support KIP-82 (header values of arrays).
21
+ - [Enhancement] Include crawl-based link validator to the CI to ensure no dead links are generated.
22
+ - [Enhancement] Allow for custom links in the navigation (Pro).
23
+ - [Enhancement] Optimize topic specific lookups (Pro).
24
+ - [Enhancement] Replace simple in-process metadata cache with user tracking version for multi-process deployments improvements.
25
+ - [Enhancement] Move web ui topics configuration into config.
26
+ - [Enhancement] Upgrade DaisyUI to 5.0 and Tailwind to 4.0.
27
+ - [Enhancement] Make consumer sampler/stats gathering compatible across debian/alpine/wolfi OSes (chen-anders)
28
+ - [Enhancement] Promote consumers lags statistics chart to OSS.
29
+ - [Enhancement] Promote consumers RSS statistics chart to OSS.
30
+ - [Enhancement] Remove state cache usage that complicated ability to manage topics.
31
+ - [Enhancement] Improve flash messages.
32
+ - [Enhancement] Improve handling of post-submit redirects.
33
+ - [Enhancement] Provide better support for fully transactional consumers.
34
+ - [Enhancement] Error out when `#setup` is called after `#enable!`.
35
+ - [Enhancement] Use more performant Kafka API calls to describe topics.
36
+ - [Enhancement] Inject `.action-NAME` and `.controller-NAME` body classes for usage with custom CSS and JS.
37
+ - [Enhancement] Improve error handling in the commanding iterator listener (Pro).
38
+ - [Enhancement] Introduce `trace_id` to the errors tracked for DLQ correlation (if in use) (Pro).
39
+ - [Enhancement] Normalize how topics with partitions data is being displayed (`topic-[0,1,2]` etc).
40
+ - [Change] Do not fully hide config-disabled features but make them disabled.
41
+ - [Change] Remove per-consumer process duplicated details from Subscriptions and Jobs tabs.
42
+ - [Change] Move to trusted-publishers and remove signing since no longer needed.
43
+ - [Refactor] Make sure all temporary topics have a `it-` prefix in their name.
44
+ - [Refactor] Introduce a `bin/verify_topics_naming` script to ensure proper test topics naming convention.
45
+ - [Fix] Closest time based lookup redirect fails.
46
+ - [Fix] Fi incorrect error type in commanding listener from `web.controlling.controller.error` to `web.commanding.listener.error` (Pro).
47
+ - [Fix] Topic named messages collides with the explorer routes.
48
+ - [Fix] Fix a case where live poll button enabling would not immediately start refreshes.
49
+ - [Fix] Fix negative message deserialization allocation stats.
50
+ - [Fix] Fix incorrect background color in some of the alert notices.
51
+ - [Fix] Support dark mode in error pages.
52
+ - [Fix] Fix incorrect names in some of the tables headers.
53
+ - [Fix] Normalize position of commanding buttons in regards to other UI elements.
54
+ - [Fix] Fix incorrect indentation of some of the info messages.
55
+ - [Fix] Fix tables headers inconsistent alignments.
56
+ - [Fix] Fix incorrect warning box header color in the dark mode.
57
+ - [Fix] Fix missing breadcrumbs on the consumers overview page.
58
+ - [Fix] Fix a case where disabled buttons would be enabled back too early.
59
+ - [Fix] The recent page breadcrumbs and offset id are not refreshed on change.
60
+ - [Fix] Direct URL access with too big partition causes librdkafka crash.
61
+ - [Fix] Fix incorrect breadcrumbs for pending consumer jobs.
62
+ - [Fix] Allow for using default search matchers in Karafka Web UI topics including Errors.
63
+ - [Fix] Ensure that when flashes or alerts are visible, pages are not auto-refreshed (would cause them to dissapear).
64
+ - [Fix] Time selector in the explorer does not disappear after clicking out.
65
+ - [Fix] Tombstone message presentation epoch doesn't make sense.
66
+ - [Fix] Fix incorrectly displayed "No jobs" alert info.
67
+ - [Fix] Previous / next navigation in the explorer does not work when moving to transactional checkpoints.
68
+ - [Fix] Errors explorer does not work with transactional produced data.
69
+ - [Fix] Errors explorer in OSS does not have pagination.
70
+ - [Maintenance] Require `karafka-core` `>= 2.4.8` and `karafka` `>= 2.4.16`.
71
+ - [Maintenance] Update `AirDatepicker` to `3.6.0`.
72
+
3
73
  ## 0.10.4 (2024-11-26)
4
74
  - **[Breaking]** Drop Ruby `3.0` support according to the EOL schedule.
5
75
  - [Enhancement] Extract producers tracking `sync_threshold` into an internal config.
@@ -88,39 +158,6 @@
88
158
  - [Fix] License identifier `LGPL-3.0` is deprecated for SPDX (#2177).
89
159
  - [Fix] Do not include prettifying the payload for visibility in the resource computation cost.
90
160
 
91
- ### Upgrade Notes
92
-
93
- This is a **major** release that brings many things to the table.
94
-
95
- This version of the Karafka Web UI requires Karafka `>= 2.4.7`. You can either upgrade both or upgrade Karafka first and then the Web UI. Karafka `2.4.7` is also compatible with Web UI `0.9.1`; thus, you can upgrade one at a time.
96
-
97
- #### Configuration
98
-
99
- Visibility Filters have been reorganized into messages policies.
100
-
101
- Please read the [Policies API](https://karafka.io/docs/Pro-Web-UI-Policies/) documentation and convert your visibility filters to policies.
102
-
103
- Your existing message-related visibility filter policies should now be assigned to a new configuration:
104
-
105
- ```ruby
106
- Karafka::Web.setup do |config|
107
- config.ui.policies.messages = MyCustomRequestsPolicy.new
108
- end
109
- ```
110
-
111
- #### Deployment
112
-
113
- Because of the reporting schema update, it is recommended to:
114
-
115
- 0. Make sure you have upgraded to `0.9.1` before and that it was fully deployed.
116
- 1. Test the upgrade on a staging or dev environment.
117
- 3. The Web UI interface may throw 500 errors during the upgrade because of schema incompatibility (until Puma is deployed and all consumers redeployed). This will have no long-term effects and can be ignored.
118
- 4. `Karafka::Web::Errors::Processing::IncompatibleSchemaError` **is expected**. It is part of the Karafka Web UI zero-downtime deployment strategy. This error allows the Web UI materialization consumer to back off and wait for it to be replaced with a new one.
119
- 5. Perform a rolling deployment (or a regular one) and replace all consumer processes.
120
- 6. Update the Web UI Puma.
121
- 7. **No** CLI command execution is required.
122
- 8. Enjoy.
123
-
124
161
  ## 0.9.1 (2024-05-03)
125
162
  - [Fix] OSS `lag_stored` for not-subscribed consumers causes Web UI to crash.
126
163
 
@@ -158,12 +195,6 @@ Because of the reporting schema update, it is recommended to:
158
195
  - [Fix] Fix dangling `console.log`.
159
196
  - [Fix] Fix a case where consumer assignments would not be truncated on the consumers view.
160
197
 
161
- ### Upgrade Notes
162
-
163
- This is a **major** release that brings many things to the table.
164
-
165
- This version of the Karafka Web UI should be upgraded together with Karafka. All upgrade documentation for Karafka and Web UI `0.9` can be found [here](https://karafka.io/docs/Upgrades-2.4/).
166
-
167
198
  ## 0.8.2 (2024-02-16)
168
199
  - [Enhancement] Defer scheduler background thread creation until needed allowing for forks.
169
200
  - [Enhancement] Tag forks with fork indication + ppid reference when operating in swarm.
@@ -212,28 +243,6 @@ This version of the Karafka Web UI should be upgraded together with Karafka. All
212
243
  - [Change] Rename "Active subscriptions" to "Subscriptions" as process subscriptions are always active.
213
244
  - [Maintenance] Introduce granular subscription group contracts.
214
245
 
215
- ### Upgrade Notes
216
-
217
- This is a **major** release that brings many things to the table.
218
-
219
- #### Configuration
220
-
221
- **No** configuration changes are needed.
222
-
223
- #### Deployment
224
-
225
- Because of the reporting schema update, it is recommended to:
226
-
227
- 0. Make sure you have upgraded to `0.7.10` before and that it was fully deployed.
228
- 1. Test the upgrade on a staging or dev environment.
229
- 2. Starting from `0.7.0` Karafka Web UI supports rolling deploys, so there is no need to "stop the world".
230
- 3. The Web UI interface may throw 500 errors during the upgrade because of schema incompatibility (until Puma is deployed). This will have no long-term effects and can be ignored.
231
- 4. `Karafka::Web::Errors::Processing::IncompatibleSchemaError` **is expected**. It is part of the Karafka Web UI zero-downtime deployment strategy. This error allows the Web UI materialization consumer to back off and wait for it to be replaced with a new one.
232
- 5. Perform a rolling deployment (or a regular one) and replace all consumer processes.
233
- 6. Update the Web UI Puma.
234
- 7. **No** CLI command execution is required. Starting from this release (`0.8.0`), the Karafka Web UI contains an automatic schema migrator that allows it to automatically adjust internal topic data formats.
235
- 8. Enjoy.
236
-
237
246
  ## 0.7.10 (2023-10-31)
238
247
  - [Fix] Max LSO chart does not work as expected (#201)
239
248
 
@@ -265,14 +274,6 @@ Because of the reporting schema update, it is recommended to:
265
274
  - [Maintenance] Include license and copyrights notice for `timeago.js` that was missing in the JS min file.
266
275
  - [Refactor] Rename `ui.show_internal_topics` to `ui.visibility.internal_topics_display`
267
276
 
268
- ### Upgrade Notes
269
-
270
- **NO** rolling upgrade needed. Just configuration update.
271
-
272
- 1. If you are using `ui.visibility_filter` this option is now `ui.visibility.filter` (yes, only `.` difference).
273
- 2. If you are using a custom visibility filter, it requires now two extra methods: `#download?` and `#export?`. The default visibility filter allows both actions unless message is encrypted.
274
- 3. `ui.show_internal_topics` config option has been moved and renamed to `ui.visibility.internal_topics`.
275
-
276
277
  ## 0.7.4 (2023-09-19)
277
278
  - [Improvement] Skip aggregations on older schemas during upgrades. This only skips process-reports (that are going to be rolled) on the 5s window in case of an upgrade that should not be a rolling one anyhow. This simplifies the operations and minimizes the risk on breaking upgrades.
278
279
  - [Fix] Fix not working `ps` for macOS.
@@ -367,48 +368,6 @@ Because of the reporting schema update, it is recommended to:
367
368
  - [Refactor] Use Roda `custom_block_results` plugin for controllers results handling.
368
369
  - [Maintenance] Require `karafka` `2.2.0` due to fixes in the Iterator API and routing API extensions.
369
370
 
370
- ### Upgrade Notes
371
-
372
- This is a **major** release that brings many things to the table.
373
-
374
- #### Configuration
375
-
376
- Karafka Web UI now relies on Roda session management. Please configure the `ui.sessions.secret` key with a secret value string of at least 64 characters:
377
-
378
- ```ruby
379
- # Configure it BEFORE enabling
380
- Karafka::Web.setup do |config|
381
- # REPLACE THIS with your own value. You can use `SecureRandom.hex(64)` to generate it
382
- # You may want to set it per ENV
383
- config.ui.sessions.secret = 'REPLACE ME! b94b2215cc66371f2c34b7d0c0df1a010f83ca45 REPLACE ME!'
384
- end
385
-
386
- Karafka::Web.enable!
387
- ```
388
-
389
- #### Deployment
390
-
391
- Because of the reporting schema update and new web-ui topics introduction, it is recommended to:
392
-
393
- 0. Make sure you have upgraded to `0.6.3` before and that it was deployed. To all the environments you want to migrate to `0.7.0`.
394
- 1. Upgrade the codebase based on the below details.
395
- 2. **Stop** the consumer materializing Web-UI. Unless you are running a Web-UI dedicated consumer as recommended [here](https://karafka.io/docs/Web-UI-Development-vs-Production/), you will have to stop all the consumers. This is **crucial** because of schema changes. `karafka-web` `0.7.0` introduces the detection of schema changes, so this step should not be needed in the future.
396
- 3. Run a migration command: `bundle exec karafka-web migrate` that will create missing states and missing topics. You **need** to run it for each of the environments where you use Karafka Web UI.
397
- 4. Deploy **all** the Karafka consumer processes (`karafka server`).
398
- 5. Deploy the Web update to your web server and check that everything is OK by visiting the status page.
399
-
400
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error, or offset-related data may not be displayed correctly.
401
-
402
- #### Code and API changes
403
-
404
- 1. `bundle exec karafka-web install` is now a single-purpose command that should run **only** when installing the Web-UI for the first time.
405
- 2. For creating needed topics and states per environment and during upgrades, please use the newly introduced non-destructive `bundle exec karafka-web migrate`. It will assess changes required and will apply only those.
406
- 3. Is no longer`ui.decrypt` has been replaced with `ui.visibility_filter` API. This API by default also does not decrypt data. To change this behavior, please implement your visibility filter as presented in our documentation.
407
- 4. Karafka Web UI `0.7.0` introduces an in-memory topics cache for some views. This means that rapid topics changes (repartitions/new topics) may be visible up to 5 minutes after those changes.
408
- 3. `ui.decrypt` setting has been replaced with `ui.visibility_filter` API. This API by default also does not decrypt data. To change this behavior, please implement your visibility filter as presented in our documentation.
409
- 4. Karafka Web-UI `0.7.0` introduces an in-memory topics cache for some views. This means that rapid topics changes (repartitions/new topics) may be visible up to 5 minutes after those changes.
410
- 5. Karafka Web UI requires now a new topic called `karafka_consumers_metrics`. If you use strict topic creation and ACL policies, please make sure it exists and that Karafka can both read and write to it.
411
-
412
371
  ## 0.6.3 (2023-07-22)
413
372
  - [Fix] Remove files from 0.7.0 accidentally added to the release.
414
373
 
@@ -446,38 +405,6 @@ Please note that if you decide to use the updated Web UI with not updated consum
446
405
  - [Refactor] Remove not used and redundant partials.
447
406
  - [Maintenance] Require `karafka` `2.1.4` due to fixes in metrics usage for workless flows.
448
407
 
449
- ### Upgrade Notes
450
-
451
- Because of the reporting schema update, it is recommended to:
452
-
453
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
454
- - Deploy the Web update to your web server.
455
-
456
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error or offset related data may not be displayed correctly.
457
-
458
- #### Disabling producers instrumentation
459
-
460
- Producers error tracking **is** enabled by default. If you want to opt out of it, you need to disable the producers' instrumentation by clearing the producers' listeners:
461
-
462
- ```ruby
463
- Karafka::Web.setup do |config|
464
- # Do not instrument producers with web-ui listeners
465
- config.tracking.producers.listeners = []
466
- end
467
- ```
468
-
469
- #### Custom producers instrumentation
470
-
471
- By default, Karafka Web-UI instruments only `Karafka.producer`. If you use producers initialized by yourself, you need to connect the listeners to them manually. To do so, run the following code:
472
-
473
- ```ruby
474
- ::Karafka::Web.config.tracking.producers.listeners.each do |listener|
475
- MY_CUSTOM_PRODUCER.monitor.subscribe(listener)
476
- end
477
- ```
478
-
479
- Please make sure **not** to do it for the default `Karafka.producer` because it is instrumented out of the box.
480
-
481
408
  ## 0.5.2 (2023-05-22)
482
409
  - [Improvement] Label ActiveJob consumers jobs with `active_job` tag.
483
410
  - [Improvement] Label Virtual Partitions consumers with `virtual` tag.
@@ -494,15 +421,6 @@ Please make sure **not** to do it for the default `Karafka.producer` because it
494
421
  - [Fix] Fix misspelling of word `committed`.
495
422
  - [Fix] Shutdown and revocation jobs statistics extraction crashes when idle initialized without messages (#53)
496
423
 
497
- ### Upgrade Notes
498
-
499
- Because of the reporting schema change, it is recommended to:
500
-
501
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
502
- - Deploy the Web update to your web server.
503
-
504
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error or offset related data may not be displayed correctly.
505
-
506
424
  ## 0.4.1 (2023-04-12)
507
425
  - [Improvement] Replace the "x time ago" in the code explorer with an exact date (`2023-04-12 10:16:48.596 +0200 `).
508
426
  - [Improvement] When hovering over a message timestamp, a label with raw numeric timestamp will be presented.
@@ -515,26 +433,11 @@ Please note that if you decide to use the updated Web UI with not updated consum
515
433
  - [Fix] Add missing support for using multiple subscription groups within a single consumer group.
516
434
  - [Fix] Mask SASL credentials in topic routing view (#46)
517
435
 
518
- ### Upgrade Notes
519
-
520
- Because of the reporting schema change, it is recommended to:
521
-
522
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
523
- - Deploy the Web update to your web server.
524
-
525
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error.
526
-
527
436
  ## 0.3.1 (2023-03-27)
528
437
  - [Fix] Add missing retention policy for states topic.
529
438
  - [Fix] Fix display of compacted messages placeholders for offsets lower than low watermark.
530
439
  - [Fix] Fix invalid pagination per page count.
531
440
 
532
- ### Upgrade Notes
533
-
534
- If upgrading from `0.3.0`, nothing.
535
-
536
- If upgrading from lower, please follow `0.3.0` upgrade procedure.
537
-
538
441
  ## 0.3.0 (2023-03-27)
539
442
  - **[Feature]** Support paginating over compacted topics partitions.
540
443
  - [Improvement] Display watermark offsets in the errors view.
@@ -554,15 +457,6 @@ If upgrading from lower, please follow `0.3.0` upgrade procedure.
554
457
  - [Maintenance] Remove compatibility fallbacks for job and process tags (#1342)
555
458
  - [Maintenance] Extract base sampler for tracking and web.
556
459
 
557
- ### Upgrade Notes
558
-
559
- Because of the removal of compatibility fallbacks for some metrics fetches, it is recommended to:
560
-
561
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
562
- - Deploy the Web update to your web server.
563
-
564
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error.
565
-
566
460
  ## 0.2.5 (2023-03-17)
567
461
  - [Fix] Critical instrumentation async errors intercepted by Web don't have JID for job removal (#1366)
568
462
 
data/Gemfile CHANGED
@@ -10,6 +10,8 @@ group :test do
10
10
  gem 'byebug'
11
11
  gem 'factory_bot'
12
12
  gem 'fugit'
13
+ # Needed for links extraction for visits verification
14
+ gem 'nokogiri'
13
15
  gem 'ostruct'
14
16
  gem 'rack-test'
15
17
  gem 'rspec'
data/Gemfile.lock CHANGED
@@ -1,18 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka-web (0.10.4)
4
+ karafka-web (0.11.2)
5
5
  erubi (~> 1.4)
6
- karafka (>= 2.4.10, < 2.5.0)
7
- karafka-core (>= 2.4.0, < 2.5.0)
6
+ karafka (>= 2.5.0.rc2, < 2.6.0)
7
+ karafka-core (>= 2.5.0, < 2.6.0)
8
8
  roda (~> 3.68, >= 3.69)
9
9
  tilt (~> 2.0)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (7.2.1)
14
+ activesupport (7.2.2.2)
15
15
  base64
16
+ benchmark (>= 0.3)
16
17
  bigdecimal
17
18
  concurrent-ruby (~> 1.0, >= 1.3.1)
18
19
  connection_pool (>= 2.2.5)
@@ -23,89 +24,121 @@ GEM
23
24
  securerandom (>= 0.3)
24
25
  tzinfo (~> 2.0, >= 2.0.5)
25
26
  base64 (0.2.0)
26
- bigdecimal (3.1.8)
27
- byebug (11.1.3)
28
- concurrent-ruby (1.3.4)
29
- connection_pool (2.4.1)
30
- diff-lcs (1.5.1)
31
- docile (1.4.0)
32
- drb (2.2.1)
33
- erubi (1.13.0)
27
+ benchmark (0.4.1)
28
+ bigdecimal (3.1.9)
29
+ byebug (12.0.0)
30
+ concurrent-ruby (1.3.5)
31
+ connection_pool (2.5.3)
32
+ diff-lcs (1.6.2)
33
+ docile (1.4.1)
34
+ drb (2.2.3)
35
+ erubi (1.13.1)
34
36
  et-orbi (1.2.11)
35
37
  tzinfo
36
- factory_bot (6.5.0)
37
- activesupport (>= 5.0.0)
38
- ffi (1.17.0)
38
+ factory_bot (6.5.5)
39
+ activesupport (>= 6.1.0)
40
+ ffi (1.17.2)
39
41
  fugit (1.11.1)
40
42
  et-orbi (~> 1, >= 1.2.11)
41
43
  raabro (~> 1.4)
42
- i18n (1.14.5)
44
+ i18n (1.14.7)
43
45
  concurrent-ruby (~> 1.0)
44
- karafka (2.4.10)
46
+ karafka (2.5.0)
45
47
  base64 (~> 0.2)
46
- karafka-core (>= 2.4.3, < 2.5.0)
47
- karafka-rdkafka (>= 0.17.2)
48
- waterdrop (>= 2.7.3, < 3.0.0)
48
+ karafka-core (>= 2.5.2, < 2.6.0)
49
+ karafka-rdkafka (>= 0.19.5)
50
+ waterdrop (>= 2.8.3, < 3.0.0)
49
51
  zeitwerk (~> 2.3)
50
- karafka-core (2.4.4)
51
- karafka-rdkafka (>= 0.15.0, < 0.18.0)
52
- karafka-rdkafka (0.17.3)
52
+ karafka-core (2.5.2)
53
+ karafka-rdkafka (>= 0.19.2, < 0.21.0)
54
+ logger (>= 1.6.0)
55
+ karafka-rdkafka (0.19.5)
53
56
  ffi (~> 1.15)
54
57
  mini_portile2 (~> 2.6)
55
58
  rake (> 12)
56
- logger (1.6.1)
57
- mini_portile2 (2.8.7)
58
- minitest (5.25.1)
59
- ostruct (0.6.1)
59
+ logger (1.7.0)
60
+ mini_portile2 (2.8.9)
61
+ minitest (5.25.5)
62
+ nokogiri (1.18.9)
63
+ mini_portile2 (~> 2.8.2)
64
+ racc (~> 1.4)
65
+ nokogiri (1.18.9-aarch64-linux-gnu)
66
+ racc (~> 1.4)
67
+ nokogiri (1.18.9-aarch64-linux-musl)
68
+ racc (~> 1.4)
69
+ nokogiri (1.18.9-arm-linux-gnu)
70
+ racc (~> 1.4)
71
+ nokogiri (1.18.9-arm-linux-musl)
72
+ racc (~> 1.4)
73
+ nokogiri (1.18.9-arm64-darwin)
74
+ racc (~> 1.4)
75
+ nokogiri (1.18.9-x86_64-darwin)
76
+ racc (~> 1.4)
77
+ nokogiri (1.18.9-x86_64-linux-gnu)
78
+ racc (~> 1.4)
79
+ nokogiri (1.18.9-x86_64-linux-musl)
80
+ racc (~> 1.4)
81
+ ostruct (0.6.3)
60
82
  raabro (1.4.0)
61
- rack (3.1.4)
62
- rack-test (2.1.0)
83
+ racc (1.8.1)
84
+ rack (3.1.16)
85
+ rack-test (2.2.0)
63
86
  rack (>= 1.3)
64
87
  rackup (0.2.3)
65
88
  rack (>= 3.0.0.beta1)
66
89
  webrick
67
90
  rake (13.2.1)
68
- roda (3.81.0)
91
+ roda (3.92.0)
69
92
  rack
70
- rspec (3.13.0)
93
+ rspec (3.13.1)
71
94
  rspec-core (~> 3.13.0)
72
95
  rspec-expectations (~> 3.13.0)
73
96
  rspec-mocks (~> 3.13.0)
74
- rspec-core (3.13.0)
97
+ rspec-core (3.13.4)
75
98
  rspec-support (~> 3.13.0)
76
- rspec-expectations (3.13.1)
99
+ rspec-expectations (3.13.5)
77
100
  diff-lcs (>= 1.2.0, < 2.0)
78
101
  rspec-support (~> 3.13.0)
79
- rspec-mocks (3.13.1)
102
+ rspec-mocks (3.13.5)
80
103
  diff-lcs (>= 1.2.0, < 2.0)
81
104
  rspec-support (~> 3.13.0)
82
- rspec-support (3.13.1)
83
- securerandom (0.3.1)
105
+ rspec-support (3.13.4)
106
+ securerandom (0.4.1)
84
107
  simplecov (0.22.0)
85
108
  docile (~> 1.1)
86
109
  simplecov-html (~> 0.11)
87
110
  simplecov_json_formatter (~> 0.1)
88
- simplecov-html (0.12.3)
111
+ simplecov-html (0.13.1)
89
112
  simplecov_json_formatter (0.1.4)
90
- tilt (2.4.0)
113
+ tilt (2.6.0)
91
114
  tzinfo (2.0.6)
92
115
  concurrent-ruby (~> 1.0)
93
- waterdrop (2.7.4)
94
- karafka-core (>= 2.4.3, < 3.0.0)
95
- karafka-rdkafka (>= 0.15.1)
116
+ waterdrop (2.8.4)
117
+ karafka-core (>= 2.4.9, < 3.0.0)
118
+ karafka-rdkafka (>= 0.19.2)
96
119
  zeitwerk (~> 2.3)
97
- webrick (1.8.1)
98
- zeitwerk (2.6.17)
120
+ webrick (1.9.1)
121
+ zeitwerk (2.6.18)
99
122
 
100
123
  PLATFORMS
124
+ aarch64-linux-gnu
125
+ aarch64-linux-musl
126
+ arm-linux-gnu
127
+ arm-linux-musl
128
+ arm64-darwin
101
129
  ruby
102
- x86_64-linux
130
+ x86-linux-gnu
131
+ x86-linux-musl
132
+ x86_64-darwin
133
+ x86_64-linux-gnu
134
+ x86_64-linux-musl
103
135
 
104
136
  DEPENDENCIES
105
137
  byebug
106
138
  factory_bot
107
139
  fugit
108
140
  karafka-web!
141
+ nokogiri
109
142
  ostruct
110
143
  rack-test
111
144
  rackup (~> 0.2)
@@ -113,4 +146,4 @@ DEPENDENCIES
113
146
  simplecov
114
147
 
115
148
  BUNDLED WITH
116
- 2.5.14
149
+ 2.6.9
data/LICENSE CHANGED
@@ -6,8 +6,12 @@ for license text.
6
6
 
7
7
  Karafka and Karafka Web have also commercial-friendly license, commercial support and commercial components.
8
8
 
9
- All of the commercial components are present in the lib/karafka/pro and lib/karafka/web/pro
10
- directory of this repository and their usage requires commercial license agreement.
9
+ All of the commercial components and code are present in the:
10
+
11
+ - `lib/karafka/web/pro`
12
+ - `spec/lib/karafka/web/pro`
13
+
14
+ directories of this repository and their usage requires commercial license agreement.
11
15
 
12
16
  By sending a pull request to the pro components, you are agreeing to transfer the copyright of your
13
17
  code to Maciej Mensfeld.
data/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/setup'
4
+ require 'bundler/gem_tasks'
@@ -0,0 +1,35 @@
1
+ #!/bin/bash
2
+
3
+ # Checks Kafka logs for unsupported warning patterns
4
+ # Only specified warnings are allowed, all others should trigger failure
5
+
6
+ allowed_patterns=(
7
+ "Performing controller activation"
8
+ "registered with feature metadata.version"
9
+ "Replayed TopicRecord for"
10
+ "Replayed PartitionRecord for"
11
+ "Previous leader None and previous leader epoch"
12
+ "Creating new"
13
+ )
14
+
15
+ # Get all warnings
16
+ warnings=$(docker logs --since=0 kafka | grep WARN)
17
+ exit_code=0
18
+
19
+ while IFS= read -r line; do
20
+ allowed=0
21
+ for pattern in "${allowed_patterns[@]}"; do
22
+ if echo "$line" | grep -q "$pattern"; then
23
+ allowed=1
24
+ break
25
+ fi
26
+ done
27
+
28
+ if [ $allowed -eq 0 ]; then
29
+ echo "Unexpected warning found:"
30
+ echo "$line"
31
+ exit_code=1
32
+ fi
33
+ done <<< "$warnings"
34
+
35
+ exit $exit_code
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This script verifies that we do not create (except few needed exceptions) test topics that do
4
+ # not start with the "it-" prefix which is our standard.
5
+ #
6
+ # This ensures that we can clearly identify all test topics for removal in case of doing dev work
7
+ # on a long-lived Kafka cluster without option to fully reset it.
8
+ #
9
+ # It also ensures we have one convention that we can follow.
10
+
11
+ require 'bundler'
12
+ Bundler.setup(:default, :test, :integrations)
13
+ require 'karafka'
14
+
15
+ module Karafka
16
+ class App
17
+ setup do |config|
18
+ config.kafka = { 'bootstrap.servers': '127.0.0.1:9092' }
19
+ end
20
+ end
21
+ end
22
+
23
+ # Please note that "__" starting topics are not here by default. It is expected.
24
+ invalid = Karafka::Admin
25
+ .cluster_info
26
+ .topics
27
+ .map { |topic| topic[:topic_name] }
28
+ .select { |topic| !topic.start_with?('it-') }
29
+ .select { |topic| topic.length <= 6 }
30
+
31
+ invalid.each do |invalid_name|
32
+ puts "#{invalid_name} does not start with the \"it-\" prefix"
33
+ end
34
+
35
+ exit invalid.empty? ? 0 : 1
@@ -22,6 +22,7 @@ en:
22
22
  ui.branding.type_format: 'must be :info, :error, :warning, :success, :primary or :secondary'
23
23
  ui.branding.label_format: must be false or non-empty string
24
24
  ui.branding.notice_format: must be false or non-empty string
25
+ ui.branding.nav_extras_format: must be an ERB template code or a path to one
25
26
 
26
27
  search_form:
27
28
  missing: needs to be present
@@ -43,7 +43,7 @@ en:
43
43
  - "Are you concerned about managing large data flows? Virtual Partitions in Karafka Pro simplify data processing, offering unparalleled efficiency and scalability."
44
44
  - "Looking for flexible scheduling solutions? Karafka's Pro Periodic Jobs feature allows precise task timing and execution, enhancing your application's performance and reliability."
45
45
  - "Need advanced routing capabilities? Routing Patterns in Karafka Pro provide dynamic message routing, improving your system's adaptability and efficiency."
46
- - "Are you Seeking to control your workload? With Rate Limiting in Karafka Pro, you can effectively manage and balance your system's load, ensuring optimal performance under any conditions."
46
+ - "Are you seeking to control your workload? With Rate Limiting in Karafka Pro, you can effectively manage and balance your system's load, ensuring optimal performance under any conditions."
47
47
  - "Need quick data access methods? The Iterator API in Karafka Pro provides efficient data retrieval methods."
48
48
  - "Want more nuanced error handling? Discover Granular Backoffs in Karafka Pro, which allows for detailed control over retry mechanisms and error recovery processes."
49
49
  - "Need a boost in data processing speed? Multiplexing in Karafka Pro enables parallel processing, significantly increasing throughput and reducing processing times."
data/docker-compose.yml CHANGED
@@ -3,7 +3,7 @@ version: '2'
3
3
  services:
4
4
  kafka:
5
5
  container_name: kafka
6
- image: confluentinc/cp-kafka:7.7.1
6
+ image: confluentinc/cp-kafka:8.0.0
7
7
 
8
8
  ports:
9
9
  - 9092:9092
data/gulpfile.js CHANGED
@@ -3,7 +3,6 @@ const concat = require('gulp-concat');
3
3
  const uglify = require('gulp-uglify');
4
4
  const through2 = require('through2');
5
5
  const path = require('path');
6
- const cleanCSS = require('gulp-clean-css');
7
6
  const sourcemaps = require('gulp-sourcemaps');
8
7
 
9
8
  // Check if we are in development mode
@@ -64,7 +63,6 @@ gulp.task('styles', function() {
64
63
  return gulp.src(cssFiles)
65
64
  .pipe(isDev ? sourcemaps.init() : through2.obj()) // Initialize sourcemaps in dev
66
65
  .pipe(concat('application.min.css'))
67
- .pipe(cleanCSS({ level: 2 })) // Minify CSS
68
66
  .pipe(isDev ? sourcemaps.write('.') : through2.obj()) // Write sourcemaps in dev
69
67
  .pipe(gulp.dest('lib/karafka/web/ui/public/stylesheets'));
70
68
  });