karafka-rdkafka 0.22.0.rc1-arm64-darwin → 0.22.1-arm64-darwin

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: 84351f5ea677c8b0eae5f0d7430894e3ffa9b3c43e4f83e9562f9bb7beaf9fe9
4
- data.tar.gz: ab686d9abe352cba88a293280681b335444e99052516c557397f521e4babec8f
3
+ metadata.gz: 5f7c69d37910114e531b2db41b1ded81ce5c891f2fe92da8825b291521c81a29
4
+ data.tar.gz: 6c1a6aca3d03cb69605a90492689db8bcb0dd2d8b8d5be4a4bd465ccb51a4b63
5
5
  SHA512:
6
- metadata.gz: d53d3a66d5a008718b07c1c0fcae98c55e56211df04de0b26a4d3f5e15b504bd03e1a812251da6be83ae58aadba0af37e23124b40b2163eee87e9698655e63f1
7
- data.tar.gz: cd201cd0cbaeb98fea15239ceda02d90d2dffb119a79550226c77861f8fc5a3665ba6f12dcf5061f7efcb732207b1eb0ff8ec141731d32d163865e1da34e7726
6
+ metadata.gz: f59dfa8eacc744c85e043dc324a9c7833b87b176efa99d6fe26c706f16f2a5dd9d98e81306d072be92ccc4126327f42762bb5460a9c109baff4779e92bf9d2e9
7
+ data.tar.gz: 6d59f8823252c2c5d13f340e8ea25653ed82e567de2f70da83fb21c27f0876498f104818bf4adae4e0baf1ce3d85cb20144635f26da6e9a7b10d3828c217b476
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Rdkafka Changelog
2
2
 
3
- ## 0.22.0 (Unreleased)
3
+ ## 0.22.1 (2025-10-09)
4
+ - [Enhancement] Optimize header processing to eliminate double hash lookups and method checking overhead.
5
+ - [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).
6
+
7
+ ## 0.22.0 (2025-09-26)
4
8
  - **[Breaking]** Drop support for Ruby 3.1 to move forward with the fiber scheduler work.
5
9
  - [Enhancement] Bump librdkafka to 2.11.1.
6
10
  - [Enhancement] Improve sigstore attestation for precompiled releases.
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.22.x (Unreleased) | 2.11.1 (2025-08-18) | yes |
66
+ | 0.22.x (2025-09-26) | 2.11.1 (2025-08-18) | yes |
67
67
  | 0.21.x (2025-08-18) | 2.11.0 (2025-07-03) | yes |
68
68
  | 0.20.x (2025-07-17) | 2.8.0 (2025-01-07) | yes |
69
69
  | 0.19.x (2025-01-20) | 2.8.0 (2025-01-07) | yes |
@@ -0,0 +1,37 @@
1
+ #!/bin/bash
2
+
3
+ # Checks Kafka logs for unsupported warning patterns
4
+ # Only specified warnings are allowed, all others should trigger failure
5
+
6
+ allowed_patterns=(
7
+ "Performing controller activation"
8
+ "registered with feature metadata.version"
9
+ "Replayed TopicRecord for"
10
+ "Replayed PartitionRecord for"
11
+ "Previous leader None and previous leader epoch"
12
+ "Creating new"
13
+ "Unloaded transaction metadata"
14
+ "closing connection"
15
+ )
16
+
17
+ # Get all warnings
18
+ warnings=$(docker logs --since=0 kafka | grep "] WARN ")
19
+ exit_code=0
20
+
21
+ while IFS= read -r line; do
22
+ allowed=0
23
+ for pattern in "${allowed_patterns[@]}"; do
24
+ if echo "$line" | grep -q "$pattern"; then
25
+ allowed=1
26
+ break
27
+ fi
28
+ done
29
+
30
+ if [ $allowed -eq 0 ]; then
31
+ echo "Unexpected warning found:"
32
+ echo "$line"
33
+ exit_code=1
34
+ fi
35
+ done <<< "$warnings"
36
+
37
+ exit $exit_code
@@ -1,7 +1,7 @@
1
1
  services:
2
2
  kafka:
3
3
  container_name: kafka
4
- image: confluentinc/cp-kafka:8.0.0
4
+ image: confluentinc/cp-kafka:8.0.1
5
5
  ports:
6
6
  - 9092:9092 # Support PLAINTEXT so we can run one docker setup for SSL and PLAINTEXT
