rdkafka 0.30.0 → 0.31.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -2
- data/README.md +1 -0
- data/dist/{librdkafka-2.15.0.tar.gz → librdkafka-2.15.1.tar.gz} +0 -0
- data/docker-compose-ssl.yml +1 -0
- data/docker-compose.yml +1 -0
- data/lib/rdkafka/admin/describe_cluster_handle.rb +31 -0
- data/lib/rdkafka/admin/describe_cluster_report.rb +48 -0
- data/lib/rdkafka/admin/describe_consumer_groups_handle.rb +31 -0
- data/lib/rdkafka/admin/describe_consumer_groups_report.rb +151 -0
- data/lib/rdkafka/admin/describe_result_parsing.rb +47 -0
- data/lib/rdkafka/admin/describe_topics_handle.rb +31 -0
- data/lib/rdkafka/admin/describe_topics_report.rb +118 -0
- data/lib/rdkafka/admin.rb +245 -0
- data/lib/rdkafka/bindings/admin/acls.rb +85 -0
- data/lib/rdkafka/bindings/admin/configs.rb +37 -0
- data/lib/rdkafka/bindings/admin/list_offsets.rb +26 -0
- data/lib/rdkafka/bindings/admin.rb +197 -0
- data/lib/rdkafka/bindings/callbacks.rb +100 -0
- data/lib/rdkafka/bindings/configuration.rb +50 -0
- data/lib/rdkafka/bindings/consumer.rb +83 -0
- data/lib/rdkafka/bindings/errors.rb +15 -0
- data/lib/rdkafka/bindings/handle.rb +16 -0
- data/lib/rdkafka/bindings/messages.rb +28 -0
- data/lib/rdkafka/bindings/metadata.rb +14 -0
- data/lib/rdkafka/bindings/polling.rb +17 -0
- data/lib/rdkafka/bindings/producer.rb +77 -0
- data/lib/rdkafka/bindings/structs.rb +62 -0
- data/lib/rdkafka/bindings.rb +12 -655
- data/lib/rdkafka/callbacks/describe_cluster_handler.rb +36 -0
- data/lib/rdkafka/callbacks/describe_consumer_groups_handler.rb +36 -0
- data/lib/rdkafka/callbacks/describe_topics_handler.rb +36 -0
- data/lib/rdkafka/callbacks.rb +10 -1
- data/lib/rdkafka/clients.rb +13 -46
- data/lib/rdkafka/consumer/message.rb +6 -9
- data/lib/rdkafka/producer/delivery_handle.rb +8 -2
- data/lib/rdkafka/producer/delivery_report.rb +51 -1
- data/lib/rdkafka/version.rb +3 -3
- data/lib/rdkafka.rb +10 -0
- data/package-lock.json +9 -9
- data/rdkafka.gemspec +1 -1
- data/renovate.json +3 -0
- metadata +27 -3
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DESCRIBECLUSTER_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DescribeClusterHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the describe cluster handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
result_ptr = Rdkafka::Bindings.rd_kafka_event_DescribeCluster_result(event_ptr)
|
|
14
|
+
handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
15
|
+
|
|
16
|
+
return unless (handle = Rdkafka::Admin::DescribeClusterHandle.remove(handle_ptr.address))
|
|
17
|
+
|
|
18
|
+
return if resolve_operation_error(event_ptr, handle)
|
|
19
|
+
|
|
20
|
+
handle[:response] = Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
21
|
+
|
|
22
|
+
# Parsing must copy everything out of event-owned memory before the event is destroyed.
|
|
23
|
+
# An exception here is captured and re-raised on the waiting thread, since it cannot
|
|
24
|
+
# unwind through librdkafka native frames.
|
|
25
|
+
handle.result = begin
|
|
26
|
+
Rdkafka::Admin::DescribeClusterReport.new(result_ptr)
|
|
27
|
+
rescue => e
|
|
28
|
+
e
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
handle.unlock
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DESCRIBECONSUMERGROUPS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DescribeConsumerGroupsHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the describe-consumer-groups handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
result_ptr = Rdkafka::Bindings.rd_kafka_event_DescribeConsumerGroups_result(event_ptr)
|
|
14
|
+
handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
15
|
+
|
|
16
|
+
return unless (handle = Rdkafka::Admin::DescribeConsumerGroupsHandle.remove(handle_ptr.address))
|
|
17
|
+
|
|
18
|
+
return if resolve_operation_error(event_ptr, handle)
|
|
19
|
+
|
|
20
|
+
handle[:response] = Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
21
|
+
|
|
22
|
+
# Parsing must copy everything out of event-owned memory before the event is destroyed.
|
|
23
|
+
# An exception here is captured and re-raised on the waiting thread, since it cannot
|
|
24
|
+
# unwind through librdkafka native frames.
|
|
25
|
+
handle.result = begin
|
|
26
|
+
Rdkafka::Admin::DescribeConsumerGroupsReport.new(result_ptr)
|
|
27
|
+
rescue => e
|
|
28
|
+
e
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
handle.unlock
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DESCRIBETOPICS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DescribeTopicsHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the describe topics handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
result_ptr = Rdkafka::Bindings.rd_kafka_event_DescribeTopics_result(event_ptr)
|
|
14
|
+
handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
15
|
+
|
|
16
|
+
return unless (handle = Rdkafka::Admin::DescribeTopicsHandle.remove(handle_ptr.address))
|
|
17
|
+
|
|
18
|
+
return if resolve_operation_error(event_ptr, handle)
|
|
19
|
+
|
|
20
|
+
handle[:response] = Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
21
|
+
|
|
22
|
+
# Parsing must copy everything out of event-owned memory before the event is destroyed.
|
|
23
|
+
# An exception here is captured and re-raised on the waiting thread, since it cannot
|
|
24
|
+
# unwind through librdkafka native frames.
|
|
25
|
+
handle.result = begin
|
|
26
|
+
Rdkafka::Admin::DescribeTopicsReport.new(result_ptr)
|
|
27
|
+
rescue => e
|
|
28
|
+
e
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
handle.unlock
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
data/lib/rdkafka/callbacks.rb
CHANGED
|
@@ -219,6 +219,9 @@ module Rdkafka
|
|
|
219
219
|
when Rdkafka::Bindings::RD_KAFKA_EVENT_INCREMENTALALTERCONFIGS_RESULT then IncrementalAlterConfigsHandler
|
|
220
220
|
when Rdkafka::Bindings::RD_KAFKA_EVENT_LISTOFFSETS_RESULT then ListOffsetsHandler
|
|
221
221
|
when Rdkafka::Bindings::RD_KAFKA_EVENT_LISTCONSUMERGROUPS_RESULT then ListConsumerGroupsHandler
|
|
222
|
+
when Rdkafka::Bindings::RD_KAFKA_EVENT_DESCRIBECONSUMERGROUPS_RESULT then DescribeConsumerGroupsHandler
|
|
223
|
+
when Rdkafka::Bindings::RD_KAFKA_EVENT_DESCRIBECLUSTER_RESULT then DescribeClusterHandler
|
|
224
|
+
when Rdkafka::Bindings::RD_KAFKA_EVENT_DESCRIBETOPICS_RESULT then DescribeTopicsHandler
|
|
222
225
|
end
|
|
223
226
|
|
|
224
227
|
handler&.call(event_ptr)
|
|
@@ -247,6 +250,9 @@ module Rdkafka
|
|
|
247
250
|
delivery_handle[:response] = message[:err]
|
|
248
251
|
delivery_handle[:partition] = message[:partition]
|
|
249
252
|
delivery_handle[:offset] = message[:offset]
|
|
253
|
+
delivery_handle[:status] = Rdkafka::Bindings.rd_kafka_message_status(message_ptr)
|
|
254
|
+
delivery_handle[:latency] = Rdkafka::Bindings.rd_kafka_message_latency(message_ptr)
|
|
255
|
+
delivery_handle[:broker_id] = Rdkafka::Bindings.rd_kafka_message_broker_id(message_ptr)
|
|
250
256
|
# The topic is not stored on the handle here: it is already set as the handle's
|
|
251
257
|
# `topic` Ruby attribute during produce, which spares a native string copy that
|
|
252
258
|
# would otherwise be allocated and retained for every message.
|
|
@@ -260,7 +266,10 @@ module Rdkafka
|
|
|
260
266
|
message[:offset],
|
|
261
267
|
topic_name,
|
|
262
268
|
message[:err],
|
|
263
|
-
delivery_handle.label
|
|
269
|
+
delivery_handle.label,
|
|
270
|
+
status: delivery_handle[:status],
|
|
271
|
+
latency: delivery_handle[:latency],
|
|
272
|
+
broker_id: delivery_handle[:broker_id]
|
|
264
273
|
),
|
|
265
274
|
delivery_handle
|
|
266
275
|
)
|
data/lib/rdkafka/clients.rb
CHANGED
|
@@ -4,22 +4,10 @@ module Rdkafka
|
|
|
4
4
|
# Tracks live public clients so they can be closed before Ruby begins forced finalization.
|
|
5
5
|
# @private
|
|
6
6
|
module Clients
|
|
7
|
-
# Ruby rewrote `ObjectSpace::WeakMap` in 3.3. On 3.2 and earlier its `[]` can hand back a
|
|
8
|
-
# foreign or already-freed object for a key, which raises `NoMethodError` or segfaults the VM
|
|
9
|
-
# the moment the value is touched. Track weakly only where that is safe and fall back to a
|
|
10
|
-
# strong registry - pruned as clients close - on older Rubies. The strong registry holds an
|
|
11
|
-
# open, un-closed client until shutdown, which is exactly when this cleanup needs it anyway.
|
|
12
|
-
WEAK_TRACKING = Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.3")
|
|
13
|
-
|
|
14
7
|
@pid = Process.pid
|
|
15
8
|
@mutex = Mutex.new
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@clients = ObjectSpace::WeakMap.new
|
|
19
|
-
@tokens = [].freeze
|
|
20
|
-
else
|
|
21
|
-
@clients = {}.freeze
|
|
22
|
-
end
|
|
9
|
+
@clients = ObjectSpace::WeakMap.new
|
|
10
|
+
@tokens = [].freeze
|
|
23
11
|
|
|
24
12
|
# Registers a successfully constructed client so it can be closed during process shutdown.
|
|
25
13
|
# @param client [Consumer, Producer, Admin] client to close during process shutdown
|
|
@@ -28,21 +16,14 @@ module Rdkafka
|
|
|
28
16
|
reset_after_fork
|
|
29
17
|
|
|
30
18
|
@mutex.synchronize do
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
@tokens = (@tokens + [token]).freeze
|
|
40
|
-
else
|
|
41
|
-
# Strong references, so drop clients that have already been closed to bound growth.
|
|
42
|
-
live = @clients.reject { |_id, existing| existing.closed? }
|
|
43
|
-
live[client.object_id] = client
|
|
44
|
-
@clients = live.freeze
|
|
45
|
-
end
|
|
19
|
+
live_clients
|
|
20
|
+
|
|
21
|
+
# The strongly-held token is the key and the client is the weak value, so registering a
|
|
22
|
+
# client never keeps it alive. Enumerating weak keys can expose reclaimed slots, so we
|
|
23
|
+
# look the value up by token instead.
|
|
24
|
+
token = Object.new
|
|
25
|
+
@clients[token] = client
|
|
26
|
+
@tokens = (@tokens + [token]).freeze
|
|
46
27
|
end
|
|
47
28
|
|
|
48
29
|
client
|
|
@@ -54,7 +35,7 @@ module Rdkafka
|
|
|
54
35
|
def self.close_all
|
|
55
36
|
return unless @pid == Process.pid
|
|
56
37
|
|
|
57
|
-
clients = @mutex.synchronize {
|
|
38
|
+
clients = @mutex.synchronize { live_clients }
|
|
58
39
|
first_error = nil
|
|
59
40
|
|
|
60
41
|
clients.each do |client|
|
|
@@ -66,16 +47,7 @@ module Rdkafka
|
|
|
66
47
|
raise first_error if first_error
|
|
67
48
|
end
|
|
68
49
|
|
|
69
|
-
# Returns the currently registered live clients.
|
|
70
|
-
# @return [Array<Consumer, Producer, Admin>] live clients
|
|
71
|
-
# @private
|
|
72
|
-
def self.current_clients
|
|
73
|
-
WEAK_TRACKING ? live_clients : @clients.values
|
|
74
|
-
end
|
|
75
|
-
private_class_method :current_clients
|
|
76
|
-
|
|
77
50
|
# Returns the live clients and releases tokens whose clients have been collected.
|
|
78
|
-
# Weak-tracking Rubies only.
|
|
79
51
|
# @return [Array<Consumer, Producer, Admin>] live clients
|
|
80
52
|
# @private
|
|
81
53
|
def self.live_clients
|
|
@@ -99,13 +71,8 @@ module Rdkafka
|
|
|
99
71
|
def self.reset_after_fork
|
|
100
72
|
return if @pid == Process.pid
|
|
101
73
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
@tokens = [].freeze
|
|
105
|
-
else
|
|
106
|
-
@clients = {}.freeze
|
|
107
|
-
end
|
|
108
|
-
|
|
74
|
+
@clients = ObjectSpace::WeakMap.new
|
|
75
|
+
@tokens = [].freeze
|
|
109
76
|
@pid = Process.pid
|
|
110
77
|
@mutex = Mutex.new
|
|
111
78
|
end
|
|
@@ -35,19 +35,16 @@ module Rdkafka
|
|
|
35
35
|
# @param native_message [Rdkafka::Bindings::Message] native message struct from librdkafka
|
|
36
36
|
def initialize(native_message)
|
|
37
37
|
# Set topic
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
end
|
|
38
|
+
rkt = native_message[:rkt]
|
|
39
|
+
@topic = Rdkafka::Bindings.rd_kafka_topic_name(rkt) unless rkt.null?
|
|
41
40
|
# Set partition
|
|
42
41
|
@partition = native_message[:partition]
|
|
43
42
|
# Set payload
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
end
|
|
43
|
+
payload = native_message[:payload]
|
|
44
|
+
@payload = payload.read_string(native_message[:len]) unless payload.null?
|
|
47
45
|
# Set key
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
end
|
|
46
|
+
key = native_message[:key]
|
|
47
|
+
@key = key.read_string(native_message[:key_len]) unless key.null?
|
|
51
48
|
# Set offset
|
|
52
49
|
@offset = native_message[:offset]
|
|
53
50
|
# Set timestamp
|
|
@@ -7,7 +7,10 @@ module Rdkafka
|
|
|
7
7
|
layout :pending, :bool,
|
|
8
8
|
:response, :int,
|
|
9
9
|
:partition, :int,
|
|
10
|
-
:offset, :int64
|
|
10
|
+
:offset, :int64,
|
|
11
|
+
:status, :int,
|
|
12
|
+
:latency, :int64,
|
|
13
|
+
:broker_id, :int32
|
|
11
14
|
|
|
12
15
|
# @return [Object, nil] label set during message production or nil by default
|
|
13
16
|
attr_accessor :label
|
|
@@ -31,7 +34,10 @@ module Rdkafka
|
|
|
31
34
|
# we should not return it
|
|
32
35
|
topic,
|
|
33
36
|
(self[:response] != 0) ? RdkafkaError.new(self[:response]) : nil,
|
|
34
|
-
label
|
|
37
|
+
label,
|
|
38
|
+
status: self[:status],
|
|
39
|
+
latency: self[:latency],
|
|
40
|
+
broker_id: self[:broker_id]
|
|
35
41
|
)
|
|
36
42
|
end
|
|
37
43
|
end
|
|
@@ -25,6 +25,26 @@ module Rdkafka
|
|
|
25
25
|
# @return [Object, nil] label set during message production or nil by default
|
|
26
26
|
attr_reader :label
|
|
27
27
|
|
|
28
|
+
# Persistence status of the message, one of `Bindings::RD_KAFKA_MSG_STATUS_*`:
|
|
29
|
+
# - `RD_KAFKA_MSG_STATUS_NOT_PERSISTED` - the message was not written to the broker. A retry
|
|
30
|
+
# risks reordering, but not a duplicate.
|
|
31
|
+
# - `RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED` - the message may have been written (e.g. the
|
|
32
|
+
# request timed out before an ack). A retry risks reordering and a duplicate.
|
|
33
|
+
# - `RD_KAFKA_MSG_STATUS_PERSISTED` - the broker acknowledged the message. Trust this only
|
|
34
|
+
# with `acks=all`.
|
|
35
|
+
# `nil` when the report was not built from a delivery callback.
|
|
36
|
+
# @return [Integer, nil]
|
|
37
|
+
attr_reader :status
|
|
38
|
+
|
|
39
|
+
# Time from the `produce` call until the delivery report, in microseconds, or `nil` when
|
|
40
|
+
# not available
|
|
41
|
+
# @return [Integer, nil]
|
|
42
|
+
attr_reader :latency
|
|
43
|
+
|
|
44
|
+
# Id of the broker the message was produced to, or `nil` when not known
|
|
45
|
+
# @return [Integer, nil]
|
|
46
|
+
attr_reader :broker_id
|
|
47
|
+
|
|
28
48
|
# We alias the `#topic_name` under `#topic` to make this consistent with `Consumer::Message`
|
|
29
49
|
# where the topic name is under `#topic` method. That way we have a consistent name that
|
|
30
50
|
# is present in both places
|
|
@@ -38,12 +58,42 @@ module Rdkafka
|
|
|
38
58
|
# @param topic_name [String, nil] topic name
|
|
39
59
|
# @param error [Integer, nil] error code if any
|
|
40
60
|
# @param label [Object, nil] user-defined label
|
|
41
|
-
|
|
61
|
+
# @param status [Integer, nil] `Bindings::RD_KAFKA_MSG_STATUS_*` persistence status
|
|
62
|
+
# @param latency [Integer, nil] produce latency in microseconds, negative when not available
|
|
63
|
+
# @param broker_id [Integer, nil] broker id, negative when not known
|
|
64
|
+
def initialize(
|
|
65
|
+
partition,
|
|
66
|
+
offset,
|
|
67
|
+
topic_name = nil,
|
|
68
|
+
error = nil,
|
|
69
|
+
label = nil,
|
|
70
|
+
status: nil,
|
|
71
|
+
latency: nil,
|
|
72
|
+
broker_id: nil
|
|
73
|
+
)
|
|
42
74
|
@partition = partition
|
|
43
75
|
@offset = offset
|
|
44
76
|
@topic_name = topic_name
|
|
45
77
|
@error = error
|
|
46
78
|
@label = label
|
|
79
|
+
@status = status
|
|
80
|
+
@latency = (latency.nil? || latency.negative?) ? nil : latency
|
|
81
|
+
@broker_id = (broker_id.nil? || broker_id.negative?) ? nil : broker_id
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# @return [Boolean] true when the broker acknowledged the message
|
|
85
|
+
def persisted?
|
|
86
|
+
status == Bindings::RD_KAFKA_MSG_STATUS_PERSISTED
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# @return [Boolean] true when the message may have been written, so a retry may duplicate it
|
|
90
|
+
def possibly_persisted?
|
|
91
|
+
status == Bindings::RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# @return [Boolean] true when the message was not written, so a retry does not duplicate it
|
|
95
|
+
def not_persisted?
|
|
96
|
+
status == Bindings::RD_KAFKA_MSG_STATUS_NOT_PERSISTED
|
|
47
97
|
end
|
|
48
98
|
end
|
|
49
99
|
end
|
data/lib/rdkafka/version.rb
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
module Rdkafka
|
|
4
4
|
# Current rdkafka-ruby gem version
|
|
5
|
-
VERSION = "0.
|
|
5
|
+
VERSION = "0.31.0"
|
|
6
6
|
# Target librdkafka version to be used
|
|
7
|
-
LIBRDKAFKA_VERSION = "2.15.
|
|
7
|
+
LIBRDKAFKA_VERSION = "2.15.1"
|
|
8
8
|
# SHA256 hash of the librdkafka source tarball for verification
|
|
9
|
-
LIBRDKAFKA_SOURCE_SHA256 = "
|
|
9
|
+
LIBRDKAFKA_SOURCE_SHA256 = "23c8575c7d1ced07246cb9cf200c11325b72201fd4134a02414ca869fbdd8ed3"
|
|
10
10
|
end
|
data/lib/rdkafka.rb
CHANGED
|
@@ -41,6 +41,13 @@ require "rdkafka/admin/list_offsets_handle"
|
|
|
41
41
|
require "rdkafka/admin/list_offsets_report"
|
|
42
42
|
require "rdkafka/admin/list_consumer_groups_handle"
|
|
43
43
|
require "rdkafka/admin/list_consumer_groups_report"
|
|
44
|
+
require "rdkafka/admin/describe_result_parsing"
|
|
45
|
+
require "rdkafka/admin/describe_cluster_handle"
|
|
46
|
+
require "rdkafka/admin/describe_cluster_report"
|
|
47
|
+
require "rdkafka/admin/describe_topics_handle"
|
|
48
|
+
require "rdkafka/admin/describe_topics_report"
|
|
49
|
+
require "rdkafka/admin/describe_consumer_groups_handle"
|
|
50
|
+
require "rdkafka/admin/describe_consumer_groups_report"
|
|
44
51
|
require "rdkafka/admin/acl_binding_result"
|
|
45
52
|
require "rdkafka/admin/config_binding_result"
|
|
46
53
|
require "rdkafka/admin/config_resource_binding_result"
|
|
@@ -61,6 +68,9 @@ require "rdkafka/callbacks/describe_configs_handler"
|
|
|
61
68
|
require "rdkafka/callbacks/incremental_alter_configs_handler"
|
|
62
69
|
require "rdkafka/callbacks/list_offsets_handler"
|
|
63
70
|
require "rdkafka/callbacks/list_consumer_groups_handler"
|
|
71
|
+
require "rdkafka/callbacks/describe_cluster_handler"
|
|
72
|
+
require "rdkafka/callbacks/describe_topics_handler"
|
|
73
|
+
require "rdkafka/callbacks/describe_consumer_groups_handler"
|
|
64
74
|
require "rdkafka/config"
|
|
65
75
|
require "rdkafka/consumer"
|
|
66
76
|
require "rdkafka/consumer/headers"
|
data/package-lock.json
CHANGED
|
@@ -103,9 +103,9 @@
|
|
|
103
103
|
}
|
|
104
104
|
},
|
|
105
105
|
"node_modules/fastq": {
|
|
106
|
-
"version": "1.20.
|
|
107
|
-
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.
|
|
108
|
-
"integrity": "sha512-
|
|
106
|
+
"version": "1.20.3",
|
|
107
|
+
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz",
|
|
108
|
+
"integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==",
|
|
109
109
|
"dev": true,
|
|
110
110
|
"license": "ISC",
|
|
111
111
|
"dependencies": {
|
|
@@ -286,9 +286,9 @@
|
|
|
286
286
|
}
|
|
287
287
|
},
|
|
288
288
|
"node_modules/smol-toml": {
|
|
289
|
-
"version": "1.
|
|
290
|
-
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.
|
|
291
|
-
"integrity": "sha512-
|
|
289
|
+
"version": "1.9.0",
|
|
290
|
+
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.0.tgz",
|
|
291
|
+
"integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==",
|
|
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.9.
|
|
316
|
-
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.
|
|
317
|
-
"integrity": "sha512-
|
|
315
|
+
"version": "2.9.1",
|
|
316
|
+
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz",
|
|
317
|
+
"integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==",
|
|
318
318
|
"dev": true,
|
|
319
319
|
"license": "ISC",
|
|
320
320
|
"bin": {
|
data/rdkafka.gemspec
CHANGED
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
|
|
|
12
12
|
gem.name = "rdkafka"
|
|
13
13
|
gem.require_paths = ["lib"]
|
|
14
14
|
gem.version = Rdkafka::VERSION
|
|
15
|
-
gem.required_ruby_version = ">= 3.
|
|
15
|
+
gem.required_ruby_version = ">= 3.3"
|
|
16
16
|
|
|
17
17
|
files = `git ls-files`.split($\)
|
|
18
18
|
files = files.reject do |file|
|
data/renovate.json
CHANGED
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.
|
|
4
|
+
version: 0.31.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Thijs Cadier
|
|
@@ -93,7 +93,7 @@ files:
|
|
|
93
93
|
- README.md
|
|
94
94
|
- Rakefile
|
|
95
95
|
- bin/verify_kafka_warnings
|
|
96
|
-
- dist/librdkafka-2.15.
|
|
96
|
+
- dist/librdkafka-2.15.1.tar.gz
|
|
97
97
|
- dist/patches/rdkafka_global_init.patch
|
|
98
98
|
- docker-compose-ssl.yml
|
|
99
99
|
- docker-compose.yml
|
|
@@ -124,8 +124,15 @@ files:
|
|
|
124
124
|
- lib/rdkafka/admin/delete_topic_report.rb
|
|
125
125
|
- lib/rdkafka/admin/describe_acl_handle.rb
|
|
126
126
|
- lib/rdkafka/admin/describe_acl_report.rb
|
|
127
|
+
- lib/rdkafka/admin/describe_cluster_handle.rb
|
|
128
|
+
- lib/rdkafka/admin/describe_cluster_report.rb
|
|
127
129
|
- lib/rdkafka/admin/describe_configs_handle.rb
|
|
128
130
|
- lib/rdkafka/admin/describe_configs_report.rb
|
|
131
|
+
- lib/rdkafka/admin/describe_consumer_groups_handle.rb
|
|
132
|
+
- lib/rdkafka/admin/describe_consumer_groups_report.rb
|
|
133
|
+
- lib/rdkafka/admin/describe_result_parsing.rb
|
|
134
|
+
- lib/rdkafka/admin/describe_topics_handle.rb
|
|
135
|
+
- lib/rdkafka/admin/describe_topics_report.rb
|
|
129
136
|
- lib/rdkafka/admin/incremental_alter_configs_handle.rb
|
|
130
137
|
- lib/rdkafka/admin/incremental_alter_configs_report.rb
|
|
131
138
|
- lib/rdkafka/admin/list_consumer_groups_handle.rb
|
|
@@ -133,6 +140,20 @@ files:
|
|
|
133
140
|
- lib/rdkafka/admin/list_offsets_handle.rb
|
|
134
141
|
- lib/rdkafka/admin/list_offsets_report.rb
|
|
135
142
|
- lib/rdkafka/bindings.rb
|
|
143
|
+
- lib/rdkafka/bindings/admin.rb
|
|
144
|
+
- lib/rdkafka/bindings/admin/acls.rb
|
|
145
|
+
- lib/rdkafka/bindings/admin/configs.rb
|
|
146
|
+
- lib/rdkafka/bindings/admin/list_offsets.rb
|
|
147
|
+
- lib/rdkafka/bindings/callbacks.rb
|
|
148
|
+
- lib/rdkafka/bindings/configuration.rb
|
|
149
|
+
- lib/rdkafka/bindings/consumer.rb
|
|
150
|
+
- lib/rdkafka/bindings/errors.rb
|
|
151
|
+
- lib/rdkafka/bindings/handle.rb
|
|
152
|
+
- lib/rdkafka/bindings/messages.rb
|
|
153
|
+
- lib/rdkafka/bindings/metadata.rb
|
|
154
|
+
- lib/rdkafka/bindings/polling.rb
|
|
155
|
+
- lib/rdkafka/bindings/producer.rb
|
|
156
|
+
- lib/rdkafka/bindings/structs.rb
|
|
136
157
|
- lib/rdkafka/callbacks.rb
|
|
137
158
|
- lib/rdkafka/callbacks/alter_consumer_group_offsets_handler.rb
|
|
138
159
|
- lib/rdkafka/callbacks/base_handler.rb
|
|
@@ -145,7 +166,10 @@ files:
|
|
|
145
166
|
- lib/rdkafka/callbacks/delete_records_handler.rb
|
|
146
167
|
- lib/rdkafka/callbacks/delete_topic_handler.rb
|
|
147
168
|
- lib/rdkafka/callbacks/describe_acl_handler.rb
|
|
169
|
+
- lib/rdkafka/callbacks/describe_cluster_handler.rb
|
|
148
170
|
- lib/rdkafka/callbacks/describe_configs_handler.rb
|
|
171
|
+
- lib/rdkafka/callbacks/describe_consumer_groups_handler.rb
|
|
172
|
+
- lib/rdkafka/callbacks/describe_topics_handler.rb
|
|
149
173
|
- lib/rdkafka/callbacks/incremental_alter_configs_handler.rb
|
|
150
174
|
- lib/rdkafka/callbacks/list_consumer_groups_handler.rb
|
|
151
175
|
- lib/rdkafka/callbacks/list_offsets_handler.rb
|
|
@@ -191,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
191
215
|
requirements:
|
|
192
216
|
- - ">="
|
|
193
217
|
- !ruby/object:Gem::Version
|
|
194
|
-
version: '3.
|
|
218
|
+
version: '3.3'
|
|
195
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
220
|
requirements:
|
|
197
221
|
- - ">="
|