karafka-rdkafka 0.20.0.rc2 → 0.20.0

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci_linux_x86_64_gnu.yml +249 -0
  3. data/.github/workflows/ci_linux_x86_64_musl.yml +205 -0
  4. data/.github/workflows/ci_macos_arm64.yml +306 -0
  5. data/.github/workflows/push_linux_x86_64_gnu.yml +64 -0
  6. data/.github/workflows/push_linux_x86_64_musl.yml +77 -0
  7. data/.github/workflows/push_macos_arm64.yml +54 -0
  8. data/.github/workflows/push_ruby.yml +37 -0
  9. data/.gitignore +1 -0
  10. data/.ruby-version +1 -1
  11. data/CHANGELOG.md +25 -4
  12. data/README.md +2 -3
  13. data/Rakefile +0 -2
  14. data/dist/{librdkafka-2.10.0.tar.gz → librdkafka-2.8.0.tar.gz} +0 -0
  15. data/docker-compose.yml +1 -1
  16. data/ext/Rakefile +1 -1
  17. data/ext/build_common.sh +361 -0
  18. data/ext/build_linux_x86_64_gnu.sh +306 -0
  19. data/ext/build_linux_x86_64_musl.sh +763 -0
  20. data/ext/build_macos_arm64.sh +550 -0
  21. data/karafka-rdkafka.gemspec +51 -10
  22. data/lib/rdkafka/bindings.rb +32 -6
  23. data/lib/rdkafka/config.rb +4 -1
  24. data/lib/rdkafka/error.rb +8 -1
  25. data/lib/rdkafka/native_kafka.rb +4 -0
  26. data/lib/rdkafka/producer/partitions_count_cache.rb +216 -0
  27. data/lib/rdkafka/producer.rb +51 -34
  28. data/lib/rdkafka/version.rb +3 -3
  29. data/lib/rdkafka.rb +1 -0
  30. data/renovate.json +74 -0
  31. data/spec/rdkafka/admin_spec.rb +217 -3
  32. data/spec/rdkafka/bindings_spec.rb +0 -25
  33. data/spec/rdkafka/config_spec.rb +1 -1
  34. data/spec/rdkafka/consumer_spec.rb +35 -17
  35. data/spec/rdkafka/metadata_spec.rb +2 -2
  36. data/spec/rdkafka/producer/partitions_count_cache_spec.rb +359 -0
  37. data/spec/rdkafka/producer_spec.rb +493 -8
  38. data/spec/spec_helper.rb +32 -7
  39. metadata +37 -95
  40. checksums.yaml.gz.sig +0 -0
  41. data/.github/workflows/ci.yml +0 -99
  42. data/Guardfile +0 -19
  43. data/certs/cert.pem +0 -26
  44. data.tar.gz.sig +0 -0
  45. metadata.gz.sig +0 -3
metadata CHANGED
@@ -1,40 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka-rdkafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0.rc2
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thijs Cadier
8
8
  - Maciej Mensfeld
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
14
- YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
15
- MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
16
- dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
17
- bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
18
- PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
19
- ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
20
- Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
21
- JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
22
- T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
23
- flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
24
- vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
25
- iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
26
- HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
27
- sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
28
- bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
29
- eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
30
- Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
31
- agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
32
- TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
33
- Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
34
- oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
35
- i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
36
- ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
37
- -----END CERTIFICATE-----
10
+ cert_chain: []
38
11
  date: 1980-01-02 00:00:00.000000000 Z
39
12
  dependencies:
40
13
  - !ruby/object:Gem::Dependency
@@ -51,6 +24,20 @@ dependencies:
51
24
  - - "~>"
52
25
  - !ruby/object:Gem::Version
53
26
  version: '1.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
54
41
  - !ruby/object:Gem::Dependency
55
42
  name: mini_portile2
56
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,19 +67,19 @@ dependencies:
80
67
  - !ruby/object:Gem::Version
81
68
  version: '12'
82
69
  - !ruby/object:Gem::Dependency
