karafka-rdkafka 0.23.1.rc1-x86_64-linux-musl → 0.23.1.rc2-x86_64-linux-musl

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: 75d35510eeed51229812e0272d1b631864cc5d99aac30085b76d9a44beb67c3f
4
- data.tar.gz: 80c69c23fc8e86ec3b32d8841f3e5e50998637e058ebc42b9ff76a752615e2e7
3
+ metadata.gz: a6f31e18d04445df9aa5b943c1378ab89480d827acaaa2852810b9cf43498bfd
4
+ data.tar.gz: 9630fb2bcaa8df3fe3746bff3132d9c7b8232afce58b27283ba8ee651d1b99f6
5
5
  SHA512:
6
- metadata.gz: e801e0f2fd52276383f6476af9f7dd33c8af9ff908a007ddd9839ed2f2229bb56098dbcd46668d5a50c5615ec681da8a0bb188bbf21ae4d1b4ca4eef092911c8
7
- data.tar.gz: e8522b826226dcb481c611b22ade6e7537ca59680f7c90043008258d4d96bee8827f902feda273ca0b3b484ae7be2a4bc2189c01e036e2dd26a138b726497b79
6
+ metadata.gz: 1c0aae90982f3c0ba697561db62af25b4bb49fb5111a398106f93f56a7941ac984e1ee5920785ee547de4b54207729c41398c2f5776b7c91234a45784ee53cb3
7
+ data.tar.gz: 8dc2d2f647224054a55b6df9d0edbd4bff5d81074b7f2a4b5c72ec64a09be21b0ffacf47b7756f4ee05a57e42e6370cf825acda8a0c1ecd629dd5ff30aedf536
data/ext/librdkafka.so CHANGED
Binary file
data/lib/rdkafka/admin.rb CHANGED
@@ -149,7 +149,7 @@ module Rdkafka
149
149
  # Create and register the handle we will return to the caller
150
150
  create_topic_handle = CreateTopicHandle.new
151
151
  create_topic_handle[:pending] = true
152
- create_topic_handle[:response] = -1
152
+ create_topic_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
153
153
  CreateTopicHandle.register(create_topic_handle)
154
154
  admin_options_ptr = @native_kafka.with_inner do |inner|
155
155
  Rdkafka::Bindings.rd_kafka_AdminOptions_new(inner, Rdkafka::Bindings::RD_KAFKA_ADMIN_OP_CREATETOPICS)
@@ -202,7 +202,7 @@ module Rdkafka
202
202
  # Create and register the handle we will return to the caller
203
203
  delete_groups_handle = DeleteGroupsHandle.new
204
204
  delete_groups_handle[:pending] = true
205
- delete_groups_handle[:response] = -1
205
+ delete_groups_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
206
206
  DeleteGroupsHandle.register(delete_groups_handle)
207
207
  admin_options_ptr = @native_kafka.with_inner do |inner|
208
208
  Rdkafka::Bindings.rd_kafka_AdminOptions_new(inner, Rdkafka::Bindings::RD_KAFKA_ADMIN_OP_DELETETOPICS)
@@ -259,7 +259,7 @@ module Rdkafka
259
259
  # Create and register the handle we will return to the caller
260
260
  delete_topic_handle = DeleteTopicHandle.new
261
261
  delete_topic_handle[:pending] = true
262
- delete_topic_handle[:response] = -1
262
+ delete_topic_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
263
263
  DeleteTopicHandle.register(delete_topic_handle)
264
264
  admin_options_ptr = @native_kafka.with_inner do |inner|
265
265
  Rdkafka::Bindings.rd_kafka_AdminOptions_new(inner, Rdkafka::Bindings::RD_KAFKA_ADMIN_OP_DELETETOPICS)
@@ -427,7 +427,7 @@ module Rdkafka
427
427
  # Create and register the handle that we will return to the caller
428
428
  create_acl_handle = CreateAclHandle.new
429
429
  create_acl_handle[:pending] = true
430
- create_acl_handle[:response] = -1
430
+ create_acl_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
431
431
  CreateAclHandle.register(create_acl_handle)
432
432
 
433
433
  admin_options_ptr = @native_kafka.with_inner do |inner|
@@ -534,7 +534,7 @@ module Rdkafka
534
534
  # Create and register the handle that we will return to the caller
535
535
  delete_acl_handle = DeleteAclHandle.new
536
536
  delete_acl_handle[:pending] = true
537
- delete_acl_handle[:response] = -1
537
+ delete_acl_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
538
538
  DeleteAclHandle.register(delete_acl_handle)
539
539
 
540
540
  admin_options_ptr = @native_kafka.with_inner do |inner|
@@ -634,7 +634,7 @@ module Rdkafka
634
634
  # Create and register the handle that we will return to the caller
635
635
  describe_acl_handle = DescribeAclHandle.new
636
636
  describe_acl_handle[:pending] = true
637
- describe_acl_handle[:response] = -1
637
+ describe_acl_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
638
638
  DescribeAclHandle.register(describe_acl_handle)
639
639
 
640
640
  admin_options_ptr = @native_kafka.with_inner do |inner|
@@ -680,7 +680,7 @@ module Rdkafka
680
680
 
681
681
  handle = DescribeConfigsHandle.new
682
682
  handle[:pending] = true
683
- handle[:response] = -1
683
+ handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
684
684
 
685
685
  queue_ptr = @native_kafka.with_inner do |inner|
686
686
  Rdkafka::Bindings.rd_kafka_queue_get_background(inner)
