prefab-cloud-ruby 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c342824c82e95d283502c651dc00f331cf16d60
4
- data.tar.gz: c0bd693c52c833155ba15b64fffe73addcb09786
3
+ metadata.gz: 21650fb9bfd13dc3d1b8e0e2a6c826e97ff8cce9
4
+ data.tar.gz: 502213b0d3394afb96427fb54a52113d7672981d
5
5
  SHA512:
6
- metadata.gz: 369f79bd3bdec23b408b1d01dcba47e54b7ba72fdc8c4d0bc09032ec118cf18262839b0a9d8a1e7a220a593824bfac205ccec63498df940f1cfd8f54679f0d1d
7
- data.tar.gz: 48a74a43324b96a9fe22c8d040ab69edf19285ee64ac2352b102eff70ec3777a89146f8a363e1fdf74ed5ee5c1fd3b19eea937396ac1f425c70297f33d668b01
6
+ metadata.gz: 7364cfd35d713e3144bb6fbcabe89807c92dad4e1a06523d717e23ee2dfa78a227f64b2e9e9668306ed23fca1c250331fc263a52021881a9c3218c5d62585f9b
7
+ data.tar.gz: 1546ee4f08a823292765fb322ad922d2b87892276d034fdcaec1ba4cddb29c4100d4f8863c5bbef10960cda0b18eae4e4933e5398170b2394b4f9f2c16c7195c
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
@@ -12,6 +12,7 @@ require 'prefab/config_client'
12
12
  require 'prefab/feature_flag_client'
13
13
  require 'prefab/logger_client'
14
14
  require 'prefab/auth_interceptor'
15
+ require 'prefab/cancellable_interceptor'
15
16
  require 'prefab/noop_cache'
16
17
  require 'prefab/noop_stats'
17
18
  require 'prefab/murmer3'
@@ -1,29 +1,31 @@
1
- class AuthInterceptor < GRPC::ClientInterceptor
2
- def initialize(api_key)
3
- version = File.exist?('VERSION') ? File.read('VERSION').chomp : ""
4
- @client = "prefab-cloud-ruby.#{version}".freeze
5
- @api_key = api_key
6
- end
1
+ module Prefab
2
+ class AuthInterceptor < GRPC::ClientInterceptor
3
+ def initialize(api_key)
4
+ version = File.exist?('VERSION') ? File.read('VERSION').chomp : ""
5
+ @client = "prefab-cloud-ruby.#{version}".freeze
6
+ @api_key = api_key
7
+ end
7
8
 
8
- def request_response(request:, call:, method:, metadata:, &block)
9
- shared(metadata, &block)
10
- end
9
+ def request_response(request:, call:, method:, metadata:, &block)
10
+ shared(metadata, &block)
11
+ end
11
12
 
12
- def client_streamer(requests:, call:, method:, metadata:, &block)
13
- shared(metadata, &block)
14
- end
13
+ def client_streamer(requests:, call:, method:, metadata:, &block)
14
+ shared(metadata, &block)
15
+ end
15
16
 
16
- def server_streamer(request:, call:, method:, metadata:, &block)
17
- shared(metadata, &block)
18
- end
17
+ def server_streamer(request:, call:, method:, metadata:, &block)
18
+ shared(metadata, &block)
19
+ end
19
20
 
20
- def bidi_streamer(requests:, call:, method:, metadata:, &block)
21
- shared(metadata, &block)
22
- end
21
+ def bidi_streamer(requests:, call:, method:, metadata:, &block)
22
+ shared(metadata, &block)
23
+ end
23
24
 
24
- def shared(metadata)
25
- metadata['auth'] = @api_key
26
- metadata['client'] = @client
27
- yield
25
+ def shared(metadata)
26
+ metadata['auth'] = @api_key
27
+ metadata['client'] = @client
28
+ yield
29
+ end
28
30
  end
29
31
  end
@@ -0,0 +1,29 @@
1
+ module Prefab
2
+ class CancellableInterceptor < GRPC::ClientInterceptor
3
+
4
+ def cancel
5
+ @call.instance_variable_get("@wrapped").instance_variable_get("@call").cancel
6
+ end
7
+
8
+ def request_response(request:, call:, method:, metadata:, &block)
9
+ shared(call, &block)
10
+ end
11
+
12
+ def client_streamer(requests:, call:, method:, metadata:, &block)
13
+ shared(call, &block)
14
+ end
15
+
16
+ def server_streamer(request:, call:, method:, metadata:, &block)
17
+ shared(call, &block)
18
+ end
19
+
20
+ def bidi_streamer(requests:, call:, method:, metadata:, &block)
21
+ shared(call, &block)
22
+ end
23
+
24
+ def shared(call)
25
+ @call = call
26
+ yield
27
+ end
28
+ end
29
+ end
data/lib/prefab/client.rb CHANGED
@@ -27,7 +27,7 @@ module Prefab
27
27
  @api_key = api_key
