racecar 2.8.0.rc.1 → 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: ed2fced2308a585fa4261ecac51a459c7f9af0b7631a08fda60c34c270a05cdd
4
- data.tar.gz: e34877d02caff76c9bea5919a4ec5afb095bd6607055b6d9d38178366c06bbcf
3
+ metadata.gz: 4cbf6ca4837bdd3893c8342936f9d5ea115a5b3a585e0c843e62171e00038e72
4
+ data.tar.gz: d8603c46cf801d0f41f017d5b27b35e0d2b195eec5be11a1f7b6bf77413726b4
5
5
  SHA512:
6
- metadata.gz: e1873d384b62450af38808a0000b1245c75a8c1f078d51595968fae33c5a3b761cde0feff5640e29c8de7ad7f69cf69211cde97f638ddbdaba046cafaa25e3cb
7
- data.tar.gz: ebe542bd6ee8f4f880b4665c3ee9a249a6ce193228bb9f101005de7b0764879b9a9d43316687e7a0dff0d78eb9309abc98b14383fb9ca5f37e56e69896fe68b4
6
+ metadata.gz: 78bdedfe7bd888a3716f5a29f28810f4c4d2f03e43c33b8e47ed08607155211fca1d47f4eab6a4f0def6976bb7ca3263117e52d2e0fa7f0a721c56ec70c7ee3d
7
+ data.tar.gz: 2bf6e2b50980add68363b59718f54403caada58abcb404a9018ac4304519bbbb7ed920578d37bcadefad63964812e7374d367298f403577725eef79af269c604
data/CHANGELOG.md CHANGED
@@ -2,8 +2,14 @@
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
+
5
11
  ## v2.8.0
6
- * 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/286))
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))
7
13
 
8
14
  ## v2.7.0
9
15
 
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- racecar (2.8.0.rc.1)
4
+ racecar (2.8.2.beta)
5
5
  king_konf (~> 1.0.0)
6
- rdkafka (~> 0.12.0.beta.4)
6
+ rdkafka (~> 0.12.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -28,7 +28,7 @@ GEM
28
28
  coderay (~> 1.1)
29
29
  method_source (~> 1.0)
30
30
  rake (13.0.1)
31
- rdkafka (0.12.0.beta.4)
31
+ rdkafka (0.12.0)
32
32
  ffi (~> 1.15)
33
33
  mini_portile2 (~> 2.6)
34
34
  rake (> 12)
@@ -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.8.0.rc.1"
4
+ VERSION = "2.8.2"
5
5
  end
data/racecar.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
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.12.0.beta.4"
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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: racecar
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0.rc.1
4
+ version: 2.8.2
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: 2022-05-17 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.12.0.beta.4
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.12.0.beta.4
41
+ version: 0.12.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -200,6 +200,7 @@ files:
200
200
  - lib/racecar/ctl.rb
201
201
  - lib/racecar/daemon.rb
202
202
  - lib/racecar/datadog.rb
203
+ - lib/racecar/erroneous_state_error.rb
203
204
  - lib/racecar/heroku.rb
204
205
  - lib/racecar/instrumenter.rb
205
206
  - lib/racecar/message.rb
@@ -226,9 +227,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
226
227
  version: '2.6'
227
228
  required_rubygems_version: !ruby/object:Gem::Requirement
228
229
  requirements:
229
- - - ">"
230
+ - - ">="
230
231
  - !ruby/object:Gem::Version
231
- version: 1.3.1
232
+ version: '0'
232
233
  requirements: []
233
234
  rubygems_version: 3.0.3
234
235
  signing_key: