karafka 2.2.5 → 2.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +1 -1
- data/lib/karafka/admin.rb +31 -1
- data/lib/karafka/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36fe50a9b0a758b9b916ca668c862085629bf09bcf16f7c0e8a340a9b7333abb
|
4
|
+
data.tar.gz: 61d3f10df4e1545a1a4e0d8190eb6ee2a7b751636bb347cf2703a74149fc710c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f12fb91f2e8e4e7dba766fbf32c79b734f5cd9f6fa63a66f80863a819dfd6d442024a97a4095bea84ef87bb0cb645ff431ba6d2f04f46d72864c377d61fc76a6
|
7
|
+
data.tar.gz: 4235c1944c98f0bd6359b82b7eab68a69812d70665ab0436c9f67cc5011e4c8edfa2c194a6d65744a4d82f97710beca5ddb871b8671febf61e5c9f591a746bee
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Karafka framework changelog
|
2
2
|
|
3
|
+
## 2.2.6 (2023-09-26)
|
4
|
+
- [Enhancement] Retry `Karafka::Admin#read_watermark_offsets` fetching upon `not_leader_for_partition` that can occur mostly on newly created topics in KRaft and after crashes during leader selection.
|
5
|
+
|
3
6
|
## 2.2.5 (2023-09-25)
|
4
7
|
- [Enhancement] Ensure, that when topic related operations end, the result is usable. There were few cases where admin operations on topics would finish successfully but internal Kafka caches would not report changes for a short period of time.
|
5
8
|
- [Enhancement] Stabilize cooperative-sticky early shutdown procedure.
|
data/Gemfile.lock
CHANGED
data/lib/karafka/admin.rb
CHANGED
@@ -142,7 +142,12 @@ module Karafka
|
|
142
142
|
# @return [Array<Integer, Integer>] low watermark offset and high watermark offset
|
143
143
|
def read_watermark_offsets(name, partition)
|
144
144
|
with_consumer do |consumer|
|
145
|
-
|
145
|
+
# For newly created topics or in cases where we're trying to get them but there is no
|
146
|
+
# leader, this can fail. It happens more often for new topics under KRaft, however we
|
147
|
+
# still want to make sure things operate as expected even then
|
148
|
+
with_rdkafka_retry(codes: %i[not_leader_for_partition]) do
|
149
|
+
consumer.query_watermark_offsets(name, partition)
|
150
|
+
end
|
146
151
|
end
|
147
152
|
end
|
148
153
|
|
@@ -228,6 +233,31 @@ module Karafka
|
|
228
233
|
raise
|
229
234
|
end
|
230
235
|
|
236
|
+
# Handles retries for rdkafka related errors that we specify in `:codes`.
|
237
|
+
#
|
238
|
+
# Some operations temporarily fail, especially for cases where we changed something fast
|
239
|
+
# like topic creation or repartitioning. In cases like this it is ok to retry operations that
|
240
|
+
# do not change the state as it will usually recover.
|
241
|
+
#
|
242
|
+
# @param codes [Array<Symbol>] librdkafka error codes on which we want to retry
|
243
|
+
# @param max_attempts [Integer] number of attempts (including initial) after which we should
|
244
|
+
# give up
|
245
|
+
#
|
246
|
+
# @note This code implements a simple backoff that increases with each attempt.
|
247
|
+
def with_rdkafka_retry(codes:, max_attempts: 5)
|
248
|
+
attempt ||= 0
|
249
|
+
attempt += 1
|
250
|
+
|
251
|
+
yield
|
252
|
+
rescue Rdkafka::RdkafkaError => e
|
253
|
+
raise unless codes.include?(e.code)
|
254
|
+
raise if attempt >= max_attempts
|
255
|
+
|
256
|
+
sleep(max_attempts)
|
257
|
+
|
258
|
+
retry
|
259
|
+
end
|
260
|
+
|
231
261
|
# @param type [Symbol] type of config we want
|
232
262
|
# @param settings [Hash] extra settings for config (if needed)
|
233
263
|
# @return [::Rdkafka::Config] rdkafka config
|
data/lib/karafka/version.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
|
36
36
|
msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2023-09-
|
38
|
+
date: 2023-09-26 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: karafka-core
|
metadata.gz.sig
CHANGED
Binary file
|