Class: GitLab::Exporter::Database::ZoektCollector

Inherits:
Base
  • Object
show all
Defined in:
lib/gitlab_exporter/database/zoekt.rb

Overview

A helper class to collect zoekt metrics.

Constant Summary collapse

ZOEKT_TASKS_PROCESSING_QUERY =

Query to get processing zoekt_tasks distribution by zoekt_node_id

<<~SQL.freeze
  WITH task_counts AS (
    SELECT
      zoekt_node_id,
      COUNT(*) AS count
    FROM
      zoekt_tasks
    WHERE
      perform_at <= $1
      AND state IN (0, 1)
    GROUP BY
      zoekt_node_id
  )
  SELECT
    n.id AS node_id,
    n.metadata ->> 'name' AS node_name,
    COALESCE(tc.count, 0) AS task_count
  FROM
    zoekt_nodes n
  LEFT JOIN
    task_counts tc ON n.id = tc.zoekt_node_id
SQL
ZOEKT_NODES_QUERY =
<<~SQL.freeze
  SELECT schema_version, id FROM zoekt_nodes
SQL
ZOEKT_NODES_STATUS_QUERY =
<<~SQL.freeze
  SELECT
    id,
    CASE
      WHEN last_seen_at < NOW() - INTERVAL '2 minute' THEN 0
      ELSE 1
    END AS status
  FROM zoekt_nodes;
SQL
ZOEKT_REPOSITORY_SCHEMA_VERSION_QUERY =
<<~SQL.freeze
  SELECT
    COUNT(*)
  FROM
    zoekt_repositories
  INNER JOIN
    zoekt_indices
    ON zoekt_repositories.zoekt_index_id = zoekt_indices.id
  WHERE
    zoekt_indices.zoekt_node_id = $1
    AND zoekt_repositories.schema_version < $2
    AND zoekt_repositories.state = 10;
SQL
ZOEKT_ENABLED_QUERY =
<<~SQL.freeze
  SELECT
    zoekt_settings ->> 'zoekt_indexing_enabled' AS zoekt_indexing_enabled
  FROM application_settings
  ORDER BY ID DESC
  LIMIT 1
SQL

Constants inherited from Base

Base::POOL_SIZE, Base::POOL_TIMEOUT

Instance Method Summary collapse

Methods inherited from Base

configure_type_map_for_results, connection_pool, #connection_pool, #initialize, #with_connection_pool

Constructor Details

This class inherits a constructor from GitLab::Exporter::Database::Base

Instance Method Details

#runObject



66
67
68
69
70
71
72
73
74
# File 'lib/gitlab_exporter/database/zoekt.rb', line 66

def run
  return {} unless zoekt_indexing_enabled?

  {
    task_processing_query_result: execute(ZOEKT_TASKS_PROCESSING_QUERY, [Time.now.utc]),
    repositories_schema_version_query_result: repositories_schema_version_query_result,
    zoekt_nodes_status_query_result: execute(ZOEKT_NODES_STATUS_QUERY)
  }.compact
end