upfluence-utils 0.6.0 → 0.7.1

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
  SHA256:
3
- metadata.gz: 6e33550cf48ab449c4ad663c314c37cf4afdabb79c388423af3aab6638482a6a
4
- data.tar.gz: 9809f710f12c5e457a148142241b5e26ba38df7b8c62b32dcec5ee492a901c28
3
+ metadata.gz: bf89bde520f3bb7e52d3b43d14a6e514a64ef00359acc7a83a8380487279be04
4
+ data.tar.gz: bddf013280ab4620b7c96da45e47572b96aefe1bf6909b85be6e2c1281f9c06b
5
5
  SHA512:
6
- metadata.gz: 90c56072e1ef3cc4a8665b747f5f6c5ba2b0fa6a7a6240cfefb91077a69508633a06a42c20250e0c947738493d9ef9cf511306a30f8708389815a913d88ef9b4
7
- data.tar.gz: 726244c5cabefe815f0c955c0a9a26100b49c2ec547a449eb894cefeac2c65e359ee79c97281f0f472851bf4778444391c1c392c1a405f17d012ea5bb820a90f
6
+ metadata.gz: 99694e5f48b6878ec4b47d0e1bbba0ca7b99e531e4224750ab9ebe7856d81dc902dc2026e99ea3c0d2dd17bc71e5c21a5ba906f092bf1fe2aa4e64d6413f7592
7
+ data.tar.gz: 19f50f74f14cbcc531a769d66b248b266b50e091e37e60b1b4f48a49a8022d63ca57b903a84fd69ce16df6a7164f5b24a7839b31213d10602b1de9f546920237
@@ -84,6 +84,10 @@ module Upfluence
84
84
  Sinatra::Base.not_found do
85
85
  [404, {}, { error: 'not_found' }.to_json]
86
86
  end
87
+
88
+ Sinatra::Base.error ActiveRecord::RecordInvalid do |e|
89
+ [422, Base::Exceptions::ValidationError.from_model(e.record).to_json]
90
+ end
87
91
  end
88
92
  end
89
93
  end
@@ -50,7 +50,7 @@ module Upfluence
50
50
  use Rack::ETag
51
51
  use Middleware::CORS if Upfluence.env.development?
52
52
 
53
- map '/healthcheck' do
53
+ map '/healthcheck' do
54
54
  run(opts[:healthcheck_endpoint] || Endpoint::Healthcheck.new)
55
55
  end
56
56
 
@@ -94,10 +94,12 @@ module Upfluence
94
94
  loop do
95
95
  sleep @options[:push_gateway_interval]
96
96
 
97
- push.replace Prometheus::Client.registry
97
+ begin
98
+ push.replace Prometheus::Client.registry
99
+ rescue => e
100
+ Upfluence.error_logger.notify(e)
101
+ end
98
102
  end
99
- rescue => e
100
- puts e
101
103
  end
102
104
  end
103
105
  end
@@ -1,5 +1,6 @@
1
1
  require 'upfluence/utils/version'
2
2
  require 'upfluence/utils/thrift'
3
+ require 'upfluence/utils/semaphore'
3
4
  require 'upfluence/logger'
4
5
  require 'upfluence/error_logger'
5
6
  require 'upfluence/environment'
@@ -0,0 +1,38 @@
1
+ module Upfluence
2
+ module Utils
3
+ class Semaphore
4
+ def initialize(size)
5
+ @size = size
6
+ @used = 0
7
+ @mutex = Mutex.new
8
+ @cond = ConditionVariable.new
9
+ end
10
+
11
+ def acquire(count = 1)
12
+ @mutex.synchronize do
13
+ loop do
14
+ break if @used + count <= @size
15
+
16
+ @cond.wait(@mutex)
17
+ end
18
+
19
+ @used += count
20
+ end
21
+ end
22
+
23
+ def release(count = 1)
24
+ @mutex.synchronize do
25
+ @used -= count
26
+ @cond.broadcast
27
+ end
28
+ end
29
+
30
+ def synchronize(count = 1, &block)
31
+ acquire(count)
32
+ block.call
33
+ ensure
34
+ release(count)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,21 @@
1
+ require 'active_record/base'
2
+
3
+ module Upfluence
4
+ module Utils
5
+ module Thrift
6
+ module Middleware
7
+ class ConnectionPooler
8
+ def initialize(app)
9
+ @app = app
10
+ end
11
+
12
+ def method_missing(method, *args, &block)
13
+ ActiveRecord::Base.connection_pool.with_connection do
14
+ @app.send(method, *args, &block)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.6.0'.freeze
3
+ VERSION = '0.7.1'.freeze
4
4
  end
