rdkafka 0.27.0-arm64-darwin → 0.28.0-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: 2f0d7b5a6f65c7fe42ff8b6c0a806d4d3f5e80fc0afe297b62d70d5377fadf71
4
- data.tar.gz: 737288428c0c547286917dd79dea6610e3444a18751f97bca5081bc7c755ad2d
3
+ metadata.gz: 057733a59bdd560c6fcc30294b8d6249cb68eb07a83f0ffdfd57d66f63d118ab
4
+ data.tar.gz: 2e7d2ac1775769bda592237f9f9bc35497364910ab833ed731bd6fde8d3d8316
5
5
  SHA512:
6
- metadata.gz: c319498bc068e05784626d9136903c4f97e0be8f1cba1cfb1e1f9a021d601bb9ef626188448099ba2bc38fa8bdf3f72a435f1d3dd9019389778b383be8163ada
7
- data.tar.gz: cccb7595f59000b7adb878519b864f0efee25f936889940730a5930be1e0156ca23886d231a8881f0dad7a801c4f77aeae708f16d6888a001118f8e6483a51d2
6
+ metadata.gz: 905797437c73593b3878fe6c88f2bcfa40fd75e5934d4e547354c042feea5675d7b91a6e3fb8b67baca0a2fa4bbca4338f988765d68188fc390b536fc6deb53e
7
+ data.tar.gz: d4a9efc200630f170dccaf13aa07f16d09ba886dd951c68eddee31a77aa49dc6e795a63ae4fa506e7a3e3def427da035b0dec6bd3ac58701d2c6979ff4ff8f41
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Rdkafka Changelog
2
2
 
3
+ ## 0.28.0 (2026-06-03)
4
+ - [Enhancement] Bump librdkafka to `2.14.1`
5
+ - [Enhancement] Replace version-gated `Warning[:performance]` with dynamic `Warning.categories` opt-in in spec helper so new Ruby warning categories are automatically enabled without manual updates.
6
+ - [Enhancement] `poll_batch` and `poll_batch_nb` now return error events inline as `RdkafkaError` objects rather than raising on the first error. The return type is `Array<Message, RdkafkaError>` and callers are responsible for handling errors in the result.
7
+
3
8
  ## 0.27.0 (2026-05-07)
4
9
  - [Feature] Add `Consumer#poll_batch(timeout_ms, max_items:)` and `Consumer#poll_batch_nb(timeout_ms, max_items:)` for batch message polling via `rd_kafka_consume_batch_queue`.
5
10
  - [Feature] Add `Config#describe_properties` to dump all librdkafka configuration properties (including defaults and hidden properties) as a Hash via `rd_kafka_conf_dump`.
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.28.x (2026-06-03) | 2.14.1 (2026-04-15) | yes |
166
167
  | 0.27.x (2026-05-07) | 2.14.0 (2026-04-01) | yes |
167
168
  | 0.26.x (2026-03-30) | 2.13.2 (2026-03-02) | yes |
168
169
  | 0.25.x (2026-01-21) | 2.12.1 (2025-10-21) | yes |
@@ -1,7 +1,7 @@
1
1
  services:
2
2
  kafka:
3
3
  container_name: kafka
4
- image: confluentinc/cp-kafka:8.2.0
4
+ image: confluentinc/cp-kafka:8.2.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.2.0
4
+ image: confluentinc/cp-kafka:8.2.1
5
5
 
6
6
  ports:
7
7
  - 9092:9092
data/ext/librdkafka.dylib CHANGED
Binary file
@@ -795,16 +795,21 @@ module Rdkafka
795
795
  # is available, librdkafka fills the buffer with whatever is immediately ready and
796
796
  # returns without further waiting.
797
797
  #
