karafka-rdkafka 0.17.5 → 0.18.0.rc1
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +4 -3
- data/.ruby-version +1 -1
- data/CHANGELOG.md +11 -0
- data/README.md +1 -0
- data/dist/librdkafka-2.6.1.tar.gz +0 -0
- data/dist/patches/rdkafka_global_init.patch +15 -0
- data/docker-compose.yml +1 -1
- data/ext/Rakefile +1 -1
- data/karafka-rdkafka.gemspec +1 -1
- data/lib/rdkafka/bindings.rb +5 -0
- data/lib/rdkafka/config.rb +3 -1
- data/lib/rdkafka/version.rb +3 -3
- data/lib/rdkafka.rb +2 -0
- data/spec/rdkafka/consumer/topic_partition_list_spec.rb +8 -2
- data.tar.gz.sig +0 -0
- metadata +6 -7
- metadata.gz.sig +0 -0
- data/dist/librdkafka_2.5.3.tar.gz +0 -0
- data/dist/patches/rdkafka_op.h.patch +0 -11
- data/dist/patches/rdkafka_sticky_assignor.c.patch +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e328f121d4a410ea1db50fd3661217757f2a772c3060f94abb4f3278ae59558
|
4
|
+
data.tar.gz: cb2aeb8e915c5fde19e73c74f91725bf04810a1afd211b9c418c57c936a2f3a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8217261e8118bf53d80e026fd30f8e76013c58babc4783e9f40fbfb706b0991a8ebc9fec94e86c67cf378e35cb57fa8ffa0a9163a87ca8e7b1a40326d24f75a
|
7
|
+
data.tar.gz: 20dc090cb6b6934a94497e06041c9fbfdeec1229720bade9f21bfa457bd53d9840a903a968c77d713d40796c048980ae8c6f94bfda1f45f26842681c6a800003
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.github/workflows/ci.yml
CHANGED
@@ -22,11 +22,10 @@ jobs:
|
|
22
22
|
fail-fast: false
|
23
23
|
matrix:
|
24
24
|
ruby:
|
25
|
-
- '3.4.0-
|
25
|
+
- '3.4.0-preview2'
|
26
26
|
- '3.3'
|
27
27
|
- '3.2'
|
28
28
|
- '3.1'
|
29
|
-
- '3.0'
|
30
29
|
include:
|
31
30
|
- ruby: '3.3'
|
32
31
|
coverage: 'true'
|
@@ -50,6 +49,8 @@ jobs:
|
|
50
49
|
GITHUB_COVERAGE: ${{matrix.coverage}}
|
51
50
|
|
52
51
|
run: |
|
52
|
+
set -e
|
53
53
|
bundle install --path vendor/bundle
|
54
|
-
cd ext && bundle exec rake
|
54
|
+
cd ext && bundle exec rake
|
55
|
+
cd ..
|
55
56
|
bundle exec rspec
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.3.
|
1
|
+
3.3.6
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Rdkafka Changelog
|
2
2
|
|
3
|
+
## 0.18.0 (2024-11-26)
|
4
|
+
- **[Breaking]** Drop Ruby 3.0 support
|
5
|
+
- [Enhancement] Bump librdkafka to 2.6.1
|
6
|
+
- [Enhancement] Use default oauth callback if none is passed (bachmanity1)
|
7
|
+
- [Enhancement] Expose `rd_kafka_global_init` to mitigate macos forking issues.
|
8
|
+
- [Patch] Retire no longer needed cooperative-sticky patch.
|
9
|
+
|
10
|
+
## 0.17.6 (2024-09-03)
|
11
|
+
- [Fix] Fix incorrectly behaving CI on failures.
|
12
|
+
- [Fix] Fix invalid patches librdkafka references.
|
13
|
+
|
3
14
|
## 0.17.5 (2024-09-03)
|
4
15
|
- [Patch] Patch with "Add forward declaration to fix compilation without ssl" fix
|
5
16
|
|
data/README.md
CHANGED
@@ -163,6 +163,7 @@ bundle exec rake produce_messages
|
|
163
163
|
|
164
164
|
| rdkafka-ruby | librdkafka | patches |
|
165
165
|
|-|-|-|
|
166
|
+
| 0.18.0 (2024-11-26) | 2.6.1 (2024-11-18) | yes |
|
166
167
|
| 0.17.4 (2024-09-02) | 2.5.3 (2024-09-02) | yes |
|
167
168
|
| 0.17.0 (2024-08-01) | 2.5.0 (2024-07-10) | yes |
|
168
169
|
| 0.16.0 (2024-06-13) | 2.4.0 (2024-05-07) | no |
|
Binary file
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# This patch is released under the 2-clause BSD license, same as librdkafka
|
2
|
+
#
|
3
|
+
--- librdkafka_2.5.3/src/rdkafka.h
|
4
|
+
+++ librdkafka_2.5.3/src/rdkafka.h
|
5
|
+
@@ -1101,6 +1101,10 @@ rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(
|
6
|
+
const char *topic,
|
7
|
+
int32_t partition);
|
8
|
+
|
9
|
+
+/**
|
10
|
+
+ * @brief Allows for the global init of rdkafka when required in the Ruby process.
|
11
|
+
+ */
|
12
|
+
+RD_EXPORT void rd_kafka_global_init(void);
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @brief Sort list using comparator \p cmp.
|
data/docker-compose.yml
CHANGED
data/ext/Rakefile
CHANGED
@@ -26,7 +26,7 @@ task :default => :clean do
|
|
26
26
|
releases = File.expand_path(File.join(File.dirname(__FILE__), '../dist'))
|
27
27
|
|
28
28
|
recipe.files << {
|
29
|
-
:url => "file://#{releases}/
|
29
|
+
:url => "file://#{releases}/librdkafka-#{Rdkafka::LIBRDKAFKA_VERSION}.tar.gz",
|
30
30
|
:sha256 => Rdkafka::LIBRDKAFKA_SOURCE_SHA256
|
31
31
|
}
|
32
32
|
recipe.configure_options = ["--host=#{recipe.host}"]
|
data/karafka-rdkafka.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.name = 'karafka-rdkafka'
|
16
16
|
gem.require_paths = ['lib']
|
17
17
|
gem.version = Rdkafka::VERSION
|
18
|
-
gem.required_ruby_version = '>= 3.
|
18
|
+
gem.required_ruby_version = '>= 3.1'
|
19
19
|
gem.extensions = %w(ext/Rakefile)
|
20
20
|
gem.cert_chain = %w[certs/cert.pem]
|
21
21
|
|
data/lib/rdkafka/bindings.rb
CHANGED
@@ -39,6 +39,11 @@ module Rdkafka
|
|
39
39
|
layout :value, :size_t
|
40
40
|
end
|
41
41
|
|
42
|
+
# This function comes from our patch on top of librdkafka. It allows os to load all the
|
43
|
+
# librdkafka components without initializing the client
|
44
|
+
# @see https://github.com/confluentinc/librdkafka/issues/4590
|
45
|
+
attach_function :rd_kafka_global_init, [], :void
|
46
|
+
|
42
47
|
# Polling
|
43
48
|
|
44
49
|
attach_function :rd_kafka_flush, [:pointer, :int], :int, blocking: true
|
data/lib/rdkafka/config.rb
CHANGED
@@ -338,7 +338,9 @@ module Rdkafka
|
|
338
338
|
Rdkafka::Bindings.rd_kafka_conf_set_error_cb(config, Rdkafka::Bindings::ErrorCallback)
|
339
339
|
|
340
340
|
# Set oauth callback
|
341
|
-
Rdkafka::
|
341
|
+
if Rdkafka::Config.oauthbearer_token_refresh_callback
|
342
|
+
Rdkafka::Bindings.rd_kafka_conf_set_oauthbearer_token_refresh_cb(config, Rdkafka::Bindings::OAuthbearerTokenRefreshCallback)
|
343
|
+
end
|
342
344
|
end
|
343
345
|
end
|
344
346
|
|
data/lib/rdkafka/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Rdkafka
|
4
|
-
VERSION = "0.
|
5
|
-
LIBRDKAFKA_VERSION = "2.
|
6
|
-
LIBRDKAFKA_SOURCE_SHA256 = "
|
4
|
+
VERSION = "0.18.0.rc1"
|
5
|
+
LIBRDKAFKA_VERSION = "2.6.1"
|
6
|
+
LIBRDKAFKA_SOURCE_SHA256 = "0ddf205ad8d36af0bc72a2fec20639ea02e1d583e353163bf7f4683d949e901b"
|
7
7
|
end
|
data/lib/rdkafka.rb
CHANGED
@@ -114,12 +114,18 @@ describe Rdkafka::Consumer::TopicPartitionList do
|
|
114
114
|
end
|
115
115
|
|
116
116
|
describe "#to_s" do
|
117
|
+
let(:expected) do
|
118
|
+
if RUBY_VERSION >= '3.4.0'
|
119
|
+
"<TopicPartitionList: {\"topic1\" => [<Partition 0>, <Partition 1>]}>"
|
120
|
+
else
|
121
|
+
"<TopicPartitionList: {\"topic1\"=>[<Partition 0>, <Partition 1>]}>"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
117
125
|
it "should return a human readable representation" do
|
118
126
|
list = Rdkafka::Consumer::TopicPartitionList.new
|
119
127
|
list.add_topic("topic1", [0, 1])
|
120
128
|
|
121
|
-
expected = "<TopicPartitionList: {\"topic1\"=>[<Partition 0>, <Partition 1>]}>"
|
122
|
-
|
123
129
|
expect(list.to_s).to eq expected
|
124
130
|
end
|
125
131
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka-rdkafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thijs Cadier
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
|
37
37
|
ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date: 2024-
|
39
|
+
date: 2024-11-26 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ffi
|
@@ -186,9 +186,8 @@ files:
|
|
186
186
|
- README.md
|
187
187
|
- Rakefile
|
188
188
|
- certs/cert.pem
|
189
|
-
- dist/
|
190
|
-
- dist/patches/
|
191
|
-
- dist/patches/rdkafka_sticky_assignor.c.patch
|
189
|
+
- dist/librdkafka-2.6.1.tar.gz
|
190
|
+
- dist/patches/rdkafka_global_init.patch
|
192
191
|
- docker-compose.yml
|
193
192
|
- ext/README.md
|
194
193
|
- ext/Rakefile
|
@@ -281,14 +280,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
281
280
|
requirements:
|
282
281
|
- - ">="
|
283
282
|
- !ruby/object:Gem::Version
|
284
|
-
version: '3.
|
283
|
+
version: '3.1'
|
285
284
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
286
285
|
requirements:
|
287
286
|
- - ">="
|
288
287
|
- !ruby/object:Gem::Version
|
289
288
|
version: '0'
|
290
289
|
requirements: []
|
291
|
-
rubygems_version: 3.5.
|
290
|
+
rubygems_version: 3.5.22
|
292
291
|
signing_key:
|
293
292
|
specification_version: 4
|
294
293
|
summary: The rdkafka gem is a modern Kafka client library for Ruby based on librdkafka.
|
metadata.gz.sig
CHANGED
Binary file
|
Binary file
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# ref https://github.com/confluentinc/librdkafka/pull/4794/files
|
2
|
-
--- librdkafka_2.5.0/src/rdkafka_op.h 2024-07-08 09:47:43.000000000 +0200
|
3
|
-
+++ librdkafka_2.5.0/src/rdkafka_op.h 2024-07-30 09:44:38.529759640 +0200
|
4
|
-
@@ -39,6 +39,7 @@
|
5
|
-
typedef struct rd_kafka_q_s rd_kafka_q_t;
|
6
|
-
typedef struct rd_kafka_toppar_s rd_kafka_toppar_t;
|
7
|
-
typedef struct rd_kafka_op_s rd_kafka_op_t;
|
8
|
-
+typedef struct rd_kafka_broker_s rd_kafka_broker_t;
|
9
|
-
|
10
|
-
/* One-off reply queue + reply version.
|
11
|
-
* All APIs that take a rd_kafka_replyq_t makes a copy of the
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# This patch is released under the 2-clause BSD license, same as librdkafka
|
2
|
-
# Fixes: https://github.com/confluentinc/librdkafka/issues/4783
|
3
|
-
#
|
4
|
-
--- librdkafka_2.5.0/src/rdkafka_sticky_assignor.c 2024-07-08 09:47:43.000000000 +0200
|
5
|
-
+++ librdkafka_2.5.0/src/rdkafka_sticky_assignor.c 2024-07-30 09:44:38.529759640 +0200
|
6
|
-
@@ -769,7 +769,7 @@
|
7
|
-
const rd_kafka_topic_partition_list_t *partitions;
|
8
|
-
const char *consumer;
|
9
|
-
const rd_map_elem_t *elem;
|
10
|
-
- int i;
|
11
|
-
+ int i, j;
|
12
|
-
|
13
|
-
/* The assignment is balanced if minimum and maximum numbers of
|
14
|
-
* partitions assigned to consumers differ by at most one. */
|
15
|
-
@@ -836,9 +836,9 @@
|
16
|
-
|
17
|
-
/* Otherwise make sure it can't get any more partitions */
|
18
|
-
|
19
|
-
- for (i = 0; i < potentialTopicPartitions->cnt; i++) {
|
20
|
-
+ for (j = 0; j < potentialTopicPartitions->cnt; j++) {
|
21
|
-
const rd_kafka_topic_partition_t *partition =
|
22
|
-
- &potentialTopicPartitions->elems[i];
|
23
|
-
+ &potentialTopicPartitions->elems[j];
|
24
|
-
const char *otherConsumer;
|
25
|
-
int otherConsumerPartitionCount;
|
26
|
-
|