Class: Prefab::ConfigClient
- Inherits:
-
Object
- Object
- Prefab::ConfigClient
- Defined in:
- lib/prefab/config_client.rb
Constant Summary collapse
- RECONNECT_WAIT =
5
- DEFAULT_CHECKPOINT_FREQ_SEC =
60
Class Method Summary collapse
Instance Method Summary collapse
- #get(prop) ⇒ Object
-
#initialize(base_client, timeout) ⇒ ConfigClient
constructor
A new instance of ConfigClient.
- #reset ⇒ Object
- #to_s ⇒ Object
- #upsert(key, config_value, namespace = nil, previous_key = nil) ⇒ Object
Constructor Details
#initialize(base_client, timeout) ⇒ ConfigClient
Returns a new instance of ConfigClient.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/prefab/config_client.rb', line 6 def initialize(base_client, timeout) @base_client = base_client @timeout = timeout @initialization_lock = Concurrent::ReadWriteLock.new @checkpoint_freq_secs = (ENV["PREFAB_CHECKPOINT_FREQ_SEC"] || DEFAULT_CHECKPOINT_FREQ_SEC) @config_loader = Prefab::ConfigLoader.new(@base_client) @config_resolver = Prefab::ConfigResolver.new(@base_client, @config_loader) @initialization_lock.acquire_write_lock @s3 = Aws::S3::Resource.new(region: 'us-east-1') load_checkpoint start_api_connection_thread(@config_loader.highwater_mark) start_checkpointing_thread end |
Class Method Details
.value_to_delta(key, config_value, namespace = nil) ⇒ Object
53 54 55 56 |
# File 'lib/prefab/config_client.rb', line 53 def self.value_to_delta(key, config_value, namespace = nil) Prefab::ConfigDelta.new(key: [namespace, key].compact.join(":"), value: config_value) end |
Instance Method Details
#get(prop) ⇒ Object
24 25 26 27 28 |
# File 'lib/prefab/config_client.rb', line 24 def get(prop) @initialization_lock.with_read_lock do @config_resolver.get(prop) end end |
#reset ⇒ Object
44 45 46 47 |
# File 'lib/prefab/config_client.rb', line 44 def reset @base_client.reset! @_stub = nil end |
#to_s ⇒ Object
49 50 51 |
# File 'lib/prefab/config_client.rb', line 49 def to_s @config_resolver.to_s end |
#upsert(key, config_value, namespace = nil, previous_key = nil) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/prefab/config_client.rb', line 30 def upsert(key, config_value, namespace = nil, previous_key = nil) raise "Key must not contain ':' set namespaces separately" if key.include? ":" raise "Namespace must not contain ':'" if namespace&.include?(":") config_delta = Prefab::ConfigClient.value_to_delta(key, config_value, namespace) upsert_req = Prefab::UpsertRequest.new(config_delta: config_delta) upsert_req.previous_key = previous_key if previous_key&.present? @base_client.request Prefab::ConfigService, :upsert, req_options: { timeout: @timeout }, params: upsert_req @base_client.stats.increment("prefab.config.upsert") @config_loader.set(config_delta) @config_loader.rm(previous_key) if previous_key&.present? @config_resolver.update end |