Sha256: 20c328c600a99106a25c9d5f484ed1b5f02f8a44300a2769cb9b7ad438ca2bab
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true require_relative 'periodic_sync' module Prefab class EvaluatedConfigsAggregator include Prefab::PeriodicSync attr_reader :data def initialize(client:, max_configs:, sync_interval:) @max_configs = max_configs @client = client @name = 'evaluated_configs_aggregator' @data = Concurrent::Array.new start_periodic_sync(sync_interval) end def push(evaluation) return if @data.size >= @max_configs @data.push(evaluation) end def prepare_data to_ship = @data.dup @data.clear to_ship.map { |e| coerce_to_proto(e) } end def coerce_to_proto(evaluation) config, result, context = evaluation PrefabProto::EvaluatedConfig.new( key: config.key, config_version: config.id, result: result, context: context.to_proto(@client.namespace), timestamp: Prefab::TimeHelpers.now_in_ms ) end private def flush(to_ship, _) @pool.post do log_internal "Uploading evaluated configs for #{to_ship.size}" configs = PrefabProto::EvaluatedConfigs.new(configs: to_ship) result = @client.post('/api/v1/evaluated-configs', configs) log_internal "Uploaded #{to_ship.size} configs: #{result.status}" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
prefab-cloud-ruby-0.24.5 | lib/prefab/evaluated_configs_aggregator.rb |
prefab-cloud-ruby-0.24.4 | lib/prefab/evaluated_configs_aggregator.rb |