Sha256: 5449d3071f73d4e6d235ac20e9ee93f69871eb0059c7f2c3c7097b5b9e7cab0f
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
module Prefab class ConfigClient RECONNECT_WAIT = 5 def initialize(base_client, timeout) @base_client = base_client @timeout = timeout @config_resolver = EzConfig::ConfigResolver.new(base_client) boot_resolver end def get(prop) @config_resolver.get(prop) end def set(config_delta) Retry.it method(:stub_with_timout), :upsert, config_delta, @timeout @config_resolver.set(config_delta) end def to_s @config_resolver.to_s end private def stub Prefab::ConfigService::Stub.new(nil, nil, channel_override: @base_client.channel, interceptors: [@base_client.interceptor]) end def stub_with_timout Prefab::ConfigService::Stub.new(nil, nil, channel_override: @base_client.channel, timeout: @timeout, interceptors: [@base_client.interceptor]) end def boot_resolver config_req = Prefab::ConfigServicePointer.new(account_id: @base_client.account_id, start_at_id: 0) Thread.new do while true do begin resp = stub.get_config(config_req) resp.each do |r| r.deltas.each do |delta| @config_resolver.set(delta, do_update: false) end @config_resolver.update end rescue => e sleep(RECONNECT_WAIT) @base_client.logger.info("config client encountered #{e.message} pausing #{RECONNECT_WAIT}") end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prefab-cloud-ruby-0.0.9 | lib/prefab/config_client.rb |