Class: ElasticGraph::HealthCheck::HealthChecker
- Inherits:
-
Object
- Object
- ElasticGraph::HealthCheck::HealthChecker
- Defined in:
- lib/elastic_graph/health_check/health_checker.rb
Class Method Summary collapse
-
.build_from(graphql) ⇒ Object
Static factory method that builds a HealthChecker from an ElasticGraph::GraphQL instance.
Instance Method Summary collapse
- #check_health ⇒ Object
-
#initialize(schema:, config:, datastore_search_router:, datastore_query_builder:, datastore_clients_by_name:, clock:, logger:) ⇒ HealthChecker
constructor
A new instance of HealthChecker.
Constructor Details
#initialize(schema:, config:, datastore_search_router:, datastore_query_builder:, datastore_clients_by_name:, clock:, logger:) ⇒ HealthChecker
Returns a new instance of HealthChecker.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/elastic_graph/health_check/health_checker.rb', line 33 def initialize( schema:, config:, datastore_search_router:, datastore_query_builder:, datastore_clients_by_name:, clock:, logger: ) @schema = schema @datastore_search_router = datastore_search_router @datastore_query_builder = datastore_query_builder @datastore_clients_by_name = datastore_clients_by_name @clock = clock @logger = logger @indexed_document_types_by_name = @schema.indexed_document_types.to_h { |t| [t.name.to_s, t] } @config = validate_and_normalize_config(config) end |
Class Method Details
.build_from(graphql) ⇒ Object
Static factory method that builds a HealthChecker from an ElasticGraph::GraphQL instance.
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/elastic_graph/health_check/health_checker.rb', line 21 def self.build_from(graphql) new( schema: graphql.schema, config: HealthCheck::Config.from_parsed_yaml(graphql.config.extension_settings) || HealthCheck::Config.new, datastore_search_router: graphql.datastore_search_router, datastore_query_builder: graphql.datastore_query_builder, datastore_clients_by_name: graphql.datastore_core.clients_by_name, clock: graphql.clock, logger: graphql.logger ) end |
Instance Method Details
#check_health ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/elastic_graph/health_check/health_checker.rb', line 53 def check_health recency_queries_by_type_name = @config.data_recency_checks.to_h do |type_name, recency_config| [type_name, build_recency_query_for(type_name, recency_config)] end recency_results_by_query, *cluster_healths = execute_in_parallel( lambda { datastore_msearch(recency_queries_by_type_name) }, *@config.clusters_to_consider.map do |cluster| lambda { [cluster, @datastore_clients_by_name.fetch(cluster).get_cluster_health] } end ) HealthStatus.new( cluster_health_by_name: build_cluster_health_by_name(cluster_healths.to_h), latest_record_by_type: build_latest_record_by_type(recency_results_by_query, recency_queries_by_type_name) ) end |