prefab-cloud-ruby 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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