upfluence-utils 0.6.0 → 0.7.1

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
  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