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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/Gemfile +9 -10
- data/Gemfile.lint +14 -0
- data/Gemfile.lint.lock +123 -0
- data/Gemfile.lock +15 -16
- data/README.md +15 -15
- data/Rakefile +2 -2
- data/bin/balance_specs +120 -0
- data/bin/check_coverage +31 -0
- data/bin/collect_timings +83 -0
- data/bin/rspecs +10 -0
- data/bin/rspecs_parallel +111 -0
- data/docker-compose.yml +1 -1
- data/karafka-web.gemspec +35 -35
- data/lib/karafka/web/cli/base.rb +2 -2
- data/lib/karafka/web/cli/help.rb +2 -2
- data/lib/karafka/web/cli/install.rb +3 -3
- data/lib/karafka/web/cli/migrate.rb +3 -3
- data/lib/karafka/web/cli/reset.rb +3 -3
- data/lib/karafka/web/cli/uninstall.rb +1 -1
- data/lib/karafka/web/config.rb +40 -32
- data/lib/karafka/web/contracts/base.rb +2 -2
- data/lib/karafka/web/deserializer.rb +5 -5
- data/lib/karafka/web/installer.rb +14 -14
- data/lib/karafka/web/management/actions/base.rb +5 -5
- data/lib/karafka/web/management/actions/clean_boot_file.rb +3 -3
- data/lib/karafka/web/management/actions/create_initial_states.rb +8 -8
- data/lib/karafka/web/management/actions/enable.rb +3 -3
- data/lib/karafka/web/management/actions/extend_boot_file.rb +3 -3
- data/lib/karafka/web/management/migrations/base.rb +3 -3
- data/lib/karafka/web/management/migrations/consumers_metrics/0_set_initial.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1699543515_fill_missing_received_and_sent_bytes.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1700234522_introduce_waiting.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1700234522_remove_processing.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1704722380_split_listeners_into_active_and_paused.rb +7 -7
- data/lib/karafka/web/management/migrations/consumers_metrics/1706607960_introduce_lag_total.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1706611396_rename_lag_total_to_lag_hybrid.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_metrics/1716218393_populate_jobs_metrics.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_reports/1761645571_rename_process_name_to_id.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_reports/1765657887_add_group_instance_id_to_subscription_groups.rb +42 -0
- data/lib/karafka/web/management/migrations/consumers_states/0_set_initial.rb +2 -2
- data/lib/karafka/web/management/migrations/consumers_states/1699543515_fill_missing_received_and_sent_bytes.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1700234522_introduce_waiting.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1700234522_remove_processing.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1704722380_split_listeners_into_active_and_paused.rb +7 -7
- data/lib/karafka/web/management/migrations/consumers_states/1706607960_introduce_lag_total.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1706611396_rename_lag_total_to_lag_hybrid.rb +1 -1
- data/lib/karafka/web/management/migrations/consumers_states/1716218393_add_jobs_counter.rb +1 -1
- data/lib/karafka/web/management/migrator.rb +2 -2
- data/lib/karafka/web/pro/commanding/commands/base.rb +20 -4
- data/lib/karafka/web/pro/commanding/commands/consumers/quiet.rb +22 -5
- data/lib/karafka/web/pro/commanding/commands/consumers/stop.rb +22 -5
- data/lib/karafka/web/pro/commanding/commands/consumers/trace.rb +21 -4
- data/lib/karafka/web/pro/commanding/commands/partitions/pause.rb +20 -3
- data/lib/karafka/web/pro/commanding/commands/partitions/resume.rb +20 -3
- data/lib/karafka/web/pro/commanding/commands/partitions/seek.rb +20 -3
- data/lib/karafka/web/pro/commanding/commands/topics/pause.rb +48 -0
- data/lib/karafka/web/pro/commanding/commands/topics/resume.rb +49 -0
- data/lib/karafka/web/pro/commanding/config.rb +23 -5
- data/lib/karafka/web/pro/commanding/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/commanding/dispatcher.rb +61 -26
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/base.rb +20 -3
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/pause.rb +21 -4
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/resume.rb +20 -3
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/seek.rb +24 -7
- data/lib/karafka/web/pro/commanding/handlers/partitions/executor.rb +36 -12
- data/lib/karafka/web/pro/commanding/handlers/partitions/listener.rb +47 -8
- data/lib/karafka/web/pro/commanding/handlers/partitions/tracker.rb +62 -13
- data/lib/karafka/web/pro/commanding/handlers/topics/commands/base.rb +109 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/commands/pause.rb +76 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/commands/resume.rb +56 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/executor.rb +75 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/listener.rb +82 -0
- data/lib/karafka/web/pro/commanding/handlers/topics/tracker.rb +81 -0
- data/lib/karafka/web/pro/commanding/listener.rb +23 -6
- data/lib/karafka/web/pro/commanding/manager.rb +44 -23
- data/lib/karafka/web/pro/commanding/matcher.rb +46 -18
- data/lib/karafka/web/pro/commanding/matchers/base.rb +87 -0
- data/lib/karafka/web/pro/commanding/matchers/consumer_group_id.rb +58 -0
- data/lib/karafka/web/pro/commanding/matchers/message_type.rb +49 -0
- data/lib/karafka/web/pro/commanding/matchers/partition_id.rb +61 -0
- data/lib/karafka/web/pro/commanding/matchers/process_id.rb +58 -0
- data/lib/karafka/web/pro/commanding/matchers/schema_version.rb +44 -0
- data/lib/karafka/web/pro/commanding/matchers/topic.rb +58 -0
- data/lib/karafka/web/pro/commanding/request.rb +19 -2
- data/lib/karafka/web/pro/commanding.rb +19 -2
- data/lib/karafka/web/pro/loader.rb +20 -3
- data/lib/karafka/web/pro/ui/app.rb +25 -8
- data/lib/karafka/web/pro/ui/controllers/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/commanding_controller.rb +37 -15
- data/lib/karafka/web/pro/ui/controllers/consumers/commands_controller.rb +23 -6
- data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/base_controller.rb +43 -42
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/offsets_controller.rb +36 -17
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/pauses_controller.rb +59 -33
- data/lib/karafka/web/pro/ui/controllers/consumers/topics/pauses_controller.rb +164 -0
- data/lib/karafka/web/pro/ui/controllers/dashboard_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +26 -9
- data/lib/karafka/web/pro/ui/controllers/errors_controller.rb +25 -9
- data/lib/karafka/web/pro/ui/controllers/explorer/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +22 -5
- data/lib/karafka/web/pro/ui/controllers/explorer/messages_controller.rb +26 -9
- data/lib/karafka/web/pro/ui/controllers/explorer/search_controller.rb +23 -6
- data/lib/karafka/web/pro/ui/controllers/health_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +22 -5
- data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/explorer_controller.rb +25 -8
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb +21 -4
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +26 -9
- data/lib/karafka/web/pro/ui/controllers/status_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/support_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/topics/base_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +20 -3
- data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +20 -3
- data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +41 -2
- data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +24 -7
- data/lib/karafka/web/pro/ui/controllers/ux_controller.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/branding/config.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/branding/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/branding.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/features.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/policies/config.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/policies/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/policies/messages.rb +20 -3
- data/lib/karafka/web/pro/ui/lib/policies/requests.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/policies.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/safe_runner.rb +20 -3
- data/lib/karafka/web/pro/ui/lib/search/config.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/search/contracts/config.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/search/contracts/form.rb +24 -6
- data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +21 -4
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_header_includes.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_key_includes.rb +19 -2
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_payload_includes.rb +20 -3
- data/lib/karafka/web/pro/ui/lib/search/normalizer.rb +26 -9
- data/lib/karafka/web/pro/ui/lib/search/runner.rb +33 -16
- data/lib/karafka/web/pro/ui/lib/search.rb +19 -2
- data/lib/karafka/web/pro/ui/routes/base.rb +19 -2
- data/lib/karafka/web/pro/ui/routes/cluster.rb +21 -4
- data/lib/karafka/web/pro/ui/routes/consumers.rb +83 -49
- data/lib/karafka/web/pro/ui/routes/dashboard.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/dlq.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/errors.rb +21 -4
- data/lib/karafka/web/pro/ui/routes/explorer.rb +33 -16
- data/lib/karafka/web/pro/ui/routes/health.rb +26 -9
- data/lib/karafka/web/pro/ui/routes/jobs.rb +23 -6
- data/lib/karafka/web/pro/ui/routes/recurring_tasks.rb +29 -12
- data/lib/karafka/web/pro/ui/routes/routing.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/scheduled_messages.rb +28 -11
- data/lib/karafka/web/pro/ui/routes/status.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/support.rb +20 -3
- data/lib/karafka/web/pro/ui/routes/topics.rb +29 -12
- data/lib/karafka/web/pro/ui/routes/ux.rb +20 -3
- data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/_config.erb +14 -3
- data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/cluster/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_backtrace.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_command.erb +24 -66
- data/lib/karafka/web/pro/ui/views/consumers/commands/_command_details.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_empty.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_incompatible_command.erb +19 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/_incompatible_schema.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/_table.erb +15 -4
- data/lib/karafka/web/pro/ui/views/consumers/commands/details/_acceptance.erb +19 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/details/_request.erb +19 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/details/_result.erb +27 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/commands/metadata/_request.erb +52 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/metadata/_response.erb +46 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_command_name_badge.erb +40 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_request.erb +47 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/rows/_response.erb +46 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/show.erb +14 -15
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer_performance.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_commands.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_consumer_group.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_metrics.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_no_subscriptions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition.erb +15 -5
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition_edit_options.erb +16 -5
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_stopped.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_subscription_group.erb +31 -7
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/details.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/performance.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/controls/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/controls/_controls.erb +14 -3
- data/lib/karafka/web/pro/ui/views/consumers/controls/index.erb +35 -7
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_job.erb +14 -3
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_no_jobs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/jobs/pending.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/jobs/running.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_basics.erb +20 -13
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_breadcrumbs.erb +37 -46
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_form.erb +25 -14
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_not_running_error.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_running_warning.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/edit.erb +17 -6
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_active_not_editable.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_adjusting_warning.erb +14 -3
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_breadcrumbs.erb +40 -48
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_edit_form.erb +18 -8
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_lrj_not_manageable.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_new_form.erb +22 -11
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_not_running.erb +13 -2
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_partition_info.erb +57 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/edit.erb +16 -5
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/new.erb +16 -5
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_adjusting_warning.erb +38 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_breadcrumbs.erb +46 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_edit_form.erb +66 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_lrj_not_manageable.erb +30 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_new_form.erb +86 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_not_running.erb +27 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/_topic_info.erb +72 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/edit.erb +29 -0
- data/lib/karafka/web/pro/ui/views/consumers/topics/pauses/new.erb +29 -0
- data/lib/karafka/web/pro/ui/views/dashboard/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/_topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/dlq/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/errors/_error.erb +14 -3
- data/lib/karafka/web/pro/ui/views/errors/_partition_option.erb +18 -5
- data/lib/karafka/web/pro/ui/views/errors/_selector.erb +14 -3
- data/lib/karafka/web/pro/ui/views/errors/_table.erb +14 -3
- data/lib/karafka/web/pro/ui/views/errors/index.erb +39 -26
- data/lib/karafka/web/pro/ui/views/errors/partition.erb +50 -37
- data/lib/karafka/web/pro/ui/views/errors/show.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_failed_deserialization.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_filtered.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_message.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_no_topics.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_partition_option.erb +18 -5
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_selector.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_metadata.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_payload.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_resources_utilization.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/message/_too_big_to_be_displayed.erb +15 -4
- data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_detail.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_headers.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_key.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_cleaned.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_empty.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_messages.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_time_selector.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_timestamp_selector.erb +15 -3
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition.erb +52 -39
- data/lib/karafka/web/pro/ui/views/explorer/explorer/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_actions.erb +39 -26
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_empty.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_limited.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/messages/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/messages/forward.erb +28 -16
- data/lib/karafka/web/pro/ui/views/explorer/search/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_fix_errors.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_metadata.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_no_results.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_no_search_criteria.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_search_criteria.erb +14 -3
- data/lib/karafka/web/pro/ui/views/explorer/search/_search_modal.erb +27 -15
- data/lib/karafka/web/pro/ui/views/explorer/search/_timeout.erb +13 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_no_data.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_no_partition_data.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partition.erb +22 -6
- data/lib/karafka/web/pro/ui/views/health/_partition_lags.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partition_offset.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partition_times.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_partitions_with_fallback.erb +15 -2
- data/lib/karafka/web/pro/ui/views/health/_table_metadata.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/_topic_edit_options.erb +64 -0
- data/lib/karafka/web/pro/ui/views/health/changes.erb +14 -2
- data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +13 -2
- data/lib/karafka/web/pro/ui/views/health/lags.erb +14 -2
- data/lib/karafka/web/pro/ui/views/health/offsets.erb +14 -2
- data/lib/karafka/web/pro/ui/views/health/overview.erb +29 -5
- data/lib/karafka/web/pro/ui/views/jobs/_job.erb +14 -3
- data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/jobs/pending.erb +13 -2
- data/lib/karafka/web/pro/ui/views/jobs/running.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_actions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_batch_actions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_log.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_not_active.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_task.erb +14 -3
- data/lib/karafka/web/pro/ui/views/recurring_tasks/logs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +14 -3
- data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +14 -3
- data/lib/karafka/web/pro/ui/views/routing/_detail.erb +13 -2
- data/lib/karafka/web/pro/ui/views/routing/_topic.erb +14 -3
- data/lib/karafka/web/pro/ui/views/routing/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/routing/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_key.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_message.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_messages.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_cancel.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_compacted.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_schedule.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_tombstone.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/message/_unknown.erb +14 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/partition.erb +52 -39
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_no_groups.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/show.erb +14 -3
- data/lib/karafka/web/pro/ui/views/shared/_navigation.erb +14 -3
- data/lib/karafka/web/pro/ui/views/shared/_rdkafka_form_error_alert_box.erb +13 -2
- data/lib/karafka/web/pro/ui/views/shared/branding/_label.erb +13 -2
- data/lib/karafka/web/pro/ui/views/shared/branding/_notice.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_config.erb +14 -3
- data/lib/karafka/web/pro/ui/views/topics/configs/_delete_button.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_form.erb +17 -6
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_plan.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_warning.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/configs/edit.erb +21 -10
- data/lib/karafka/web/pro/ui/views/topics/configs/index.erb +14 -3
- data/lib/karafka/web/pro/ui/views/topics/distributions/_add_partitions_button.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_badges.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_chart.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_form.erb +18 -6
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_hints.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_warnings.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_empty_partitions.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_limited.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/_partition.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/edit.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/distributions/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/offsets/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/offsets/_partition.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/offsets/show.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/replications/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/replications/_metric_box.erb +20 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_partition.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/replications/_replication_info.erb +65 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_resilience_success.erb +24 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_warning_low_durability.erb +67 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_warning_no_redundancy.erb +66 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/_warning_zero_fault_tolerance.erb +67 -0
- data/lib/karafka/web/pro/ui/views/topics/replications/show.erb +15 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_breadcrumbs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_create_button.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_create_hints.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_form.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_hints.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_warning.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_new_form.erb +25 -11
- data/lib/karafka/web/pro/ui/views/topics/topics/_tabs.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/_topic.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/edit.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +13 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/new.erb +13 -2
- data/lib/karafka/web/processing/consumer.rb +1 -1
- data/lib/karafka/web/processing/consumers/aggregators/metrics.rb +11 -11
- data/lib/karafka/web/processing/consumers/aggregators/state.rb +4 -3
- data/lib/karafka/web/processing/consumers/reports_migrator.rb +2 -2
- data/lib/karafka/web/processing/consumers/schema_manager.rb +1 -1
- data/lib/karafka/web/processing/publisher.rb +2 -2
- data/lib/karafka/web/producer.rb +61 -0
- data/lib/karafka/web/tracking/consumers/contracts/report.rb +2 -2
- data/lib/karafka/web/tracking/consumers/contracts/subscription_group.rb +1 -0
- data/lib/karafka/web/tracking/consumers/listeners/booting.rb +1 -1
- data/lib/karafka/web/tracking/consumers/listeners/connections.rb +7 -2
- data/lib/karafka/web/tracking/consumers/listeners/errors.rb +10 -10
- data/lib/karafka/web/tracking/consumers/listeners/pausing.rb +1 -1
- data/lib/karafka/web/tracking/consumers/listeners/processing.rb +25 -25
- data/lib/karafka/web/tracking/consumers/listeners/statistics.rb +35 -35
- data/lib/karafka/web/tracking/consumers/reporter.rb +2 -2
- data/lib/karafka/web/tracking/consumers/sampler/enrichers/consumer_groups.rb +1 -0
- data/lib/karafka/web/tracking/consumers/sampler/metrics/base.rb +2 -1
- data/lib/karafka/web/tracking/consumers/sampler/metrics/container.rb +15 -15
- data/lib/karafka/web/tracking/consumers/sampler/metrics/network.rb +6 -6
- data/lib/karafka/web/tracking/consumers/sampler/metrics/os.rb +41 -37
- data/lib/karafka/web/tracking/consumers/sampler.rb +7 -7
- data/lib/karafka/web/tracking/helpers/error_info.rb +10 -10
- data/lib/karafka/web/tracking/helpers/sysconf.rb +2 -2
- data/lib/karafka/web/tracking/helpers/ttls/array.rb +1 -1
- data/lib/karafka/web/tracking/helpers/ttls/hash.rb +1 -1
- data/lib/karafka/web/tracking/helpers/ttls/stats.rb +4 -4
- data/lib/karafka/web/tracking/producers/listeners/booting.rb +1 -1
- data/lib/karafka/web/tracking/producers/listeners/errors.rb +2 -2
- data/lib/karafka/web/tracking/producers/reporter.rb +2 -2
- data/lib/karafka/web/tracking/producers/sampler.rb +1 -1
- data/lib/karafka/web/tracking/ui/errors.rb +4 -4
- data/lib/karafka/web/ui/app.rb +2 -2
- data/lib/karafka/web/ui/base.rb +30 -30
- data/lib/karafka/web/ui/controllers/base_controller.rb +24 -24
- data/lib/karafka/web/ui/controllers/cluster_controller.rb +3 -3
- data/lib/karafka/web/ui/controllers/requests/params.rb +6 -6
- data/lib/karafka/web/ui/helpers/application_helper.rb +59 -59
- data/lib/karafka/web/ui/helpers/paths_helper.rb +15 -7
- data/lib/karafka/web/ui/helpers/tailwind_helper.rb +6 -6
- data/lib/karafka/web/ui/helpers/time_helper.rb +1 -1
- data/lib/karafka/web/ui/helpers/topics_helper.rb +4 -4
- data/lib/karafka/web/ui/lib/admin.rb +2 -2
- data/lib/karafka/web/ui/lib/paginations/base.rb +7 -7
- data/lib/karafka/web/ui/lib/paginations/offset_based.rb +2 -2
- data/lib/karafka/web/ui/lib/paginations/page_based.rb +1 -1
- data/lib/karafka/web/ui/lib/paginations/paginators/arrays.rb +3 -3
- data/lib/karafka/web/ui/lib/paginations/watermark_offsets_based.rb +1 -1
- data/lib/karafka/web/ui/lib/sorter.rb +2 -2
- data/lib/karafka/web/ui/models/counters.rb +1 -1
- data/lib/karafka/web/ui/models/health.rb +1 -0
- data/lib/karafka/web/ui/models/jobs.rb +2 -2
- data/lib/karafka/web/ui/models/message.rb +9 -9
- data/lib/karafka/web/ui/models/metrics/charts/aggregated.rb +3 -3
- data/lib/karafka/web/ui/models/metrics/charts/topics.rb +3 -3
- data/lib/karafka/web/ui/models/metrics/topics.rb +8 -8
- data/lib/karafka/web/ui/models/processes.rb +3 -3
- data/lib/karafka/web/ui/models/recurring_tasks/schedule.rb +2 -2
- data/lib/karafka/web/ui/models/status/checks/base.rb +127 -0
- data/lib/karafka/web/ui/models/status/checks/commands_topic_presence.rb +52 -0
- data/lib/karafka/web/ui/models/status/checks/connection.rb +68 -0
- data/lib/karafka/web/ui/models/status/checks/consumers_reports.rb +34 -0
- data/lib/karafka/web/ui/models/status/checks/consumers_reports_schema_state.rb +32 -0
- data/lib/karafka/web/ui/models/status/checks/consumers_schemas.rb +44 -0
- data/lib/karafka/web/ui/models/status/checks/enabled.rb +39 -0
- data/lib/karafka/web/ui/models/status/checks/initial_consumers_metrics.rb +48 -0
- data/lib/karafka/web/ui/models/status/checks/initial_consumers_state.rb +48 -0
- data/lib/karafka/web/ui/models/status/checks/live_reporting.rb +31 -0
- data/lib/karafka/web/ui/models/status/checks/materializing_lag.rb +49 -0
- data/lib/karafka/web/ui/models/status/checks/partitions.rb +45 -0
- data/lib/karafka/web/ui/models/status/checks/pro_subscription.rb +29 -0
- data/lib/karafka/web/ui/models/status/checks/replication.rb +51 -0
- data/lib/karafka/web/ui/models/status/checks/routing_topics_presence.rb +53 -0
- data/lib/karafka/web/ui/models/status/checks/state_calculation.rb +39 -0
- data/lib/karafka/web/ui/models/status/checks/topics.rb +44 -0
- data/lib/karafka/web/ui/models/status/context.rb +142 -0
- data/lib/karafka/web/ui/models/status/step.rb +64 -0
- data/lib/karafka/web/ui/models/status.rb +70 -356
- data/lib/karafka/web/ui/models/topic.rb +2 -2
- data/lib/karafka/web/ui/public/javascripts/application.min.js +1 -1
- data/lib/karafka/web/ui/public/javascripts/application.min.js.br +0 -0
- data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
- data/lib/karafka/web/ui/public/javascripts/components/live_poll.js +2 -2
- data/lib/karafka/web/ui/public/stylesheets/application.min.css +4660 -2524
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/libs/tailwind.css +62 -3
- data/lib/karafka/web/ui/routes/assets.rb +7 -7
- data/lib/karafka/web/ui/routes/cluster.rb +4 -4
- data/lib/karafka/web/ui/routes/consumers.rb +2 -2
- data/lib/karafka/web/ui/routes/dashboard.rb +1 -1
- data/lib/karafka/web/ui/routes/errors.rb +2 -2
- data/lib/karafka/web/ui/routes/jobs.rb +4 -4
- data/lib/karafka/web/ui/routes/routing.rb +1 -1
- data/lib/karafka/web/ui/routes/status.rb +1 -1
- data/lib/karafka/web/ui/routes/support.rb +1 -1
- data/lib/karafka/web/ui/routes/ux.rb +1 -1
- data/lib/karafka/web/ui/views/cluster/_partition.erb +1 -0
- data/lib/karafka/web/ui/views/dashboard/_counters.erb +16 -16
- data/lib/karafka/web/ui/views/errors/_detail.erb +2 -3
- data/lib/karafka/web/ui/views/errors/_error.erb +1 -1
- data/lib/karafka/web/ui/views/errors/index.erb +1 -1
- data/lib/karafka/web/ui/views/errors/show.erb +1 -1
- data/lib/karafka/web/ui/views/jobs/_job.erb +1 -1
- data/lib/karafka/web/ui/views/layout.erb +1 -1
- data/lib/karafka/web/ui/views/routing/_consumer_group.erb +1 -1
- data/lib/karafka/web/ui/views/routing/_topic.erb +1 -1
- data/lib/karafka/web/ui/views/shared/_header.erb +5 -5
- data/lib/karafka/web/ui/views/shared/_navigation.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_error.erb +2 -2
- data/lib/karafka/web/ui/views/shared/alerts/_info.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_primary.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_secondary.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_success.erb +1 -1
- data/lib/karafka/web/ui/views/shared/alerts/_warning.erb +2 -2
- data/lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb +3 -3
- data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +4 -4
- data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +4 -4
- data/lib/karafka/web/ui/views/shared/exceptions/unhandled_error.erb +4 -4
- data/lib/karafka/web/ui/views/status/show.erb +15 -0
- data/lib/karafka/web/ui/views/status/warnings/_commands_topic_presence.erb +14 -0
- data/lib/karafka/web/ui/views/ux/_code.erb +0 -1
- data/lib/karafka/web/ui/views/ux/_data_table.erb +79 -0
- data/lib/karafka/web/ui/views/ux/_headers.erb +1 -1
- data/lib/karafka/web/ui/views/ux/_pagination.erb +1 -1
- data/lib/karafka/web/version.rb +1 -1
- data/lib/karafka/web.rb +17 -17
- data/package-lock.json +480 -92
- data/package.json +3 -1
- data/renovate.json +12 -11
- data/tailwind.config.js +4 -7
- metadata +72 -3
- data/lib/karafka/web/pro/ui/views/consumers/commands/_metadata.erb +0 -44
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -121,18 +138,18 @@ module Karafka
|
|
|
121
138
|
|
|
122
139
|
# Establish starting point
|
|
123
140
|
start = case offset_type
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
141
|
+
when "latest"
|
|
142
|
+
(limit / partitions_to_search.size) * -1
|
|
143
|
+
when "offset"
|
|
144
|
+
offset
|
|
145
|
+
when "timestamp"
|
|
146
|
+
# Kafka timestamp of message is in ms, we need a second precision for
|
|
147
|
+
# `Time#at`
|
|
148
|
+
Time.at(timestamp / 1_000.to_f)
|
|
149
|
+
else
|
|
150
|
+
# This should never happen. Contact us if you see this.
|
|
151
|
+
raise ::Karafka::Errors::UnsupportedCaseError, offset_type
|
|
152
|
+
end
|
|
136
153
|
|
|
137
154
|
iterator_query = {
|
|
138
155
|
@topic => partitions_to_search.to_h { |par| [par, start] }
|
|
@@ -175,7 +192,7 @@ module Karafka
|
|
|
175
192
|
# the lookup started to prevent endless lookups on partitions that have a lot
|
|
176
193
|
# of messages being written to them in real time
|
|
177
194
|
if current_stats[:checked] >= per_partition ||
|
|
178
|
-
|
|
195
|
+
message.timestamp > started_at_time
|
|
179
196
|
iterator.stop_current_partition
|
|
180
197
|
next
|
|
181
198
|
end
|
|
@@ -217,7 +234,7 @@ module Karafka
|
|
|
217
234
|
|
|
218
235
|
# If in the search query there is no "all", we pick only partitions that do exist
|
|
219
236
|
# in the topic that were part of the requested search scope
|
|
220
|
-
unless partitions.include?(
|
|
237
|
+
unless partitions.include?("all")
|
|
221
238
|
@partitions_to_search &= partitions.map(&:to_i)
|
|
222
239
|
# and just in case someone would provide really weird data, we fallback to
|
|
223
240
|
# partition 0
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -11,10 +28,10 @@ module Karafka
|
|
|
11
28
|
# Manages the cluster related routes
|
|
12
29
|
class Cluster < Base
|
|
13
30
|
route do |r|
|
|
14
|
-
r.on
|
|
31
|
+
r.on "cluster" do
|
|
15
32
|
controller = build(Controllers::ClusterController)
|
|
16
33
|
|
|
17
|
-
r.get
|
|
34
|
+
r.get "replication" do
|
|
18
35
|
# We use the non-pro controller here because this action is the same
|
|
19
36
|
controller = build(Ui::Controllers::ClusterController)
|
|
20
37
|
controller.replication
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -11,95 +28,112 @@ module Karafka
|
|
|
11
28
|
# Manages the consumers related routes
|
|
12
29
|
class Consumers < Base
|
|
13
30
|
route do |r|
|
|
14
|
-
r.on
|
|
31
|
+
r.on "consumers" do
|
|
15
32
|
controller = build(Controllers::Consumers::ConsumersController)
|
|
16
33
|
|
|
17
|
-
r.get
|
|
34
|
+
r.get "overview" do
|
|
18
35
|
controller.index
|
|
19
36
|
end
|
|
20
37
|
|
|
21
|
-
r.get String,
|
|
38
|
+
r.get String, "subscriptions" do |process_id|
|
|
22
39
|
controller.subscriptions(process_id)
|
|
23
40
|
end
|
|
24
41
|
|
|
25
|
-
r.get String,
|
|
42
|
+
r.get String, "details" do |process_id|
|
|
26
43
|
controller.details(process_id)
|
|
27
44
|
end
|
|
28
45
|
|
|
29
|
-
r.get
|
|
46
|
+
r.get "performance" do
|
|
30
47
|
controller.performance
|
|
31
48
|
end
|
|
32
49
|
|
|
33
|
-
r.on
|
|
34
|
-
|
|
50
|
+
r.on(
|
|
51
|
+
"partitions",
|
|
52
|
+
String,
|
|
53
|
+
String,
|
|
54
|
+
:partition_id
|
|
55
|
+
) do |consumer_group_id, topic, partition_id|
|
|
56
|
+
r.on "pause" do
|
|
57
|
+
controller = build(Controllers::Consumers::Partitions::PausesController)
|
|
58
|
+
|
|
59
|
+
r.get "new" do
|
|
60
|
+
controller.new(consumer_group_id, topic, partition_id)
|
|
61
|
+
end
|
|
35
62
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
controller.new(process_id, subscription_group_id, topic, partition_id)
|
|
40
|
-
end
|
|
63
|
+
r.post do
|
|
64
|
+
controller.create(consumer_group_id, topic, partition_id)
|
|
65
|
+
end
|
|
41
66
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
67
|
+
r.get "edit" do
|
|
68
|
+
controller.edit(consumer_group_id, topic, partition_id)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
r.delete do
|
|
72
|
+
controller.delete(consumer_group_id, topic, partition_id)
|
|
73
|
+
end
|
|
46
74
|
end
|
|
47
75
|
|
|
48
|
-
r.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
76
|
+
r.on "offset" do
|
|
77
|
+
controller = build(Controllers::Consumers::Partitions::OffsetsController)
|
|
78
|
+
|
|
79
|
+
r.get "edit" do
|
|
80
|
+
controller.edit(consumer_group_id, topic, partition_id)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
r.put do
|
|
84
|
+
controller.update(consumer_group_id, topic, partition_id)
|
|
85
|
+
end
|
|
52
86
|
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
r.on "topics", String, String, "pause" do |cg_id, topic|
|
|
90
|
+
controller = build(Controllers::Consumers::Topics::PausesController)
|
|
53
91
|
|
|
54
|
-
r.
|
|
55
|
-
|
|
56
|
-
) do |subscription_group_id, topic, partition_id|
|
|
57
|
-
controller.delete(process_id, subscription_group_id, topic, partition_id)
|
|
92
|
+
r.get "new" do
|
|
93
|
+
controller.new(cg_id, topic)
|
|
58
94
|
end
|
|
59
95
|
|
|
60
|
-
|
|
96
|
+
r.post do
|
|
97
|
+
controller.create(cg_id, topic)
|
|
98
|
+
end
|
|
61
99
|
|
|
62
|
-
r.get
|
|
63
|
-
|
|
64
|
-
) do |subscription_group_id, topic, partition_id|
|
|
65
|
-
controller.edit(process_id, subscription_group_id, topic, partition_id)
|
|
100
|
+
r.get "edit" do
|
|
101
|
+
controller.edit(cg_id, topic)
|
|
66
102
|
end
|
|
67
103
|
|
|
68
|
-
r.
|
|
69
|
-
|
|
70
|
-
) do |subscription_group_id, topic, partition_id|
|
|
71
|
-
controller.update(process_id, subscription_group_id, topic, partition_id)
|
|
104
|
+
r.delete do
|
|
105
|
+
controller.delete(cg_id, topic)
|
|
72
106
|
end
|
|
73
107
|
end
|
|
74
108
|
|
|
75
|
-
r.on String,
|
|
109
|
+
r.on String, "jobs" do |process_id|
|
|
76
110
|
controller = build(Controllers::Consumers::JobsController)
|
|
77
111
|
|
|
78
|
-
r.get
|
|
112
|
+
r.get "running" do
|
|
79
113
|
controller.running(process_id)
|
|
80
114
|
end
|
|
81
115
|
|
|
82
|
-
r.get
|
|
116
|
+
r.get "pending" do
|
|
83
117
|
controller.pending(process_id)
|
|
84
118
|
end
|
|
85
119
|
|
|
86
|
-
r.redirect
|
|
120
|
+
r.redirect consumers_path(process_id, "jobs/running")
|
|
87
121
|
end
|
|
88
122
|
|
|
89
|
-
r.get
|
|
123
|
+
r.get "controls" do
|
|
90
124
|
controller = build(Controllers::Consumers::ControlsController)
|
|
91
125
|
|
|
92
126
|
controller.index
|
|
93
127
|
end
|
|
94
128
|
|
|
95
|
-
r.on
|
|
129
|
+
r.on "commands" do
|
|
96
130
|
controller = build(Controllers::Consumers::CommandsController)
|
|
97
131
|
|
|
98
132
|
r.on Integer do |offset_id|
|
|
99
133
|
controller.show(offset_id)
|
|
100
134
|
end
|
|
101
135
|
|
|
102
|
-
r.get
|
|
136
|
+
r.get "recent" do
|
|
103
137
|
controller.recent
|
|
104
138
|
end
|
|
105
139
|
|
|
@@ -108,33 +142,33 @@ module Karafka
|
|
|
108
142
|
end
|
|
109
143
|
end
|
|
110
144
|
|
|
111
|
-
r.on
|
|
145
|
+
r.on "commanding" do
|
|
112
146
|
controller = build(Controllers::Consumers::CommandingController)
|
|
113
147
|
|
|
114
|
-
r.post
|
|
148
|
+
r.post "quiet_all" do
|
|
115
149
|
controller.quiet_all
|
|
116
150
|
end
|
|
117
151
|
|
|
118
|
-
r.post
|
|
152
|
+
r.post "stop_all" do
|
|
119
153
|
controller.stop_all
|
|
120
154
|
end
|
|
121
155
|
|
|
122
156
|
r.on String do |process_id|
|
|
123
|
-
r.post
|
|
157
|
+
r.post "trace" do
|
|
124
158
|
controller.trace(process_id)
|
|
125
159
|
end
|
|
126
160
|
|
|
127
|
-
r.post
|
|
161
|
+
r.post "quiet" do
|
|
128
162
|
controller.quiet(process_id)
|
|
129
163
|
end
|
|
130
164
|
|
|
131
|
-
r.post
|
|
165
|
+
r.post "stop" do
|
|
132
166
|
controller.stop(process_id)
|
|
133
167
|
end
|
|
134
168
|
end
|
|
135
169
|
end
|
|
136
170
|
|
|
137
|
-
r.redirect
|
|
171
|
+
r.redirect consumers_path("overview")
|
|
138
172
|
end
|
|
139
173
|
end
|
|
140
174
|
end
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -11,7 +28,7 @@ module Karafka
|
|
|
11
28
|
# Manages the dashboard related routes
|
|
12
29
|
class Dashboard < Base
|
|
13
30
|
route do |r|
|
|
14
|
-
r.get
|
|
31
|
+
r.get "dashboard" do
|
|
15
32
|
@breadcrumbs = false
|
|
16
33
|
controller = build(Controllers::DashboardController)
|
|
17
34
|
controller.index
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -11,7 +28,7 @@ module Karafka
|
|
|
11
28
|
# Manages the dlq related routes
|
|
12
29
|
class Dlq < Base
|
|
13
30
|
route do |r|
|
|
14
|
-
r.get
|
|
31
|
+
r.get "dlq" do
|
|
15
32
|
controller = build(Controllers::DlqController)
|
|
16
33
|
controller.index
|
|
17
34
|
end
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -11,14 +28,14 @@ module Karafka
|
|
|
11
28
|
# Manages the errors related routes
|
|
12
29
|
class Errors < Base
|
|
13
30
|
route do |r|
|
|
14
|
-
r.on
|
|
31
|
+
r.on "errors" do
|
|
15
32
|
controller = build(Controllers::ErrorsController)
|
|
16
33
|
|
|
17
34
|
r.get :partition_id, Integer do |partition_id, offset|
|
|
18
35
|
if params.current_offset == -1
|
|
19
36
|
controller.show(partition_id, offset)
|
|
20
37
|
else
|
|
21
|
-
r.redirect root_path(
|
|
38
|
+
r.redirect root_path("errors", partition_id, params.current_offset)
|
|
22
39
|
end
|
|
23
40
|
end
|
|
24
41
|
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# Karafka Pro - Source Available Commercial Software
|
|
4
|
+
# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# This software is NOT open source. It is source-available commercial software
|
|
7
|
+
# requiring a paid license for use. It is NOT covered by LGPL.
|
|
8
|
+
#
|
|
9
|
+
# PROHIBITED:
|
|
10
|
+
# - Use without a valid commercial license
|
|
11
|
+
# - Redistribution, modification, or derivative works without authorization
|
|
12
|
+
# - Use as training data for AI/ML models or inclusion in datasets
|
|
13
|
+
# - Scraping, crawling, or automated collection for any purpose
|
|
14
|
+
#
|
|
15
|
+
# PERMITTED:
|
|
16
|
+
# - Reading, referencing, and linking for personal or commercial use
|
|
17
|
+
# - Runtime retrieval by AI assistants, coding agents, and RAG systems
|
|
18
|
+
# for the purpose of providing contextual help to Karafka users
|
|
19
|
+
#
|
|
20
|
+
# License: https://karafka.io/docs/Pro-License-Comm/
|
|
21
|
+
# Contact: contact@karafka.io
|
|
5
22
|
|
|
6
23
|
module Karafka
|
|
7
24
|
module Web
|
|
@@ -11,67 +28,67 @@ module Karafka
|
|
|
11
28
|
# Manages the explorer related routes
|
|
12
29
|
class Explorer < Base
|
|
13
30
|
route do |r|
|
|
14
|
-
r.on
|
|
15
|
-
r.get String,
|
|
31
|
+
r.on "explorer" do
|
|
32
|
+
r.get String, "search" do |topic_id|
|
|
16
33
|
# Search has it's own controller but we want to have this in the explorer routing
|
|
17
34
|
# namespace because topic search is conceptually part of the explorer
|
|
18
35
|
controller = build(Controllers::Explorer::SearchController)
|
|
19
36
|
controller.index(topic_id)
|
|
20
37
|
end
|
|
21
38
|
|
|
22
|
-
r.on
|
|
39
|
+
r.on "messages" do
|
|
23
40
|
controller = build(Controllers::Explorer::MessagesController)
|
|
24
41
|
|
|
25
42
|
r.get(
|
|
26
|
-
String, :partition_id, Integer,
|
|
43
|
+
String, :partition_id, Integer, "forward"
|
|
27
44
|
) do |topic_id, partition_id, offset|
|
|
28
45
|
controller.forward(topic_id, partition_id, offset)
|
|
29
46
|
end
|
|
30
47
|
|
|
31
48
|
r.post(
|
|
32
|
-
String, :partition_id, Integer,
|
|
49
|
+
String, :partition_id, Integer, "republish"
|
|
33
50
|
) do |topic_id, partition_id, offset|
|
|
34
51
|
controller.republish(topic_id, partition_id, offset)
|
|
35
52
|
end
|
|
36
53
|
|
|
37
54
|
r.get(
|
|
38
|
-
String, :partition_id, Integer,
|
|
55
|
+
String, :partition_id, Integer, "download"
|
|
39
56
|
) do |topic_id, partition_id, offset|
|
|
40
57
|
controller.download(topic_id, partition_id, offset)
|
|
41
58
|
end
|
|
42
59
|
|
|
43
60
|
r.get(
|
|
44
|
-
String, :partition_id, Integer,
|
|
61
|
+
String, :partition_id, Integer, "export"
|
|
45
62
|
) do |topic_id, partition_id, offset|
|
|
46
63
|
controller.export(topic_id, partition_id, offset)
|
|
47
64
|
end
|
|
48
65
|
end
|
|
49
66
|
|
|
50
|
-
r.on
|
|
67
|
+
r.on "topics" do
|
|
51
68
|
controller = build(Controllers::Explorer::ExplorerController)
|
|
52
69
|
|
|
53
|
-
r.get String, :partition_id,
|
|
70
|
+
r.get String, :partition_id, "recent" do |topic_id, partition_id|
|
|
54
71
|
controller.recent(topic_id, partition_id)
|
|
55
72
|
end
|
|
56
73
|
|
|
57
74
|
r.get(
|
|
58
|
-
String, :partition_id, Integer,
|
|
75
|
+
String, :partition_id, Integer, "surrounding"
|
|
59
76
|
) do |topic_id, partition_id, offset|
|
|
60
77
|
controller.surrounding(topic_id, partition_id, offset)
|
|
61
78
|
end
|
|
62
79
|
|
|
63
|
-
r.get String,
|
|
80
|
+
r.get String, "recent" do |topic_id|
|
|
64
81
|
controller.recent(topic_id, nil)
|
|
65
82
|
end
|
|
66
83
|
|
|
67
84
|
# Jumps to offset matching the expected time
|
|
68
|
-
r.get String, :partition_id,
|
|
85
|
+
r.get String, :partition_id, "closest", Time do |topic_id, partition_id, time|
|
|
69
86
|
controller.closest(topic_id, partition_id, time)
|
|
70
87
|
end
|
|
71
88
|
|
|
72
89
|
# Jumps to the offset matching the expected timestamp
|
|
73
90
|
r.get(
|
|
74
|
-
String, :partition_id,
|
|
91
|
+
String, :partition_id, "closest", Integer
|
|
75
92
|
) do |topic_id, partition_id, timestamp|
|
|
76
93
|
# To simplify we just convert timestamp to time with ms precision
|
|
77
94
|
time = Time.at(timestamp / 1_000.0)
|
|
@@ -106,7 +123,7 @@ module Karafka
|
|
|
106
123
|
end
|
|
107
124
|
|
|
108
125
|
r.get do
|
|
109
|
-
r.redirect root_path(
|
|
126
|
+
r.redirect root_path("explorer/topics")
|
|
110
127
|
end
|
|
111
128
|
end
|
|
112
129
|
end
|