83
- name: logger
70
+ name: ostruct
84
71
  requirement: !ruby/object:Gem::Requirement
85
72
  requirements:
86
73
  - - ">="
87
74
  - !ruby/object:Gem::Version
88
- version: '1.5'
89
- type: :runtime
75
+ version: '0'
76
+ type: :development
90
77
  prerelease: false
91
78
  version_requirements: !ruby/object:Gem::Requirement
92
79
  requirements:
93
80
  - - ">="
94
81
  - !ruby/object:Gem::Version
95
- version: '1.5'
82
+ version: '0'
96
83
  - !ruby/object:Gem::Dependency
97
84
  name: pry
98
85
  requirement: !ruby/object:Gem::Requirement
@@ -149,34 +136,6 @@ dependencies:
149
136
  - - ">="
150
137
  - !ruby/object:Gem::Version
151
138
  version: '0'
152
- - !ruby/object:Gem::Dependency
153
- name: guard
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '0'
159
- type: :development
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- version: '0'
166
- - !ruby/object:Gem::Dependency
167
- name: guard-rspec
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: '0'
173
- type: :development
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - ">="
178
- - !ruby/object:Gem::Version
179
- version: '0'
180
139
  description: Modern Kafka client library for Ruby based on librdkafka
181
140
  email:
182
141
  - contact@karafka.io
@@ -187,7 +146,13 @@ extra_rdoc_files: []
187
146
  files:
188
147
  - ".github/CODEOWNERS"
189
148
  - ".github/FUNDING.yml"
190
- - ".github/workflows/ci.yml"
149
+ - ".github/workflows/ci_linux_x86_64_gnu.yml"
150
+ - ".github/workflows/ci_linux_x86_64_musl.yml"
151
+ - ".github/workflows/ci_macos_arm64.yml"
152
+ - ".github/workflows/push_linux_x86_64_gnu.yml"
153
+ - ".github/workflows/push_linux_x86_64_musl.yml"
154
+ - ".github/workflows/push_macos_arm64.yml"
155
+ - ".github/workflows/push_ruby.yml"
191
156
  - ".github/workflows/verify-action-pins.yml"
192
157
  - ".gitignore"
193
158
  - ".rspec"
@@ -196,16 +161,18 @@ files:
196
161
  - ".yardopts"
197
162
  - CHANGELOG.md
198
163
  - Gemfile
199
- - Guardfile
200
164
  - MIT-LICENSE
201
165
  - README.md
202
166
  - Rakefile
203
- - certs/cert.pem
204
- - dist/librdkafka-2.10.0.tar.gz
167
+ - dist/librdkafka-2.8.0.tar.gz
205
168
  - dist/patches/rdkafka_global_init.patch
206
169
  - docker-compose.yml
207
170
  - ext/README.md
208
171
  - ext/Rakefile
172
+ - ext/build_common.sh
173
+ - ext/build_linux_x86_64_gnu.sh
174
+ - ext/build_linux_x86_64_musl.sh
175
+ - ext/build_macos_arm64.sh
209
176
  - karafka-rdkafka.gemspec
210
177
  - lib/rdkafka.rb
211
178
  - lib/rdkafka/abstract_handle.rb
@@ -247,6 +214,7 @@ files:
247
214
  - lib/rdkafka/producer.rb
248
215
  - lib/rdkafka/producer/delivery_handle.rb
249
216
  - lib/rdkafka/producer/delivery_report.rb
217
+ - lib/rdkafka/producer/partitions_count_cache.rb
250
218
  - lib/rdkafka/version.rb
251
219
  - renovate.json
252
220
  - spec/rdkafka/abstract_handle_spec.rb
@@ -274,6 +242,7 @@ files:
274
242
  - spec/rdkafka/native_kafka_spec.rb
275
243
  - spec/rdkafka/producer/delivery_handle_spec.rb
276
244
  - spec/rdkafka/producer/delivery_report_spec.rb
245
+ - spec/rdkafka/producer/partitions_count_cache_spec.rb
277
246
  - spec/rdkafka/producer_spec.rb
