racecar 2.0.0.alpha2 → 2.0.0.alpha3

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