racecar 2.0.0.alpha2 → 2.0.0.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +6 -2
- data/lib/racecar.rb +1 -7
- data/lib/racecar/consumer.rb +2 -2
- data/lib/racecar/consumer_set.rb +4 -3
- data/lib/racecar/message.rb +21 -0
- data/lib/racecar/null_instrumenter.rb +8 -0
- data/lib/racecar/runner.rb +3 -2
- data/lib/racecar/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb4a01b20ccfb91b90a44a87a51acfc9c60a484450a86b47e73a955761a41365
|
4
|
+
data.tar.gz: 73dfe494f6dd8b867f45b8346f0d2dce8ba91e56e40e83dbf967fb4a8f2c1841
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b2d334a5e2564c79ba4e1f91ba6ffd1e44001f52ec738d47e4c98096b0d76f6f203d14712b393739b1edbfc2af0e66f7809ed7018e63a777765e2e0f577eca5
|
7
|
+
data.tar.gz: c3ccceb024017953c57645678c1fa32a943d8a7dfdf2808d5066e22731ba75547483ddca686e2d00e9a1d5e6816cdd6b3d434d3723ce7722a8a3b7cf57410b5f
|
data/.github/workflows/ci.yml
CHANGED
@@ -7,14 +7,18 @@ jobs:
|
|
7
7
|
|
8
8
|
runs-on: ubuntu-latest
|
9
9
|
|
10
|
+
strategy:
|
11
|
+
matrix:
|
12
|
+
ruby-version: ["2.5.x", "2.6.x"]
|
13
|
+
|
10
14
|
steps:
|
11
15
|
- uses: actions/checkout@v1
|
12
16
|
- name: Set up Ruby 2.6
|
13
17
|
uses: actions/setup-ruby@v1
|
14
18
|
with:
|
15
|
-
ruby-version:
|
19
|
+
ruby-version: ${{ matrix.ruby-version }}
|
16
20
|
- name: Build and test with RSpec
|
17
21
|
run: |
|
18
22
|
gem install bundler --no-document
|
19
23
|
bundle install --jobs 4 --retry 3
|
20
|
-
bundle exec rspec --format documentation
|
24
|
+
bundle exec rspec --format documentation --require spec_helper --color
|
data/lib/racecar.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "logger"
|
2
2
|
|
3
|
+
require "racecar/null_instrumenter"
|
3
4
|
require "racecar/consumer"
|
4
5
|
require "racecar/consumer_set"
|
5
6
|
require "racecar/runner"
|
@@ -7,13 +8,6 @@ require "racecar/config"
|
|
7
8
|
require "ensure_hash_compact"
|
8
9
|
|
9
10
|
module Racecar
|
10
|
-
# Ignores all instrumentation events.
|
11
|
-
class NullInstrumenter
|
12
|
-
def self.instrument(*)
|
13
|
-
yield({}) if block_given?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
11
|
class Error < StandardError
|
18
12
|
end
|
19
13
|
|
data/lib/racecar/consumer.rb
CHANGED
@@ -48,7 +48,7 @@ module Racecar
|
|
48
48
|
protected
|
49
49
|
|
50
50
|
# https://github.com/appsignal/rdkafka-ruby#producing-messages
|
51
|
-
def produce(payload, topic:, key:, headers: nil)
|
51
|
+
def produce(payload, topic:, key:, headers: nil, create_time: nil)
|
52
52
|
@delivery_handles ||= []
|
53
53
|
|
54
54
|
extra_info = {
|
@@ -58,7 +58,7 @@ module Racecar
|
|
58
58
|
create_time: Time.now,
|
59
59
|
}
|
60
60
|
@instrumenter.instrument("produce_message.racecar", extra_info) do
|
61
|
-
@delivery_handles << @producer.produce(topic: topic, payload: payload, key: key, headers: headers)
|
61
|
+
@delivery_handles << @producer.produce(topic: topic, payload: payload, key: key, timestamp: create_time, headers: headers)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
data/lib/racecar/consumer_set.rb
CHANGED
@@ -15,13 +15,14 @@ module Racecar
|
|
15
15
|
retried ||= false
|
16
16
|
msg = current.poll(timeout_ms)
|
17
17
|
rescue Rdkafka::RdkafkaError => e
|
18
|
+
raise if retried
|
19
|
+
retried = true
|
20
|
+
|
18
21
|
@logger.error "Error for topic subscription #{current_subscription}: #{e}"
|
19
22
|
|
20
23
|
case e.code
|
21
|
-
when :max_poll_exceeded
|
24
|
+
when :max_poll_exceeded, :transport # -147, -195
|
22
25
|
reset_current_consumer
|
23
|
-
raise if retried
|
24
|
-
retried = true
|
25
26
|
retry
|
26
27
|
else
|
27
28
|
raise
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "forwardable"
|
2
|
+
|
3
|
+
module Racecar
|
4
|
+
class Message
|
5
|
+
extend Forwardable
|
6
|
+
|
7
|
+
def initialize(rdkafka_message)
|
8
|
+
@rdkafka_message = rdkafka_message
|
9
|
+
end
|
10
|
+
|
11
|
+
def_delegators :@rdkafka_message, :topic, :partition, :offset, :key, :value, :headers
|
12
|
+
|
13
|
+
def create_time
|
14
|
+
@rdkafka_message.timestamp
|
15
|
+
end
|
16
|
+
|
17
|
+
def ==(other)
|
18
|
+
@rdkafka_message == other.instance_variable_get(:@rdkafka_message)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/racecar/runner.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "rdkafka"
|
2
2
|
require "racecar/pause"
|
3
|
+
require "racecar/message"
|
3
4
|
|
4
5
|
module Racecar
|
5
6
|
class Runner
|
@@ -154,7 +155,7 @@ module Racecar
|
|
154
155
|
|
155
156
|
@instrumenter.instrument("process_message.racecar", payload) do
|
156
157
|
with_pause(message.topic, message.partition, message.offset..message.offset) do
|
157
|
-
processor.process(message)
|
158
|
+
processor.process(Racecar::Message.new(message))
|
158
159
|
processor.deliver!
|
159
160
|
consumer.store_offset(message)
|
160
161
|
end
|
@@ -173,7 +174,7 @@ module Racecar
|
|
173
174
|
@instrumenter.instrument("process_batch.racecar", payload) do
|
174
175
|
first, last = messages.first, messages.last
|
175
176
|
with_pause(first.topic, first.partition, first.offset..last.offset) do
|
176
|
-
processor.process_batch(messages)
|
177
|
+
processor.process_batch(messages.map {|message| Racecar::Message.new(message) })
|
177
178
|
processor.deliver!
|
178
179
|
consumer.store_offset(messages.last)
|
179
180
|
end
|
data/lib/racecar/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: racecar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.alpha3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schierbeck
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-09-
|
12
|
+
date: 2019-09-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: king_konf
|
@@ -139,6 +139,8 @@ files:
|
|
139
139
|
- lib/racecar/consumer_set.rb
|
140
140
|
- lib/racecar/ctl.rb
|
141
141
|
- lib/racecar/daemon.rb
|
142
|
+
- lib/racecar/message.rb
|
143
|
+
- lib/racecar/null_instrumenter.rb
|
142
144
|
- lib/racecar/pause.rb
|
143
145
|
- lib/racecar/rails_config_file_loader.rb
|
144
146
|
- lib/racecar/runner.rb
|