Class: Karafka::Web::Ui::Models::Status::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/karafka/web/ui/models/status/context.rb

Overview

Shared context container for status checks.

This class holds cached data that is shared across multiple status checks. Instead of each check fetching data independently, they share this context to avoid redundant Kafka calls and ensure consistency.

The context provides:

  • Memoized accessors for expensive data (cluster info, state, metrics)

  • Helper methods for topic name configuration

  • Computed topic details based on cluster info

Examples:

Using context in a check

class MyCheck < Base
  def call
    # Access shared data
    context.current_state
    context.cluster_info

    # Use topic helpers
    context.topics_consumers_states
  end
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeContext

Initialize all instance variables upfront so every instance has the same object shape, avoiding Ruby’s ‘:performance` “shape variations” warning.



33
34
35
36
37
38
39
40
41
# File 'lib/karafka/web/ui/models/status/context.rb', line 33

def initialize
  @cluster_info = nil
  @connection_time = nil
  @current_state = nil
  @current_metrics = nil
  @processes = nil
  @subscriptions = nil
  @topics_details = nil
end

Instance Attribute Details

#cluster_infoObject?

Returns cluster metadata from Kafka.

Returns:

  • (Object, nil)

    cluster metadata from Kafka



44
45
46
# File 'lib/karafka/web/ui/models/status/context.rb', line 44

def cluster_info
  @cluster_info
end

#connection_timeFloat?

Returns time in milliseconds to connect to Kafka.

Returns:

  • (Float, nil)

    time in milliseconds to connect to Kafka



47
48
49
# File 'lib/karafka/web/ui/models/status/context.rb', line 47

def connection_time
  @connection_time
end

#current_metricsHash?

Returns current consumers metrics from Kafka.

Returns:

  • (Hash, nil)

    current consumers metrics from Kafka



53
54
55
# File 'lib/karafka/web/ui/models/status/context.rb', line 53

def current_metrics
  @current_metrics
end

#current_stateHash?

Returns current consumers state from Kafka.

Returns:

  • (Hash, nil)

    current consumers state from Kafka



50
51
52
# File 'lib/karafka/web/ui/models/status/context.rb', line 50

def current_state
  @current_state
end

#processesArray?

Returns list of active processes.

Returns:

  • (Array, nil)

    list of active processes



56
57
58
# File 'lib/karafka/web/ui/models/status/context.rb', line 56

def processes
  @processes
end

#subscriptionsArray?

Returns list of topic subscriptions.

Returns:

  • (Array, nil)

    list of topic subscriptions



59
60
61
# File 'lib/karafka/web/ui/models/status/context.rb', line 59

def subscriptions
  @subscriptions
end

Instance Method Details

#clear_topics_details_cacheObject

Clears the memoized topics_details cache.

Call this if cluster_info is updated and you need fresh topic details.



114
115
116
# File 'lib/karafka/web/ui/models/status/context.rb', line 114

def clear_topics_details_cache
  @topics_details = nil
end

#topics_consumers_commandsString

Returns the consumers commands topic name from configuration.

Returns:

  • (String)

    the configured consumers commands topic name



92
93
94
# File 'lib/karafka/web/ui/models/status/context.rb', line 92

def topics_consumers_commands
  ::Karafka::Web.config.topics.consumers.commands.name.to_s
end

#topics_consumers_metricsString

Returns the consumers metrics topic name from configuration.

Returns:

  • (String)

    the configured consumers metrics topic name



78
79
80
# File 'lib/karafka/web/ui/models/status/context.rb', line 78

def topics_consumers_metrics
  ::Karafka::Web.config.topics.consumers.metrics.name.to_s
end

#topics_consumers_reportsString

Returns the consumers reports topic name from configuration.

Returns:

  • (String)

    the configured consumers reports topic name



71
72
73
# File 'lib/karafka/web/ui/models/status/context.rb', line 71

def topics_consumers_reports
  ::Karafka::Web.config.topics.consumers.reports.name.to_s
end

#topics_consumers_statesString

Returns the consumers states topic name from configuration.

Returns:

  • (String)

    the configured consumers states topic name



64
65
66
# File 'lib/karafka/web/ui/models/status/context.rb', line 64

def topics_consumers_states
  ::Karafka::Web.config.topics.consumers.states.name.to_s
end

#topics_detailsHash

Computes and returns details about all Web UI topics.

For each topic, returns whether it exists, its partition count, and replication factor. Uses cluster_info to determine actual values.

Examples:

Return value

{
  'karafka_consumers_states' => { present: true, partitions: 1, replication: 3 },
  'karafka_consumers_reports' => { present: false, partitions: 0, replication: 1 }
}

Returns:

  • (Hash)

    hash with topic names as keys and detail hashes as values



107
108
109
# File 'lib/karafka/web/ui/models/status/context.rb', line 107

def topics_details
  @topics_details ||= compute_topics_details
end

#topics_errorsString

Returns the errors topic name from configuration.

Returns:

  • (String)

    the configured errors topic name



85
86
87
# File 'lib/karafka/web/ui/models/status/context.rb', line 85

def topics_errors
  ::Karafka::Web.config.topics.errors.name
end