karafka-rdkafka 0.23.0.beta1-aarch64-linux-gnu → 0.23.0.beta2-aarch64-linux-gnu

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a05ee0f1c84cb74133c7f845a100668d0520d8e158b8ddd84861c0a3c339fc8
4
- data.tar.gz: a8e2167cf2c3e260a186a3926606fadf93d8d2dd34d12c600efebdd60550245c
3
+ metadata.gz: 86e56f5a9021be97d52e89fa9c04f80324aa1022f41750531a4fbf22997d5068
4
+ data.tar.gz: 3bceb7d429c03e6a17e4146b322492e1b8106c28735a8f74e975ec9cb8a9e48e
5
5
  SHA512:
6
- metadata.gz: dba50e19735faee2f0149d1620a361ece26e4517a0cf3d4830f193a41d41e6df8254a7ad73b623b74ff3f6ee45e39f505199964ba07aaff706a70ed9a90a394a
7
- data.tar.gz: ad4d95ee82869e46a9d2f92aeb55fd79e2758480d5d12032c7db01a2f97bf77bb70880e8a12ef2d416f84102812eaf4c741b8fdd05cd4a245bd823e3e71a6eec
6
+ metadata.gz: 7d93f213f21bae31b27086f002133a8116db7e35291a046d02acb85bb33f90143cb158b5a791a46ebe0f613c795af1cb8ae75da787537f4e3a9335edce6ff202
7
+ data.tar.gz: 5a64f14eb86fadf414a00a08cbf390b9d3e1488472a137247f4092df85d563c3b1b4b08d71cab48ee2175dca72b35637c5c2fd93eda7209073b6a2e0d7caebb6
data/CHANGELOG.md CHANGED
@@ -1,7 +1,9 @@
1
1
  # Rdkafka Changelog
2
2
 
3
3
  ## 0.23.0 (Unreleased)
4
- - [Enhancement] Bump librdkafka to 2.12.0.
4
+ - [Enhancement] Bump librdkafka to 2.12.1.
5
+ - [Enhancement] Force lock FFI to 1.17.1 or higher to include critical bug fixes around GCC, write barriers, and thread restarts for forks.
6
+ - [Fix] Fix for Core dump when providing extensions to oauthbearer_set_token (dssjoblom)
5
7
 
6
8
  ## 0.22.2 (2025-10-09)
7
9
  - [Fix] Fix Github Action Ruby reference preventing non-compiled releases.
@@ -11,7 +13,7 @@
11
13
  - [Enhancement] Optimize producer header processing with early returns and efficient array operations (69% faster for nil headers, 41% faster for empty headers, 12-32% faster when headers are present, with larger improvements for complex header scenarios).
12
14
 
13
15
  ## 0.22.0 (2025-09-26)
14
- - **[Breaking]** Drop support for Ruby 3.1 to move forward with the fiber scheduler work.
16
+ - **[EOL]** Drop support for Ruby 3.1 to move forward with the fiber scheduler work.
15
17
  - [Enhancement] Bump librdkafka to 2.11.1.
16
18
  - [Enhancement] Improve sigstore attestation for precompiled releases.
17
19
  - [Fix] Fix incorrectly set default SSL certs dir.
@@ -71,7 +73,7 @@
71
73
  - [Fix] Do not run `Rdkafka::Bindings.rd_kafka_global_init` on require to prevent some of macos versions from hanging on Puma fork.
72
74
 
73
75
  ## 0.18.0 (2024-11-26)
74
- - **[Breaking]** Drop Ruby 3.0 support
76
+ - **[EOL]** Drop Ruby 3.0 support
75
77
  - [Enhancement] Bump librdkafka to 2.6.1
76
78
  - [Enhancement] Use default oauth callback if none is passed (bachmanity1)
77
79
  - [Enhancement] Expose `rd_kafka_global_init` to mitigate macos forking issues.
@@ -112,7 +114,7 @@
112
114
  - **[Breaking]** `HashWithSymbolKeysTreatedLikeStrings` has been removed so headers are regular hashes with string keys.
113
115
  - [Enhancement] Bump librdkafka to 2.4.0
114
116
  - [Enhancement] Save two objects on message produced and lower CPU usage on message produced with small improvements.
115
- - [Fix] Remove support for Ruby 2.7. Supporting it was a bug since rest of the karafka ecosystem no longer supports it.
117
+ - **[EOL]** Remove support for Ruby 2.7. Supporting it was a bug since rest of the karafka ecosystem no longer supports it.
116
118
 
117
119
  ## 0.15.2 (2024-07-10)
118
120
  - [Fix] Switch to local release of librdkafka to mitigate its unavailability.
@@ -193,7 +195,7 @@
193
195
  - [Enhancement] Get consumer position (thijsc & mensfeld)
194
196
 
195
197
  ## 0.13.7 (2023-10-31)
196
- - [Change] Drop support for Ruby 2.6 due to incompatibilities in usage of `ObjectSpace::WeakMap`
198
+ - **[EOL]** Drop support for Ruby 2.6 due to incompatibilities in usage of `ObjectSpace::WeakMap`
197
199
  - [Fix] Fix dangling Opaque references.
198
200
 
199
201
  ## 0.13.6 (2023-10-17)
@@ -260,7 +262,7 @@
260
262
 
261
263
  ## 0.11.0 (2021-11-17)
262
264
  - Upgrade librdkafka to 1.8.2