28
28
  @account_id = api_key.split("|")[0].to_i
29
29
  @namespace = namespace
30
- @interceptor = AuthInterceptor.new(api_key)
30
+ @interceptor = Prefab::AuthInterceptor.new(api_key)
31
31
  @stubs = {}
32
32
 
33
33
  at_exit do
@@ -91,13 +91,13 @@ module Prefab
91
91
  "prefab:#{account_id}:#{post_fix}"
92
92
  end
93
93
 
94
- private
95
-
96
94
  def reset!
97
95
  @stubs.clear
98
96
  @_channel = nil
99
97
  end
100
98
 
99
+ private
100
+
101
101
  def stub_for(service, timeout)
102
102
  @stubs["#{service}_#{timeout}"] ||= service::Stub.new(nil,
103
103
  nil,
@@ -16,12 +16,18 @@ module Prefab
16
16
 
17
17
  @initialization_lock.acquire_write_lock
18
18
 
19
+ @cancellable_interceptor = Prefab::CancellableInterceptor.new
20
+
19
21
  @s3_cloud_front = ENV["PREFAB_S3CF_BUCKET"] || DEFAULT_S3CF_BUCKET
20
22
  load_checkpoint
21
23
  start_checkpointing_thread
22
24
  end
23
25
 
24
26
  def start_streaming
27
+ at_exit do
28
+ @cancellable_interceptor.cancel
29
+ end
30
+
25
31
  start_api_connection_thread(@config_loader.highwater_mark)
26
32
  end
27
33
 
@@ -65,7 +71,7 @@ module Prefab
65
71
  @_stub = Prefab::ConfigService::Stub.new(nil,
66
72
  nil,
67
73
  channel_override: @base_client.channel,
68
- interceptors: [@base_client.interceptor])
74
+ interceptors: [@base_client.interceptor, @cancellable_interceptor])
69
75
  end
70
76
 
71
77
  # Bootstrap out of the cache
@@ -166,7 +172,8 @@ module Prefab
166
172
  finish_init!(:streaming)
167
173
  end
168
174
  rescue => e
169
- @base_client.log_internal Logger::INFO, ("config client encountered #{e.message} pausing #{RECONNECT_WAIT}")
175
+ level = e.code == 1 ? Logger::DEBUG : Logger::INFO
176
+ @base_client.log_internal level, ("config client encountered #{e.message} pausing #{RECONNECT_WAIT}")
170
177
  reset
171
178
  sleep(RECONNECT_WAIT)
172
179
  end
@@ -55,7 +55,7 @@ module Prefab
55
55
 
56
56
  def load_local_overrides
57
57
  override_dir = ENV['PREFAB_CONFIG_OVERRIDE_DIR'] || Dir.home
58
- load_glob(File.join(override_dir, ".prefab*config-overrides.yaml"))
58
+ load_glob(File.join(override_dir, ".prefab*config.yaml"))
59
59
  end
60
60
 
61
61
  def load_glob(glob)
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: prefab-cloud-ruby 0.4.0 ruby lib
5
+ # stub: prefab-cloud-ruby 0.5.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "prefab-cloud-ruby".freeze
9
- s.version = "0.4.0"
9
+ s.version = "0.5.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Jeff Dwyer".freeze]
14
- s.date = "2019-02-16"
14
+ s.date = "2019-02-23"
15
15
  s.description = "RateLimits & Config as a service".freeze
16
16
  s.email = "jdwyer@prefab.cloud".freeze
17
17
  s.extra_rdoc_files = [
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "compile_protos.sh",
31
31
  "lib/prefab-cloud-ruby.rb",
32
32
  "lib/prefab/auth_interceptor.rb",
33
+ "lib/prefab/cancellable_interceptor.rb",
33
34
  "lib/prefab/client.rb",
34
35
  "lib/prefab/config_client.rb",
35
36
  "lib/prefab/config_loader.rb",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prefab-cloud-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Dwyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-16 00:00:00.000000000 Z
11
+ date: 2019-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -161,6 +161,7 @@ files:
161
161
  - compile_protos.sh
162
162
  - lib/prefab-cloud-ruby.rb
163
163
  - lib/prefab/auth_interceptor.rb
164
+ - lib/prefab/cancellable_interceptor.rb
164
165
  - lib/prefab/client.rb
165
166
  - lib/prefab/config_client.rb
166
167
  - lib/prefab/config_loader.rb