798
+ # Error events (e.g. `:partition_eof`) are returned inline as {RdkafkaError} objects
799
+ # rather than raised, so callers receive the complete batch — both messages and errors —
800
+ # and can decide how to handle each. This is particularly useful when multiple partitions
801
+ # signal EOF simultaneously: all signals appear in the returned array rather than only
802
+ # the first one being raised and the rest silently discarded.
803
+ #
798
804
  # @param timeout_ms [Integer] Timeout waiting for the first message (-1 for infinite)
799
805
  # @param max_items [Integer] Maximum number of messages to return per call
800
- # @return [Array<Message>] Array of messages (empty if none available within timeout)
801
- # @raise [RdkafkaError] When a consumed message contains an error
806
+ # @return [Array<Message, RdkafkaError>] Batch of messages and/or error events in arrival order
802
807
  # @raise [ClosedConsumerError] When called on a closed consumer
803
808
  def poll_batch(timeout_ms, max_items: 100)
804
809
  closed_consumer_check(__method__)
805
810
 
806
811
  buffer = batch_buffer(max_items)
807
- messages = []
812
+ results = []
808
813
 
809
814
  count = @native_kafka.with_inner do |_inner|
810
815
  Rdkafka::Bindings.rd_kafka_consume_batch_queue(
@@ -815,7 +820,7 @@ module Rdkafka
815
820
  )
816
821
  end
817
822
 
818
- return messages if count <= 0
823
+ return results if count <= 0
819
824
 
820
825
  i = 0
821
826
  begin
@@ -830,10 +835,13 @@ module Rdkafka
830
835
  native_message = Rdkafka::Bindings::Message.new(ptr)
831
836
 
832
837
  if native_message[:err] != Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
833
- raise Rdkafka::RdkafkaError.new(native_message[:err])
838
+ results << Rdkafka::RdkafkaError.new(native_message[:err])
839
+ Rdkafka::Bindings.rd_kafka_message_destroy(ptr)
840
+ i += 1
841
+ next
834
842
  end
835
843
 
836
- messages << Rdkafka::Consumer::Message.new(native_message)
844
+ results << Rdkafka::Consumer::Message.new(native_message)
837
845
  Rdkafka::Bindings.rd_kafka_message_destroy(ptr)
838
846
  i += 1
839
847
  end
@@ -845,7 +853,7 @@ module Rdkafka
845
853
  end
846
854
  end
847
855
 
848
- messages
856
+ results
849
857
  end
850
858
 
851
859
  # Poll for a batch of messages without releasing the GVL (Global VM Lock).
@@ -857,16 +865,17 @@ module Rdkafka
857
865
  # @note Since the GVL is not released, a non-zero timeout_ms will block all Ruby
858
866
  # threads/fibers for the duration. Use {#poll_batch} if you need a blocking wait.
859
867
  #
868
+ # Error events are returned inline as {RdkafkaError} objects; see {#poll_batch} for details.
869
+ #
860
870
  # @param timeout_ms [Integer] Timeout waiting for the first message (default: 0 for non-blocking)
861
871
  # @param max_items [Integer] Maximum number of messages to return per call
862
- # @return [Array<Message>] Array of messages (empty if none available within timeout)
863
- # @raise [RdkafkaError] When a consumed message contains an error
872
+ # @return [Array<Message, RdkafkaError>] Batch of messages and/or error events in arrival order
864
873
  # @raise [ClosedConsumerError] When called on a closed consumer
865
874
  def poll_batch_nb(timeout_ms = 0, max_items: 100)
866
875
  closed_consumer_check(__method__)
867
876
 
868
877
  buffer = batch_buffer(max_items)
869
- messages = []
878
+ results = []
870
879
 
871
880
  count = @native_kafka.with_inner do |_inner|
872
881
  Rdkafka::Bindings.rd_kafka_consume_batch_queue_nb(
@@ -877,7 +886,7 @@ module Rdkafka
877
886
  )
878
887
  end
879
888
 
880
- return messages if count <= 0
889
+ return results if count <= 0
881
890
 
882
891
  i = 0
883
892
  begin