278
247
  - spec/spec_helper.rb
279
248
  licenses:
@@ -281,7 +250,7 @@ licenses:
281
250
  metadata:
282
251
  funding_uri: https://karafka.io/#become-pro
283
252
  homepage_uri: https://karafka.io
284
- changelog_uri: https://github.com/karafka/karafka-rdkafka/blob/master/CHANGELOG.md
253
+ changelog_uri: https://karafka.io/docs/Changelog-Karafka-Rdkafka/
285
254
  bug_tracker_uri: https://github.com/karafka/karafka-rdkafka/issues
286
255
  source_code_uri: https://github.com/karafka/karafka-rdkafka
287
256
  documentation_uri: https://karafka.io/docs
@@ -300,36 +269,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
269
  - !ruby/object:Gem::Version
301
270
  version: '0'
302
271
  requirements: []
303
- rubygems_version: 3.6.7
272
+ rubygems_version: 3.6.9
304
273
  specification_version: 4
305
274
  summary: The rdkafka gem is a modern Kafka client library for Ruby based on librdkafka.
306
275
  It wraps the production-ready C client using the ffi gem and targets Kafka 1.0+
307
276
  and Ruby 2.7+.
308
- test_files:
309
- - spec/rdkafka/abstract_handle_spec.rb
310
- - spec/rdkafka/admin/create_acl_handle_spec.rb
311
- - spec/rdkafka/admin/create_acl_report_spec.rb
312
- - spec/rdkafka/admin/create_topic_handle_spec.rb
313
- - spec/rdkafka/admin/create_topic_report_spec.rb
314
- - spec/rdkafka/admin/delete_acl_handle_spec.rb
315
- - spec/rdkafka/admin/delete_acl_report_spec.rb
316
- - spec/rdkafka/admin/delete_topic_handle_spec.rb
317
- - spec/rdkafka/admin/delete_topic_report_spec.rb
318
- - spec/rdkafka/admin/describe_acl_handle_spec.rb
319
- - spec/rdkafka/admin/describe_acl_report_spec.rb
320
- - spec/rdkafka/admin_spec.rb
321
- - spec/rdkafka/bindings_spec.rb
322
- - spec/rdkafka/callbacks_spec.rb
323
- - spec/rdkafka/config_spec.rb
324
- - spec/rdkafka/consumer/headers_spec.rb
325
- - spec/rdkafka/consumer/message_spec.rb
326
- - spec/rdkafka/consumer/partition_spec.rb
327
- - spec/rdkafka/consumer/topic_partition_list_spec.rb
328
- - spec/rdkafka/consumer_spec.rb
329
- - spec/rdkafka/error_spec.rb
330
- - spec/rdkafka/metadata_spec.rb
331
- - spec/rdkafka/native_kafka_spec.rb
332
- - spec/rdkafka/producer/delivery_handle_spec.rb
333
- - spec/rdkafka/producer/delivery_report_spec.rb
334
- - spec/rdkafka/producer_spec.rb
335
- - spec/spec_helper.rb
277
+ test_files: []
checksums.yaml.gz.sig DELETED
Binary file
@@ -1,99 +0,0 @@
1
- name: ci
2
-
3
- concurrency:
4
- group: ${{ github.workflow }}-${{ github.ref }}
5
- cancel-in-progress: true
6
-
7
- on:
8
- pull_request:
9
- branches: [ main, master ]
10
- push:
11
- branches: [ main, master ]
12
- schedule:
13
- - cron: '0 1 * * *'
14
-
15
- permissions:
16
- contents: read
17
-
18
- env:
19
- BUNDLE_RETRY: 6
20
- BUNDLE_JOBS: 4
21
-
22
- jobs:
23
- specs:
24
- timeout-minutes: 30
25
- runs-on: ubuntu-latest
26
- strategy:
27
- fail-fast: false
28
- matrix:
29
- ruby:
30
- - '3.4'
31
- - '3.3'
32
- - '3.2'
33
- - '3.1'
34
- - 'jruby-10.0'
35
- include:
36
- - ruby: '3.4'
37
- coverage: 'true'
38
- - ruby: 'jruby-10.0'
39
- continue-on-error: true
40
-
41
- steps:
42
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
43
- with:
44
- fetch-depth: 0
45
-
46
- - name: Install package dependencies
47
- run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
48
-
49
- - name: Start Kafka with Docker Compose
50
- run: |
51
- docker compose up -d || (sleep 5 && docker compose up -d)
52
-
53
- - name: Set up Ruby
54
- uses: ruby/setup-ruby@ca041f971d66735f3e5ff1e21cc13e2d51e7e535 # v1.233.0
55
- with:
56
- ruby-version: ${{matrix.ruby}}
57
- bundler-cache: true
58
-
59
- - name: Run all specs
60
- env:
61
- GITHUB_COVERAGE: ${{matrix.coverage}}
62
- continue-on-error: ${{ matrix.continue-on-error || false }} # Use the matrix value if present
63
- run: |
64
- set -e
65
- bundle install --jobs 4 --retry 3
66
- cd ext && bundle exec rake
67
- cd ..
68
- bundle exec rspec
69
-
70
- macos_build:
71
- timeout-minutes: 30
72
- runs-on: macos-latest
73
- strategy:
74
- fail-fast: false
75
- matrix:
76
- ruby:
77
- - '3.4'
78
- - '3.3'
79
- - '3.2'
80
- - '3.1'
81
- - 'jruby-9.4'
82
- include:
83
- - ruby: 'jruby-10.0'
84
- continue-on-error: true
85
- steps:
86
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
87
-
88
- - name: Set up Ruby
89
- uses: ruby/setup-ruby@ca041f971d66735f3e5ff1e21cc13e2d51e7e535 # v1.233.0
90
- with:
91
- ruby-version: ${{matrix.ruby}}
92
- bundler-cache: false
93
-
94
- - name: Build rdkafka-ruby
95
- continue-on-error: ${{ matrix.continue-on-error || false }}
96
- run: |
97
- set -e
98
- bundle install --jobs 4 --retry 3
99
- cd ext && bundle exec rake
data/Guardfile DELETED
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- logger level: :error
4
-
5
- guard :rspec, cmd: "bundle exec rspec --format #{ENV.fetch("FORMAT", "documentation")}" do
6
- require "guard/rspec/dsl"
7
- dsl = Guard::RSpec::Dsl.new(self)
8
-
9
- # Ruby files
10
- ruby = dsl.ruby
11
- dsl.watch_spec_files_for(ruby.lib_files)
12
- watch(%r{^lib/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
13
-
14
- # RSpec files
15
- rspec = dsl.rspec
16
- watch(rspec.spec_helper) { rspec.spec_dir }
17
- watch(rspec.spec_support) { rspec.spec_dir }
18
- watch(rspec.spec_files)
19
- end
data/certs/cert.pem DELETED
@@ -1,26 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
3
- YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
4
- MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
5
- dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
6
- bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
7
- PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
8
- ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
9
- Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
10
- JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
11
- T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
12
- flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
13
- vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
14
- iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
15
- HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
16
- sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
17
- bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
18
- eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
19
- Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
20
- agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
21
- TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
22
- Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
23
- oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
24
- i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
25
- ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
26
- -----END CERTIFICATE-----
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- ��K�]E܌*M���.ӯQ�6!� �scY�K�f)���6�̈�&ϐm]魓����n��B�J�I:HY_����}��ѺQx�����3�8`2UNs���Ȉw�����bq�}��{��X1�����4��A�vH`����r�j ����*=n���E'wŠ�����E
2
- ��`����$�M���*���6$!Q�wW�E�rBs��(�;�&TL� K��L��Q!&����(P��_�� ��A�T~$E�$�Q����-Jٰ���P�V%�0�|��S�q$�Z�3��J���C���M�V�T& A�����o���9g��
3
- q�/