@@ -753,7 +753,7 @@ module Rdkafka
753
753
 
754
754
  handle = IncrementalAlterConfigsHandle.new
755
755
  handle[:pending] = true
756
- handle[:response] = -1
756
+ handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
757
757
 
758
758
  queue_ptr = @native_kafka.with_inner do |inner|
759
759
  Rdkafka::Bindings.rd_kafka_queue_get_background(inner)
@@ -22,7 +22,39 @@ module Rdkafka
22
22
  end
23
23
  end
24
24
 
25
- ffi_lib File.join(__dir__, "../../ext/librdkafka.#{lib_extension}")
25
+ # Wrap ffi_lib to provide better error messages for glibc compatibility issues
26
+ begin
27
+ ffi_lib File.join(__dir__, "../../ext/librdkafka.#{lib_extension}")
28
+ rescue LoadError => e
29
+ error_message = e.message
30
+
31
+ # Check if this is a glibc version mismatch error
32
+ if error_message =~ /GLIBC_[\d.]+['"` ]?\s*not found/i
33
+ glibc_version = error_message[/GLIBC_([\d.]+)/, 1] || 'unknown'
34
+
35
+ raise Rdkafka::LibraryLoadError, <<~ERROR_MSG.strip
36
+ Failed to load librdkafka due to glibc compatibility issue.
37
+
38
+ The precompiled librdkafka binary requires glibc version #{glibc_version} or higher,
39
+ but your system has an older version installed.
40
+
41
+ To resolve this issue, you have two options:
42
+
43
+ 1. Upgrade your system to a supported platform (recommended)
44
+
45
+ 2. Force compilation from source by reinstalling without the precompiled binary:
46
+ gem install rdkafka --platform=ruby
47
+
48
+ Or if using Bundler, add to your Gemfile:
49
+ gem 'rdkafka', force_ruby_platform: true
50
+
51
+ Original error: #{error_message}
52
+ ERROR_MSG
53
+ else
54
+ # Re-raise the original error if it's not a glibc issue
55
+ raise
56
+ end
57
+ end
26
58
 
27
59
  RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = -175
28
60
  RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = -174
@@ -37,7 +69,7 @@ module Rdkafka
37
69
  # Unassigned partition
38
70
  RD_KAFKA_PARTITION_UA = -1
39
71
  # String representation of unassigned partition (used in stats hash keys)
40
- RD_KAFKA_PARTITION_UA_STR = '-1'.freeze
72
+ RD_KAFKA_PARTITION_UA_STR = RD_KAFKA_PARTITION_UA.to_s.freeze
41
73
 
42
74
  RD_KAFKA_OFFSET_END = -1
43
75
  RD_KAFKA_OFFSET_BEGINNING = -2
@@ -256,7 +288,7 @@ module Rdkafka
256
288
  end
257
289
 
258
290
  # Return 0 so librdkafka frees the json string
259
- 0
291
+ RD_KAFKA_RESP_ERR_NO_ERROR
260
292
  end
261
293
 
262
294
  # Retrieves fatal error details from a kafka client handle.
@@ -28,7 +28,7 @@ module Rdkafka
28
28
  native_error = Rdkafka::Bindings.rd_kafka_group_result_error(group_result_pointer)
29
29
 
30
30
  if native_error.null?
31
- @result_error = 0
31
+ @result_error = Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
32
32
  @error_string = FFI::Pointer::NULL
33
33
  else
34
34
  @result_error = native_error[:code]
@@ -57,7 +57,7 @@ module Rdkafka
57
57
  if partitions.is_a? Integer
58
58
  partitions = (0..partitions - 1)
59
59
  end
60
- @data[topic.to_s] = partitions.map { |p| Partition.new(p, nil, 0) }
60
+ @data[topic.to_s] = partitions.map { |p| Partition.new(p, nil, Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR) }
61
61
  end
62
62
  end
63
63
 
@@ -178,7 +178,7 @@ module Rdkafka
178
178
  Rdkafka::Bindings.rd_kafka_topic_partition_list_add(
179
179
  tpl,
180
180
  topic,
181
- -1
181
+ Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
182
182
  )
183
183
  end
184
184
  end
data/lib/rdkafka/error.rb CHANGED
@@ -238,4 +238,7 @@ module Rdkafka
238
238
  super("Illegal call to a closed inner librdkafka instance")
239
239
  end
240
240
  end
241
+
242
+ # Error class for librdkafka library loading failures (e.g., glibc compatibility issues).
243
+ class LibraryLoadError < BaseError; end
241
244
  end
@@ -303,9 +303,9 @@ module Rdkafka
303
303
  end
304
304
  rescue Rdkafka::RdkafkaError => e
305
305
  # If the topic does not exist, it will be created or if not allowed another error will be
306
- # raised. We here return -1 so this can happen without early error happening on metadata
307
- # discovery.
308
- return -1 if e.code == :unknown_topic_or_part
306
+ # raised. We here return RD_KAFKA_PARTITION_UA so this can happen without early error
307
+ # happening on metadata discovery.
308
+ return Rdkafka::Bindings::RD_KAFKA_PARTITION_UA if e.code == :unknown_topic_or_part
309
309
 
310
310
  raise(e)
311
311
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rdkafka
4
- VERSION = "0.23.1.rc1"
4
+ VERSION = "0.23.1.rc2"
5
5
  LIBRDKAFKA_VERSION = "2.12.1"
6
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.1.rc1
4
+ version: 0.23.1.rc2
5
5
  platform: x86_64-linux-musl
6
6
  authors:
7
7
  - Thijs Cadier