7
7
  - 9093:9093
data/docker-compose.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  services:
2
2
  kafka:
3
3
  container_name: kafka
4
- image: confluentinc/cp-kafka:8.0.0
4
+ image: confluentinc/cp-kafka:8.0.1
5
5
 
6
6
  ports:
7
7
  - 9092:9092
data/ext/librdkafka.dylib CHANGED
Binary file
@@ -50,7 +50,7 @@ module Rdkafka
50
50
  end
51
51
 
52
52
  name_ptr = name_ptrptr.read_pointer
53
- name = name_ptr.respond_to?(:read_string_to_null) ? name_ptr.read_string_to_null : name_ptr.read_string
53
+ name = name_ptr.read_string_to_null
54
54
 
55
55
  size = size_ptr[:value]
56
56
 
@@ -59,10 +59,12 @@ module Rdkafka
59
59
 
60
60
  if headers.key?(name)
61
61
  # If we've seen this header before, convert to array if needed and append
62
- if headers[name].is_a?(Array)
63
- headers[name] << value
62
+ existing = headers[name]
63
+
64
+ if existing.is_a?(Array)
65
+ existing << value
64
66
  else
65
- headers[name] = [headers[name], value]
67
+ headers[name] = [existing, value]
66
68
  end
67
69
  else
68
70
  # First occurrence - store as single value
@@ -14,6 +14,7 @@ module Rdkafka
14
14
 
15
15
  # The name of the topic this message was produced to or nil in case delivery failed and we
16
16
  # we not able to get the topic reference
17
+ #
17
18
  # @return [String, nil]
18
19
  attr_reader :topic_name
19
20
 
@@ -415,30 +415,35 @@ module Rdkafka
415
415
  :int, Rdkafka::Bindings::RD_KAFKA_VTYPE_OPAQUE, :pointer, delivery_handle,
416
416
  ]
417
417
 
418
- if headers
418
+ if headers && !headers.empty?
419
419
  headers.each do |key0, value0|
420
420
  key = key0.to_s
421
- if value0.is_a?(Array)
421
+ case value0
422
+ when Array
422
423
  # Handle array of values per KIP-82
423
- value0.each do |value|
424
- value = value.to_s
425
- args << :int << Rdkafka::Bindings::RD_KAFKA_VTYPE_HEADER
426
- args << :string << key
427
- args << :pointer << value
428
- args << :size_t << value.bytesize
424
+ value0.each do |v|
425
+ value = v.to_s
426
+ args.push(
427
+ :int, Rdkafka::Bindings::RD_KAFKA_VTYPE_HEADER,
428
+ :string, key,
429
+ :pointer, value,
430
+ :size_t, value.bytesize
431
+ )
429
432
  end
430
433
  else
431
434
  # Handle single value
432
435
  value = value0.to_s
433
- args << :int << Rdkafka::Bindings::RD_KAFKA_VTYPE_HEADER
434
- args << :string << key
435
- args << :pointer << value
436
- args << :size_t << value.bytesize
436
+ args.push(
437
+ :int, Rdkafka::Bindings::RD_KAFKA_VTYPE_HEADER,
438
+ :string, key,
439
+ :pointer, value,
440
+ :size_t, value.bytesize
441
+ )
437
442
  end
438
443
  end
439
444
  end
440
445
 
441
- args << :int << Rdkafka::Bindings::RD_KAFKA_VTYPE_END
446
+ args.push(:int, Rdkafka::Bindings::RD_KAFKA_VTYPE_END)
442
447
 
443
448
  # Produce the message
444
449
  response = @native_kafka.with_inner do |inner|
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rdkafka
4
- VERSION = "0.22.0.rc1"
4
+ VERSION = "0.22.1"
5
5
  LIBRDKAFKA_VERSION = "2.11.1"
6
6
  LIBRDKAFKA_SOURCE_SHA256 = "a2c87186b081e2705bb7d5338d5a01bc88d43273619b372ccb7bb0d264d0ca9f"
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.22.0.rc1
4
+ version: 0.22.1
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Thijs Cadier
@@ -176,6 +176,7 @@ files:
176
176
  - MIT-LICENSE
177
177
  - README.md
178
178
  - Rakefile
179
+ - bin/verify_kafka_warnings
179
180
  - docker-compose-ssl.yml
180
181
  - docker-compose.yml
181
182
  - ext/librdkafka.dylib