racecar 2.6.0 → 2.8.2

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: d0bbfee00d05236ed92c00a93176b230086eb91d1eba33a567a6afef91998851
4
- data.tar.gz: f787c5a8ed72301351c8dc6428bd02303f4489cbfe98133f60c546f39f6bf2cf
3
+ metadata.gz: 4cbf6ca4837bdd3893c8342936f9d5ea115a5b3a585e0c843e62171e00038e72
4
+ data.tar.gz: d8603c46cf801d0f41f017d5b27b35e0d2b195eec5be11a1f7b6bf77413726b4
5
5
  SHA512:
6
- metadata.gz: 7fd5d70a55050add5a8862d32717ecdadb3d75d9cab93b2d89d8be9bd543bd31ded571ce8685d6db8f7ee5b0997520fe21986046c72a656e4323c0e923de4c5e
7
- data.tar.gz: 5e6f929613dda6118cade9b5d486883f935ec8b18538860b4edd4439f460c10a0dda9eb296195b9cef5b87750c9e9ca268f6b8fe2166deb9b64e597d9adddd85
6
+ metadata.gz: 78bdedfe7bd888a3716f5a29f28810f4c4d2f03e43c33b8e47ed08607155211fca1d47f4eab6a4f0def6976bb7ca3263117e52d2e0fa7f0a721c56ec70c7ee3d
7
+ data.tar.gz: 2bf6e2b50980add68363b59718f54403caada58abcb404a9018ac4304519bbbb7ed920578d37bcadefad63964812e7374d367298f403577725eef79af269c604
@@ -0,0 +1,17 @@
1
+ version: 2
2
+ registries:
3
+ artifactory:
4
+ type: rubygems-server
5
+ url: ${{secrets.ARTIFACTORY_URL}}
6
+ username: ${{secrets.ARTIFACTORY_USERNAME}}
7
+ password: ${{secrets.ARTIFACTORY_API_KEY}}
8
+ updates:
9
+ - package-ecosystem: "bundler"
10
+ vendor: true
11
+ directory: "/"
12
+ registries:
13
+ - artifactory
14
+ schedule:
15
+ interval: "daily"
16
+ allow:
17
+ - dependency-type: "direct" # only explicitly defined dependencies.
@@ -12,7 +12,7 @@ jobs:
12
12
 
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: ["2.4", "2.5", "2.6", "3.0"]
15
+ ruby-version: ["2.6", "3.0"]
16
16
 
17
17
  steps:
18
18
  - uses: zendesk/checkout@v2
