upperkut 0.7.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/.circleci/config.yml +2 -0
- data/.codeclimate.yml +15 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/examples/basic.rb +1 -1
- data/examples/with_middlewares.rb +2 -2
- data/lib/upperkut.rb +5 -1
- data/lib/upperkut/batch_execution.rb +0 -1
- data/lib/upperkut/cli.rb +1 -1
- data/lib/upperkut/logging.rb +2 -4
- data/lib/upperkut/middleware.rb +1 -0
- data/lib/upperkut/middlewares/datadog.rb +11 -0
- data/lib/upperkut/middlewares/rollbar.rb +3 -4
- data/lib/upperkut/processor.rb +1 -0
- data/lib/upperkut/redis_pool.rb +7 -8
- data/lib/upperkut/strategies/base.rb +2 -2
- data/lib/upperkut/strategies/buffered_queue.rb +8 -5
- data/lib/upperkut/util.rb +1 -1
- data/lib/upperkut/version.rb +1 -1
- data/upperkut.gemspec +1 -2
- metadata +22 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8a422257ff9efd3c1cc0f5cc8ca940c31b77df381a549ca1ad9e0fd59919eba
|
4
|
+
data.tar.gz: 3e6bfc18b1c2890a033dc5b301e4009eeeccdd026ae6c040be5f8d7f551bd8b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d8b525f86a878faae9cd8297c75120c1a883b9b6652f6f39669fa6c428055966ae151b1de7115d5e54c5e593fe5e15df499985757e1ea619298aa3098dd71b7
|
7
|
+
data.tar.gz: 403e4c6cdd0da351bedbd0daeddf96ab8f06269ce3d09a4468c0c996a6a22b55a9af7d3f75fd7aafdca9e867b4ddffc83e0bb55cd24b05519e654421c2df7f8c
|
data/.circleci/config.yml
CHANGED
data/.codeclimate.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
0.7.x
|
4
4
|
---------
|
5
|
+
- Added Datahog middleware #42 by @gabriel-augusto
|
6
|
+
- Added redis to CI #40 by #henrich-m
|
7
|
+
- Specs improvements #34 and #35, #37 by @gabriel-augusto
|
8
|
+
- Enable Rubocop #32 by @henrich-m
|
9
|
+
- Added codeclimate #31 by @henrich-m
|
10
|
+
|
11
|
+
|
5
12
|
- Extract Buffered Queue behavior to its own strategy #29
|
6
13
|
|
7
14
|
0.6.x
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -68,7 +68,7 @@ Examples:
|
|
68
68
|
|
69
69
|
## Development
|
70
70
|
|
71
|
-
After checking out the repo, run `
|
71
|
+
After checking out the repo, run `bundle install` to install dependencies. Then, run `bundle exec rspec` to run the tests.
|
72
72
|
|
73
73
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
74
74
|
|
data/examples/basic.rb
CHANGED
data/lib/upperkut.rb
CHANGED
@@ -89,9 +89,13 @@ module Upperkut
|
|
89
89
|
chain.add(Upperkut::Middlewares::Rollbar)
|
90
90
|
end
|
91
91
|
|
92
|
+
if defined?(Datadog)
|
93
|
+
require_relative 'upperkut/middlewares/datadog'
|
94
|
+
chain.add(Upperkut::Middlewares::Datadog)
|
95
|
+
end
|
96
|
+
|
92
97
|
chain
|
93
98
|
end
|
94
|
-
|
95
99
|
end
|
96
100
|
|
97
101
|
# Error class responsible to signal the shutdown process
|
data/lib/upperkut/cli.rb
CHANGED
@@ -18,7 +18,7 @@ module Upperkut
|
|
18
18
|
require 'rails'
|
19
19
|
if ::Rails::VERSION::MAJOR == 4
|
20
20
|
require File.expand_path("#{@options[:require]}/config/application.rb")
|
21
|
-
::Rails::Application.initializer
|
21
|
+
::Rails::Application.initializer 'upperkut.eager_load' do
|
22
22
|
::Rails.application.config.eager_load = true
|
23
23
|
end
|
24
24
|
|
data/lib/upperkut/logging.rb
CHANGED
@@ -4,9 +4,8 @@ require 'socket'
|
|
4
4
|
|
5
5
|
module Upperkut
|
6
6
|
module Logging
|
7
|
-
|
8
7
|
class DefaultFormatter < Logger::Formatter
|
9
|
-
def call(severity, time,
|
8
|
+
def call(severity, time, _program_name, message)
|
10
9
|
"upperkut: #{time.utc.iso8601(3)} hostname=#{Socket.gethostname} "\
|
11
10
|
"pid=#{::Process.pid} severity=#{severity} #{format_message(message)}\n"
|
12
11
|
end
|
@@ -16,11 +15,10 @@ module Upperkut
|
|
16
15
|
def format_message(message)
|
17
16
|
return "msg=#{message} " unless message.is_a?(Hash)
|
18
17
|
|
19
|
-
message.each_with_object('') do |(k,v), memo|
|
18
|
+
message.each_with_object('') do |(k, v), memo|
|
20
19
|
memo << "#{k}=#{v}\s"
|
21
20
|
memo
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
data/lib/upperkut/middleware.rb
CHANGED
@@ -14,13 +14,12 @@ module Upperkut
|
|
14
14
|
def handle_exception(e, worker, items)
|
15
15
|
scope = {
|
16
16
|
framework: "Upperkut #{::Upperkut::VERSION}",
|
17
|
-
request:
|
18
|
-
context:
|
17
|
+
request: { params: { items_size: items.size } },
|
18
|
+
context: worker.name
|
19
19
|
}
|
20
20
|
|
21
|
-
::Rollbar.scope(scope).error(e, :
|
21
|
+
::Rollbar.scope(scope).error(e, use_exception_level_filters: true)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
data/lib/upperkut/processor.rb
CHANGED
data/lib/upperkut/redis_pool.rb
CHANGED
@@ -3,14 +3,13 @@ require 'redis'
|
|
3
3
|
|
4
4
|
module Upperkut
|
5
5
|
class RedisPool
|
6
|
-
|
7
6
|
DEFAULT_OPTIONS = {
|
8
|
-
pool_timeout:
|
9
|
-
size:
|
10
|
-
connect_timeout:
|
11
|
-
read_timeout:
|
12
|
-
write_timeout:
|
13
|
-
url:
|
7
|
+
pool_timeout: 1, # pool related option
|
8
|
+
size: 2, # pool related option
|
9
|
+
connect_timeout: 0.2,
|
10
|
+
read_timeout: 5.0,
|
11
|
+
write_timeout: 0.5,
|
12
|
+
url: ENV['REDIS_URL']
|
14
13
|
}.freeze
|
15
14
|
|
16
15
|
def initialize(options)
|
@@ -22,7 +21,7 @@ module Upperkut
|
|
22
21
|
end
|
23
22
|
|
24
23
|
def create
|
25
|
-
ConnectionPool.new(:
|
24
|
+
ConnectionPool.new(timeout: @pool_timeout, size: @size) do
|
26
25
|
Redis.new(@options)
|
27
26
|
end
|
28
27
|
end
|
@@ -6,7 +6,7 @@ module Upperkut
|
|
6
6
|
# items - The Array of items do be inserted.
|
7
7
|
#
|
8
8
|
# Returns true when success, raise when error.
|
9
|
-
def push_items(
|
9
|
+
def push_items(_items = [])
|
10
10
|
raise NotImplementedError
|
11
11
|
end
|
12
12
|
|
@@ -15,7 +15,7 @@ module Upperkut
|
|
15
15
|
# batch_size: # of items to be retrieved.
|
16
16
|
#
|
17
17
|
# Returns an Array containing events as hash.
|
18
|
-
def fetch_items(
|
18
|
+
def fetch_items(_batch_size)
|
19
19
|
raise NotImplementedError
|
20
20
|
end
|
21
21
|
|
@@ -10,7 +10,7 @@ module Upperkut
|
|
10
10
|
attr_reader :options
|
11
11
|
|
12
12
|
def initialize(worker, options = {})
|
13
|
-
@options
|
13
|
+
@options = options
|
14
14
|
@redis_options = options.fetch(:redis, {})
|
15
15
|
@redis_pool = setup_redis_pool
|
16
16
|
@worker = worker
|
@@ -30,6 +30,7 @@ module Upperkut
|
|
30
30
|
def push_items(items = [])
|
31
31
|
items = [items] if items.is_a?(Hash)
|
32
32
|
return false if items.empty?
|
33
|
+
|
33
34
|
redis do |conn|
|
34
35
|
conn.rpush(key, encode_json_items(items))
|
35
36
|
end
|
@@ -56,7 +57,7 @@ module Upperkut
|
|
56
57
|
def metrics
|
57
58
|
{
|
58
59
|
'latency' => latency,
|
59
|
-
'size'
|
60
|
+
'size' => size
|
60
61
|
}
|
61
62
|
end
|
62
63
|
|
@@ -76,6 +77,7 @@ module Upperkut
|
|
76
77
|
|
77
78
|
def fulfill_condition?(buff_size)
|
78
79
|
return false if buff_size.zero?
|
80
|
+
|
79
81
|
buff_size >= @batch_size || @waiting_time >= @max_wait
|
80
82
|
end
|
81
83
|
|
@@ -89,19 +91,20 @@ module Upperkut
|
|
89
91
|
item = redis { |conn| conn.lrange(key, 0, 0) }
|
90
92
|
item = decode_json_items(item).first
|
91
93
|
return 0 unless item
|
94
|
+
|
92
95
|
now = Time.now.to_f
|
93
96
|
now - item.fetch('enqueued_at', Time.now).to_f
|
94
97
|
end
|
95
98
|
|
96
|
-
|
97
|
-
|
98
99
|
def setup_redis_pool
|
99
100
|
return @redis_options if @redis_options.is_a?(ConnectionPool)
|
101
|
+
|
100
102
|
RedisPool.new(options.fetch(:redis, {})).create
|
101
103
|
end
|
102
104
|
|
103
105
|
def redis
|
104
|
-
raise ArgumentError,
|
106
|
+
raise ArgumentError, 'requires a block' unless block_given?
|
107
|
+
|
105
108
|
@redis_pool.with do |conn|
|
106
109
|
yield conn
|
107
110
|
end
|
data/lib/upperkut/util.rb
CHANGED
data/lib/upperkut/version.rb
CHANGED
data/upperkut.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'upperkut/version'
|
@@ -22,8 +21,8 @@ Gem::Specification.new do |spec|
|
|
22
21
|
|
23
22
|
spec.required_ruby_version = '>= 2.2.2'
|
24
23
|
|
25
|
-
spec.add_dependency 'redis', '>= 3.3.3', '< 5'
|
26
24
|
spec.add_dependency 'connection_pool', '~> 2.2', '>= 2.2.2'
|
25
|
+
spec.add_dependency 'redis', '>= 3.3.3', '< 5'
|
27
26
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
28
27
|
spec.add_development_dependency 'rake', '~> 10.0'
|
29
28
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upperkut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Sousa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: connection_pool
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
- - "
|
19
|
+
version: '2.2'
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 2.2.2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "
|
27
|
+
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
- - "
|
29
|
+
version: '2.2'
|
30
|
+
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 2.2.2
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: redis
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '2.2'
|
40
37
|
- - ">="
|
41
38
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
39
|
+
version: 3.3.3
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '5'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '2.2'
|
50
47
|
- - ">="
|
51
48
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
49
|
+
version: 3.3.3
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '5'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: bundler
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,6 +101,7 @@ extensions: []
|
|
101
101
|
extra_rdoc_files: []
|
102
102
|
files:
|
103
103
|
- ".circleci/config.yml"
|
104
|
+
- ".codeclimate.yml"
|
104
105
|
- ".gitignore"
|
105
106
|
- ".rspec"
|
106
107
|
- CHANGELOG.md
|
@@ -120,6 +121,7 @@ files:
|
|
120
121
|
- lib/upperkut/logging.rb
|
121
122
|
- lib/upperkut/manager.rb
|
122
123
|
- lib/upperkut/middleware.rb
|
124
|
+
- lib/upperkut/middlewares/datadog.rb
|
123
125
|
- lib/upperkut/middlewares/new_relic.rb
|
124
126
|
- lib/upperkut/middlewares/rollbar.rb
|
125
127
|
- lib/upperkut/processor.rb
|