@@ -892,10 +901,13 @@ module Rdkafka
892
901
  native_message = Rdkafka::Bindings::Message.new(ptr)
893
902
 
894
903
  if native_message[:err] != Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
895
- raise Rdkafka::RdkafkaError.new(native_message[:err])
904
+ results << Rdkafka::RdkafkaError.new(native_message[:err])
905
+ Rdkafka::Bindings.rd_kafka_message_destroy(ptr)
906
+ i += 1
907
+ next
896
908
  end
897
909
 
898
- messages << Rdkafka::Consumer::Message.new(native_message)
910
+ results << Rdkafka::Consumer::Message.new(native_message)
899
911
  Rdkafka::Bindings.rd_kafka_message_destroy(ptr)
900
912
  i += 1
901
913
  end
@@ -907,7 +919,7 @@ module Rdkafka
907
919
  end
908
920
  end
909
921
 
910
- messages
922
+ results
911
923
  end
912
924
 
913
925
  # Poll for new messages and yield for each received one. Iteration
@@ -2,9 +2,9 @@
2
2
 
3
3
  module Rdkafka
4
4
  # Current rdkafka-ruby gem version
5
- VERSION = "0.27.0"
5
+ VERSION = "0.28.0"
6
6
  # Target librdkafka version to be used
7
- LIBRDKAFKA_VERSION = "2.14.0"
7
+ LIBRDKAFKA_VERSION = "2.14.1"
8
8
  # SHA256 hash of the librdkafka source tarball for verification
9
- LIBRDKAFKA_SOURCE_SHA256 = "c05c03ef00a13a8463fac3e8918c04843c416f11ced58c889d806a88ca92cf99"
9
+ LIBRDKAFKA_SOURCE_SHA256 = "bb246e754dee3560e9b42bf4e844dc05de4b146a3cae937e36301ffacdc456e7"
10
10
  end
data/package-lock.json CHANGED
@@ -286,9 +286,9 @@
286
286
  }
287
287
  },
288
288
  "node_modules/smol-toml": {
289
- "version": "1.6.0",
290
- "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz",
291
- "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==",
289
+ "version": "1.6.1",
290
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz",
291
+ "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==",
292
292
  "dev": true,
293
293
  "license": "BSD-3-Clause",
294
294
  "engines": {
@@ -312,9 +312,9 @@
312
312
  }
313
313
  },
314
314
  "node_modules/yaml": {
315
- "version": "2.8.2",
316
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
317
- "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
315
+ "version": "2.9.0",
316
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
317
+ "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
318
318
  "dev": true,
319
319
  "license": "ISC",
320
320
  "bin": {
data/renovate.json CHANGED
@@ -85,13 +85,24 @@
85
85
  "ruby/setup-ruby",
86
86
  "ruby"
87
87
  ],
88
- "groupName": "ruby setup"
88
+ "groupName": "ruby setup",
89
+ "internalChecksFilter": "strict"
90
+ },
91
+ {
92
+ "description": "Let setup-ruby pass age gate before ruby so it is ready when the group PR is created",
93
+ "matchPackageNames": [
94
+ "ruby/setup-ruby"
95
+ ],
96
+ "minimumReleaseAge": "5 days"
89
97
  }
90
98
  ],
91
99
  "labels": [
92
100
  "dependencies"
93
101
  ],
94
102
  "lockFileMaintenance": {
95
- "enabled": true
103
+ "enabled": true,
104
+ "schedule": [
105
+ "before 4am on the first day of the month"
106
+ ]
96
107
  }
97
108
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdkafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.0
4
+ version: 0.28.0
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Thijs Cadier
@@ -171,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0'
173
173
  requirements: []
174
- rubygems_version: 4.0.6
174
+ rubygems_version: 4.0.10
175
175
  specification_version: 4
176
176
  summary: The rdkafka gem is a modern Kafka client library for Ruby based on librdkafka.
177
177
  It wraps the production-ready C client using the ffi gem and targets Kafka 1.0+