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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 573f74b3f0d3abb27104d089bde5e582621b1b5327d571dd8eab7e97b9c477ed
4
- data.tar.gz: 3c69e8d7aa3c41f6fa654a85200989d76c0648777aa3d6cef240357e2ed5ef6f
3
+ metadata.gz: eb4a01b20ccfb91b90a44a87a51acfc9c60a484450a86b47e73a955761a41365
4
+ data.tar.gz: 73dfe494f6dd8b867f45b8346f0d2dce8ba91e56e40e83dbf967fb4a8f2c1841
5
5
  SHA512:
6
- metadata.gz: 699af7a2aa22fcd77cb5ae143905e4883779fa281d7870d56be3c3b828ac6cfafdf47a358a0443d72be7ec5794a728bdd59d236af0de4e221d9da5ac65ebf973
7
- data.tar.gz: 4daec772b0d35f785f40fb118c84395f74f6cddc83481225d786546485a9beb4a8311c9a74eac7d172772b2c0a259b5a244033aeb97f89b43d52bf66d13aa84a
6
+ metadata.gz: 5b2d334a5e2564c79ba4e1f91ba6ffd1e44001f52ec738d47e4c98096b0d76f6f203d14712b393739b1edbfc2af0e66f7809ed7018e63a777765e2e0f577eca5
7
+ data.tar.gz: c3ccceb024017953c57645678c1fa32a943d8a7dfdf2808d5066e22731ba75547483ddca686e2d00e9a1d5e6816cdd6b3d434d3723ce7722a8a3b7cf57410b5f
@@ -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: 2.6.x
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
@@ -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
 
@@ -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
 
@@ -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
@@ -0,0 +1,8 @@
1
+ module Racecar
2
+ # Ignores all instrumentation events.
3
+ class NullInstrumenter
4
+ def self.instrument(*)
5
+ yield({}) if block_given?
6
+ end
7
+ end
8
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Racecar
2
- VERSION = "2.0.0.alpha2"
2
+ VERSION = "2.0.0.alpha3"
3
3
  end
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.alpha2
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-03 00:00:00.000000000 Z
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