5
5
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.add_development_dependency "bundler", "~> 1.12"
20
20
  spec.add_development_dependency "rake", "~> 10.0"
21
21
  spec.add_development_dependency "rspec", "~> 3.0"
22
- spec.add_runtime_dependency 'upfluence-thrift', '~> 1.0', '>= 1.0.3'
22
+ spec.add_runtime_dependency 'upfluence-thrift', '~> 2.1'
23
23
  spec.add_runtime_dependency 'base-thrift', '>= 0.1.0'
24
24
  spec.add_runtime_dependency 'sinatra'
25
25
  spec.add_runtime_dependency 'redis'
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.add_runtime_dependency 'puma'
30
30
  spec.add_runtime_dependency 'rack'
31
31
  spec.add_runtime_dependency 'stackprof'
32
- spec.add_runtime_dependency 'prometheus-client'
32
+ spec.add_runtime_dependency 'prometheus-client', '~> 0.9.0'
33
33
  spec.add_runtime_dependency 'userializer'
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-10 00:00:00.000000000 Z
11
+ date: 2020-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,20 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 1.0.3
61
+ version: '2.1'
65
62
  type: :runtime
66
63
  prerelease: false
67
64
  version_requirements: !ruby/object:Gem::Requirement
68
65
  requirements:
69
66
  - - "~>"
70
67
  - !ruby/object:Gem::Version
71
- version: '1.0'
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.0.3
68
+ version: '2.1'
75
69
  - !ruby/object:Gem::Dependency
76
70
  name: base-thrift
77
71
  requirement: !ruby/object:Gem::Requirement
@@ -202,16 +196,16 @@ dependencies:
202
196
  name: prometheus-client
203
197
  requirement: !ruby/object:Gem::Requirement
204
198
  requirements:
205
- - - ">="
199
+ - - "~>"
206
200
  - !ruby/object:Gem::Version
207
- version: '0'
201
+ version: 0.9.0
208
202
  type: :runtime
209
203
  prerelease: false
210
204
  version_requirements: !ruby/object:Gem::Requirement
211
205
  requirements:
212
- - - ">="
206
+ - - "~>"
213
207
  - !ruby/object:Gem::Version
214
- version: '0'
208
+ version: 0.9.0
215
209
  - !ruby/object:Gem::Dependency
216
210
  name: userializer
217
211
  requirement: !ruby/object:Gem::Requirement
@@ -265,9 +259,11 @@ files:
265
259
  - lib/upfluence/pool.rb
266
260
  - lib/upfluence/utils.rb
267
261
  - lib/upfluence/utils/http/middleware/null.rb
262
+ - lib/upfluence/utils/semaphore.rb
268
263
  - lib/upfluence/utils/thrift.rb
269
264
  - lib/upfluence/utils/thrift/middleware.rb
270
265
  - lib/upfluence/utils/thrift/middleware/active_record.rb
266
+ - lib/upfluence/utils/thrift/middleware/connection_pooler.rb
271
267
  - lib/upfluence/utils/thrift/middleware/error_catcher.rb
272
268
  - lib/upfluence/utils/thrift/middleware/request_logger.rb
273
269
  - lib/upfluence/utils/thrift/middleware/timeout.rb
@@ -292,8 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
288
  - !ruby/object:Gem::Version
293
289
  version: '0'
294
290
  requirements: []
295
- rubyforge_project:
296
- rubygems_version: 2.7.3
291
+ rubygems_version: 3.0.3
297
292
  signing_key:
298
293
  specification_version: 4
299
294
  summary: Upfluence common utils for Ruby projects