data/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v2.8.2
6
+ * Handles ErroneousStateError, in previous versions the consumer would do several unecessary group leave/joins. The log level is also changed to WARN instead of ERROR. ([#285](https://github.com/zendesk/racecar/pull/295))
7
+
8
+ ## v2.8.1
9
+ * Adds new ErroneousStateError to racecar in order to give more information on this new possible exception.
10
+
11
+ ## v2.8.0
12
+ * Update librdkafka version from 1.8.2 to 1.9.0 by upgrading from rdkafka 0.10.0 to 0.12.0. ([#283](https://github.com/zendesk/racecar/pull/293))
13
+
14
+ ## v2.7.0
15
+
16
+ * Update librdkafka version from 1.5.0 to 1.8.2 by upgrading from rdkafka 0.10.0 to 0.11.1. ([#283](https://github.com/zendesk/racecar/pull/283))
17
+ * Bumps minimum required Ruby version to 2.6
18
+
5
19
  ## v2.6.0
6
20
 
7
21
  * Add capability to specify partition number when producing messages
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- racecar (2.6.0)
4
+ racecar (2.8.2.beta)
5
5
  king_konf (~> 1.0.0)
6
- rdkafka (~> 0.10.0)
6
+ rdkafka (~> 0.12.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -22,16 +22,16 @@ GEM
22
22
  concurrent-ruby (~> 1.0)
23
23
  king_konf (1.0.0)
24
24
  method_source (1.0.0)
25
- mini_portile2 (2.7.1)
25
+ mini_portile2 (2.8.0)
26
26
  minitest (5.14.4)
27
27
  pry (0.13.1)
28
28
  coderay (~> 1.1)
29
29
  method_source (~> 1.0)
30
30
  rake (13.0.1)
31
- rdkafka (0.10.0)
32
- ffi (~> 1.9)
33
- mini_portile2 (~> 2.1)
34
- rake (>= 12.3)
31
+ rdkafka (0.12.0)
32
+ ffi (~> 1.15)
33
+ mini_portile2 (~> 2.6)
34
+ rake (> 12)
35
35
  rspec (3.10.0)
36
36
  rspec-core (~> 3.10.0)
37
37
  rspec-expectations (~> 3.10.0)
@@ -64,4 +64,4 @@ DEPENDENCIES
64
64
  timecop
65
65
 
66
66
  BUNDLED WITH
67
- 2.3.0
67
+ 2.3.7
@@ -49,6 +49,12 @@ module Racecar
49
49
 
50
50
  def store_offset(message)
51
51
  current.store_offset(message)
52
+ rescue Rdkafka::RdkafkaError => e
53
+ if e.code == :state # -172
54
+ @logger.warn "Attempted to store_offset, but we're not subscribed to it: #{ErroneousStateError.new(e)}"
55
+ return
56
+ end
57
+ raise e
52
58
  end
53
59
 
54
60
  def commit
@@ -0,0 +1,34 @@
1
+ # `rd_kafka_offsets_store()` (et.al) returns an error for any
2
+ # partition that is not currently assigned (through `rd_kafka_*assign()`).
3
+ # This prevents a race condition where an application would store offsets
4
+ # after the assigned partitions had been revoked (which resets the stored
5
+ # offset), that could cause these old stored offsets to be committed later
6
+ # when the same partitions were assigned to this consumer again - effectively
7
+ # overwriting any committed offsets by any consumers that were assigned the
8
+ # same partitions previously. This would typically result in the offsets
9
+ # rewinding and messages to be reprocessed.
10
+ # As an extra effort to avoid this situation the stored offset is now
11
+ # also reset when partitions are assigned (through `rd_kafka_*assign()`).
12
+ module Racecar
13
+ class ErroneousStateError < StandardError
14
+ def initialize(rdkafka_error)
15
+ raise rdkafka_error unless rdkafka_error.is_a?(Rdkafka::RdkafkaError)
16
+
17
+ @rdkafka_error = rdkafka_error
18
+ end
19
+
20
+ attr_reader :rdkafka_error
21
+
22
+ def code
23
+ @rdkafka_error.code
24
+ end
25
+
26
+ def to_s
27
+ <<~EOM
28
+ Partition is no longer assigned to this consumer and the offset could not be stored for commit.
29
+ #{@rdkafka_error.to_s}
30
+ EOM
31
+ end
32
+
33
+ end
34
+ end
@@ -4,6 +4,7 @@ require "rdkafka"
4
4
  require "racecar/pause"
5
5
  require "racecar/message"
6
6
  require "racecar/message_delivery_error"
7
+ require "racecar/erroneous_state_error"
7
8
 
8
9
  module Racecar
9
10
  class Runner
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Racecar
4
- VERSION = "2.6.0"
4
+ VERSION = "2.8.2"
5
5
  end
data/racecar.gemspec CHANGED
@@ -20,10 +20,10 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.required_ruby_version = '>= 2.4'
23
+ spec.required_ruby_version = '>= 2.6'
24
24
 
25
25
  spec.add_runtime_dependency "king_konf", "~> 1.0.0"
26
- spec.add_runtime_dependency "rdkafka", "~> 0.10.0"
26
+ spec.add_runtime_dependency "rdkafka", "~> 0.12.0"
27
27
 
28
28
  spec.add_development_dependency "bundler", [">= 1.13", "< 3"]
29
29
  spec.add_development_dependency "pry"
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: racecar
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Schierbeck
8
8
  - Benjamin Quorning
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-02-01 00:00:00.000000000 Z
12
+ date: 2022-07-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: king_konf
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.10.0
34
+ version: 0.12.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.10.0
41
+ version: 0.12.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -155,7 +155,7 @@ dependencies:
155
155
  - - "<"
156
156
  - !ruby/object:Gem::Version
157
157
  version: '6.1'
158
- description:
158
+ description:
159
159
  email:
160
160
  - dschierbeck@zendesk.com
161
161
  - bquorning@zendesk.com
@@ -166,6 +166,7 @@ extensions: []
166
166
  extra_rdoc_files: []
167
167
  files:
168
168
  - ".circleci/config.yml"
169
+ - ".github/dependabot.yml"
169
170
  - ".github/workflows/ci.yml"
170
171
  - ".gitignore"
171
172
  - ".rspec"
@@ -199,6 +200,7 @@ files:
199
200
  - lib/racecar/ctl.rb
200
201
  - lib/racecar/daemon.rb
201
202
  - lib/racecar/datadog.rb
203
+ - lib/racecar/erroneous_state_error.rb
202
204
  - lib/racecar/heroku.rb
203
205
  - lib/racecar/instrumenter.rb
204
206
  - lib/racecar/message.rb
@@ -214,7 +216,7 @@ homepage: https://github.com/zendesk/racecar
214
216
  licenses:
215
217
  - Apache License Version 2.0
216
218
  metadata: {}
217
- post_install_message:
219
+ post_install_message:
218
220
  rdoc_options: []
219
221
  require_paths:
220
222
  - lib
@@ -222,7 +224,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
224
  requirements:
223
225
  - - ">="
224
226
  - !ruby/object:Gem::Version
225
- version: '2.4'
227
+ version: '2.6'
226
228
  required_rubygems_version: !ruby/object:Gem::Requirement
227
229
  requirements:
228
230
  - - ">="
@@ -230,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
232
  version: '0'
231
233
  requirements: []
232
234
  rubygems_version: 3.0.3
233
- signing_key:
235
+ signing_key:
234
236
  specification_version: 4
235
237
  summary: A framework for running Kafka consumers
236
238
  test_files: []