263
- - Bump supported minimum Ruby version to 2.6
265
+ - **[EOL]** Bump supported minimum Ruby version to 2.6
264
266
  - Better homebrew path detection
265
267
 
266
268
  ## 0.10.0 (2021-09-07)
data/README.md CHANGED
@@ -63,7 +63,7 @@ Contributions should generally be made to the upstream [rdkafka-ruby repository]
63
63
 
64
64
  | rdkafka-ruby | librdkafka | patches |
65
65
  |-|-|-|
66
- | 0.23.x (Unreleased) | 2.12.0 (2025-10-09) | yes |
66
+ | 0.23.x (Unreleased) | 2.12.1 (2025-10-16) | yes |
67
67
  | 0.22.x (2025-09-26) | 2.11.1 (2025-08-18) | yes |
68
68
  | 0.21.x (2025-08-18) | 2.11.0 (2025-07-03) | yes |
69
69
  | 0.20.x (2025-07-17) | 2.8.0 (2025-01-07) | yes |
data/ext/librdkafka.so CHANGED
Binary file
@@ -67,7 +67,7 @@ Gem::Specification.new do |gem|
67
67
  gem.extensions = %w(ext/Rakefile)
68
68
  end
69
69
 
70
- gem.add_dependency 'ffi', '~> 1.15'
70
+ gem.add_dependency 'ffi', '~> 1.17.1'
71
71
  gem.add_dependency 'json', '> 2.0'
72
72
  gem.add_dependency 'logger'
73
73
  gem.add_dependency 'mini_portile2', '~> 2.6'
@@ -12,12 +12,18 @@ module Rdkafka
12
12
  # @return [Integer] 0 on success
13
13
  def oauthbearer_set_token(token:, lifetime_ms:, principal_name:, extensions: nil)
14
14
  error_buffer = FFI::MemoryPointer.from_string(" " * 256)
15
+ extensions_ptr, extensions_str_ptrs = map_extensions(extensions)
15
16
 
16
- response = @native_kafka.with_inner do |inner|
17
- Rdkafka::Bindings.rd_kafka_oauthbearer_set_token(
18
- inner, token, lifetime_ms, principal_name,
19
- flatten_extensions(extensions), extension_size(extensions), error_buffer, 256
20
- )
17
+ begin
18
+ response = @native_kafka.with_inner do |inner|
19
+ Rdkafka::Bindings.rd_kafka_oauthbearer_set_token(
20
+ inner, token, lifetime_ms, principal_name,
21
+ extensions_ptr, extension_size(extensions), error_buffer, 256
22
+ )
23
+ end
24
+ ensure
25
+ extensions_str_ptrs&.each { |ptr| ptr.free }
26
+ extensions_ptr&.free
21
27
  end
22
28
 
23
29
  return response if response.zero?
@@ -41,10 +47,31 @@ module Rdkafka
41
47
 
42
48
  private
43
49
 
44
- # Flatten the extensions hash into a string according to the spec, https://datatracker.ietf.org/doc/html/rfc7628#section-3.1
45
- def flatten_extensions(extensions)
46
- return nil unless extensions
47
- "\x01#{extensions.map { |e| e.join("=") }.join("\x01")}"
50
+ # Convert extensions hash to FFI::MemoryPointer (const char **).
51
+ # Note: the returned pointers must be freed manually (autorelease = false).
52
+ def map_extensions(extensions)
53
+ return [nil, nil] if extensions.nil? || extensions.empty?
54
+
55
+ # https://github.com/confluentinc/librdkafka/blob/master/src/rdkafka_sasl_oauthbearer.c#L327-L347
56
+
57
+ # The method argument is const char **
58
+ array_ptr = FFI::MemoryPointer.new(:pointer, extension_size(extensions))
59
+ array_ptr.autorelease = false
60
+ str_ptrs = []
61
+
62
+ # Element i is the key, i + 1 is the value.
63
+ extensions.each_with_index do |(k, v), i|
64
+ k_ptr = FFI::MemoryPointer.from_string(k.to_s)
65
+ k_ptr.autorelease = false
66
+ str_ptrs << k_ptr
67
+ v_ptr = FFI::MemoryPointer.from_string(v.to_s)
68
+ v_ptr.autorelease = false
69
+ str_ptrs << v_ptr
70
+ array_ptr[i * 2].put_pointer(0, k_ptr)
71
+ array_ptr[i * 2 + 1].put_pointer(0, v_ptr)
72
+ end
73
+
74
+ [array_ptr, str_ptrs]
48
75
  end
49
76
 
50
77
  # extension_size is the number of keys + values which should be a non-negative even number
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rdkafka
4
- VERSION = "0.23.0.beta1"
5
- LIBRDKAFKA_VERSION = "2.12.0"
6
- LIBRDKAFKA_SOURCE_SHA256 = "1355d81091d13643aed140ba0fe62437c02d9434b44e90975aaefab84c2bf237"
4
+ VERSION = "0.23.0.beta2"
5
+ LIBRDKAFKA_VERSION = "2.12.1"
6
+ LIBRDKAFKA_SOURCE_SHA256 = "ec103fa05cb0f251e375f6ea0b6112cfc9d0acd977dc5b69fdc54242ba38a16f"
7
7
  end
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.23.0.beta1
4
+ version: 0.23.0.beta2
5
5
  platform: aarch64-linux-gnu
6
6
  authors:
7
7
  - Thijs Cadier
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.15'
19
+ version: 1.17.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.15'
26
+ version: 1.17.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement