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 +4 -4
- data/lib/upfluence/http/endpoint/api_endpoint.rb +4 -0
- data/lib/upfluence/http/server.rb +6 -4
- data/lib/upfluence/utils.rb +1 -0
- data/lib/upfluence/utils/semaphore.rb +38 -0
- data/lib/upfluence/utils/thrift/middleware/connection_pooler.rb +21 -0
- data/lib/upfluence/utils/version.rb +1 -1
- data/rbutils.gemspec +2 -2
- metadata +11 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bf89bde520f3bb7e52d3b43d14a6e514a64ef00359acc7a83a8380487279be04
|
|
4
|
+
data.tar.gz: bddf013280ab4620b7c96da45e47572b96aefe1bf6909b85be6e2c1281f9c06b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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'
|
|
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
|
-
|
|
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
|
data/lib/upfluence/utils.rb
CHANGED
|
@@ -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
|
data/rbutils.gemspec
CHANGED
|
@@ -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', '~>
|
|
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.
|
|
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:
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|