rdkafka 0.24.2-aarch64-linux-gnu → 0.25.1-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 +4 -4
- data/CHANGELOG.md +18 -0
- data/Gemfile +8 -0
- data/Gemfile.lint +14 -0
- data/Gemfile.lint.lock +123 -0
- data/README.md +2 -1
- data/Rakefile +21 -21
- data/docker-compose-ssl.yml +1 -1
- data/docker-compose.yml +1 -1
- data/ext/librdkafka.so +0 -0
- data/lib/rdkafka/abstract_handle.rb +23 -5
- data/lib/rdkafka/admin/acl_binding_result.rb +5 -5
- data/lib/rdkafka/admin/config_resource_binding_result.rb +1 -0
- data/lib/rdkafka/admin/create_acl_handle.rb +7 -4
- data/lib/rdkafka/admin/create_acl_report.rb +3 -2
- data/lib/rdkafka/admin/create_partitions_handle.rb +8 -5
- data/lib/rdkafka/admin/create_partitions_report.rb +1 -0
- data/lib/rdkafka/admin/create_topic_handle.rb +8 -5
- data/lib/rdkafka/admin/create_topic_report.rb +3 -0
- data/lib/rdkafka/admin/delete_acl_handle.rb +9 -6
- data/lib/rdkafka/admin/delete_acl_report.rb +5 -3
- data/lib/rdkafka/admin/delete_groups_handle.rb +10 -5
- data/lib/rdkafka/admin/delete_groups_report.rb +3 -0
- data/lib/rdkafka/admin/delete_topic_handle.rb +8 -5
- data/lib/rdkafka/admin/delete_topic_report.rb +3 -0
- data/lib/rdkafka/admin/describe_acl_handle.rb +9 -6
- data/lib/rdkafka/admin/describe_acl_report.rb +5 -3
- data/lib/rdkafka/admin/describe_configs_handle.rb +7 -4
- data/lib/rdkafka/admin/describe_configs_report.rb +7 -1
- data/lib/rdkafka/admin/incremental_alter_configs_handle.rb +7 -4
- data/lib/rdkafka/admin/incremental_alter_configs_report.rb +7 -1
- data/lib/rdkafka/admin.rb +194 -132
- data/lib/rdkafka/bindings.rb +155 -107
- data/lib/rdkafka/callbacks.rb +81 -21
- data/lib/rdkafka/config.rb +36 -24
- data/lib/rdkafka/consumer/headers.rb +3 -2
- data/lib/rdkafka/consumer/message.rb +12 -11
- data/lib/rdkafka/consumer/partition.rb +8 -4
- data/lib/rdkafka/consumer/topic_partition_list.rb +18 -18
- data/lib/rdkafka/consumer.rb +247 -42
- data/lib/rdkafka/defaults.rb +106 -0
- data/lib/rdkafka/error.rb +28 -13
- data/lib/rdkafka/helpers/oauth.rb +11 -6
- data/lib/rdkafka/helpers/time.rb +5 -0
- data/lib/rdkafka/metadata.rb +45 -21
- data/lib/rdkafka/native_kafka.rb +89 -4
- data/lib/rdkafka/producer/delivery_handle.rb +5 -5
- data/lib/rdkafka/producer/delivery_report.rb +8 -4
- data/lib/rdkafka/producer/partitions_count_cache.rb +29 -19
- data/lib/rdkafka/producer.rb +165 -79
- data/lib/rdkafka/version.rb +6 -3
- data/lib/rdkafka.rb +1 -0
- data/package-lock.json +331 -0
- data/package.json +9 -0
- data/rdkafka.gemspec +39 -47
- data/renovate.json +22 -8
- metadata +7 -86
data/lib/rdkafka/admin.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Rdkafka
|
|
4
|
+
# Admin client for Kafka administrative operations
|
|
4
5
|
class Admin
|
|
5
6
|
include Helpers::OAuth
|
|
6
7
|
|
|
@@ -8,7 +9,7 @@ module Rdkafka
|
|
|
8
9
|
# Allows us to retrieve librdkafka errors with descriptions
|
|
9
10
|
# Useful for debugging and building UIs, etc.
|
|
10
11
|
#
|
|
11
|
-
# @return [Hash
|
|
12
|
+
# @return [Hash{Integer => Hash}] hash with errors mapped by code
|
|
12
13
|
def describe_errors
|
|
13
14
|
# Memory pointers for the array of structures and count
|
|
14
15
|
p_error_descs = FFI::MemoryPointer.new(:pointer)
|
|
@@ -35,8 +36,8 @@ module Rdkafka
|
|
|
35
36
|
# Read values from the struct
|
|
36
37
|
code = error_desc[:code]
|
|
37
38
|
|
|
38
|
-
name =
|
|
39
|
-
desc =
|
|
39
|
+
name = ""
|
|
40
|
+
desc = ""
|
|
40
41
|
|
|
41
42
|
name = error_desc[:name].read_string unless error_desc[:name].null?
|
|
42
43
|
desc = error_desc[:desc].read_string unless error_desc[:desc].null?
|
|
@@ -49,6 +50,7 @@ module Rdkafka
|
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
# @private
|
|
53
|
+
# @param native_kafka [NativeKafka] wrapper around the native Kafka handle
|
|
52
54
|
def initialize(native_kafka)
|
|
53
55
|
@native_kafka = native_kafka
|
|
54
56
|
|
|
@@ -69,6 +71,67 @@ module Rdkafka
|
|
|
69
71
|
end
|
|
70
72
|
end
|
|
71
73
|
|
|
74
|
+
# Enable IO event notifications for fiber scheduler integration
|
|
75
|
+
# When admin operations complete, librdkafka will write to your FD
|
|
76
|
+
#
|
|
77
|
+
# @param fd [Integer] file descriptor to signal (from IO.pipe or eventfd)
|
|
78
|
+
# @param payload [String] data to write to fd (default: "\x01")
|
|
79
|
+
# @return [nil]
|
|
80
|
+
# @raise [ClosedInnerError] when the admin client is closed
|
|
81
|
+
def enable_queue_io_events(fd, payload = "\x01")
|
|
82
|
+
@native_kafka.enable_main_queue_io_events(fd, payload)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Enable IO event notifications for background events
|
|
86
|
+
# @param fd [Integer] file descriptor to signal (from IO.pipe or eventfd)
|
|
87
|
+
# @param payload [String] data to write to fd (default: "\x01")
|
|
88
|
+
# @return [nil]
|
|
89
|
+
# @raise [ClosedInnerError] when the admin client is closed
|
|
90
|
+
def enable_background_queue_io_events(fd, payload = "\x01")
|
|
91
|
+
@native_kafka.enable_background_queue_io_events(fd, payload)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Polls for events in a non-blocking loop, yielding the count after each iteration.
|
|
95
|
+
#
|
|
96
|
+
# This method processes events (stats, errors, etc.) in a single GVL/mutex session,
|
|
97
|
+
# which is more efficient than repeated individual polls. It uses non-blocking polls
|
|
98
|
+
# internally (no GVL release between polls).
|
|
99
|
+
#
|
|
100
|
+
# Yields the count of events processed after each poll iteration, allowing the caller
|
|
101
|
+
# to implement timeout or other termination logic by returning `:stop`.
|
|
102
|
+
#
|
|
103
|
+
# @yield [count] Called after each poll iteration
|
|
104
|
+
# @yieldparam count [Integer] Number of events processed in this iteration
|
|
105
|
+
# @yieldreturn [Symbol, Object] Return `:stop` to break the loop, any other value continues
|
|
106
|
+
# @return [nil]
|
|
107
|
+
# @raise [Rdkafka::ClosedAdminError] if called on a closed admin client
|
|
108
|
+
#
|
|
109
|
+
# @note This method holds the inner lock until the queue is empty or `:stop` is returned.
|
|
110
|
+
# Other admin operations will wait until this method returns.
|
|
111
|
+
# @note This method is thread-safe as it uses @native_kafka.with_inner synchronization
|
|
112
|
+
#
|
|
113
|
+
# @example Drain all pending events
|
|
114
|
+
# admin.events_poll_nb_each { |_count| }
|
|
115
|
+
#
|
|
116
|
+
# @example With timeout control
|
|
117
|
+
# deadline = monotonic_now + timeout_ms
|
|
118
|
+
# admin.events_poll_nb_each do |_count|
|
|
119
|
+
# :stop if monotonic_now >= deadline
|
|
120
|
+
# end
|
|
121
|
+
def events_poll_nb_each
|
|
122
|
+
closed_admin_check(__method__)
|
|
123
|
+
|
|
124
|
+
@native_kafka.with_inner do |inner|
|
|
125
|
+
loop do
|
|
126
|
+
count = Rdkafka::Bindings.rd_kafka_poll_nb(inner, 0)
|
|
127
|
+
break if count.zero?
|
|
128
|
+
break if yield(count) == :stop
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# @return [Proc] finalizer proc for closing the admin
|
|
134
|
+
# @private
|
|
72
135
|
def finalizer
|
|
73
136
|
->(_) { close }
|
|
74
137
|
end
|
|
@@ -78,7 +141,7 @@ module Rdkafka
|
|
|
78
141
|
# @param topic_name [String, nil] metadat about particular topic or all if nil
|
|
79
142
|
# @param timeout_ms [Integer] metadata request timeout
|
|
80
143
|
# @return [Metadata] requested metadata
|
|
81
|
-
def metadata(topic_name = nil, timeout_ms =
|
|
144
|
+
def metadata(topic_name = nil, timeout_ms = Defaults::METADATA_TIMEOUT_MS)
|
|
82
145
|
closed_admin_check(__method__)
|
|
83
146
|
|
|
84
147
|
@native_kafka.with_inner do |inner|
|
|
@@ -100,13 +163,16 @@ module Rdkafka
|
|
|
100
163
|
|
|
101
164
|
# Create a topic with the given partition count and replication factor
|
|
102
165
|
#
|
|
166
|
+
# @param topic_name [String] name of the topic to create
|
|
167
|
+
# @param partition_count [Integer] number of partitions for the topic
|
|
168
|
+
# @param replication_factor [Integer] replication factor for the topic
|
|
169
|
+
# @param topic_config [Hash] optional topic configuration settings
|
|
103
170
|
# @return [CreateTopicHandle] Create topic handle that can be used to wait for the result of
|
|
104
171
|
# creating the topic
|
|
105
|
-
#
|
|
106
172
|
# @raise [ConfigError] When the partition count or replication factor are out of valid range
|
|
107
173
|
# @raise [RdkafkaError] When the topic name is invalid or the topic already exists
|
|
108
174
|
# @raise [RdkafkaError] When the topic configuration is invalid
|
|
109
|
-
def create_topic(topic_name, partition_count, replication_factor, topic_config={})
|
|
175
|
+
def create_topic(topic_name, partition_count, replication_factor, topic_config = {})
|
|
110
176
|
closed_admin_check(__method__)
|
|
111
177
|
|
|
112
178
|
# Create a rd_kafka_NewTopic_t representing the new topic
|
|
@@ -122,14 +188,12 @@ module Rdkafka
|
|
|
122
188
|
raise Rdkafka::Config::ConfigError.new(error_buffer.read_string)
|
|
123
189
|
end
|
|
124
190
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
)
|
|
132
|
-
end
|
|
191
|
+
topic_config&.each do |key, value|
|
|
192
|
+
Rdkafka::Bindings.rd_kafka_NewTopic_set_config(
|
|
193
|
+
new_topic_ptr,
|
|
194
|
+
key.to_s,
|
|
195
|
+
value.to_s
|
|
196
|
+
)
|
|
133
197
|
end
|
|
134
198
|
|
|
135
199
|
# Note that rd_kafka_CreateTopics can create more than one topic at a time
|
|
@@ -149,7 +213,7 @@ module Rdkafka
|
|
|
149
213
|
# Create and register the handle we will return to the caller
|
|
150
214
|
create_topic_handle = CreateTopicHandle.new
|
|
151
215
|
create_topic_handle[:pending] = true
|
|
152
|
-
create_topic_handle[:response] =
|
|
216
|
+
create_topic_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
153
217
|
CreateTopicHandle.register(create_topic_handle)
|
|
154
218
|
admin_options_ptr = @native_kafka.with_inner do |inner|
|
|
155
219
|
Rdkafka::Bindings.rd_kafka_AdminOptions_new(inner, Rdkafka::Bindings::RD_KAFKA_ADMIN_OP_CREATETOPICS)
|
|
@@ -178,6 +242,11 @@ module Rdkafka
|
|
|
178
242
|
create_topic_handle
|
|
179
243
|
end
|
|
180
244
|
|
|
245
|
+
# Deletes a consumer group
|
|
246
|
+
#
|
|
247
|
+
# @param group_id [String] the group id to delete
|
|
248
|
+
# @return [DeleteGroupsHandle] delete groups handle that can be used to wait for the result
|
|
249
|
+
# @raise [RdkafkaError] When deleting the group fails
|
|
181
250
|
def delete_group(group_id)
|
|
182
251
|
closed_admin_check(__method__)
|
|
183
252
|
|
|
@@ -202,7 +271,7 @@ module Rdkafka
|
|
|
202
271
|
# Create and register the handle we will return to the caller
|
|
203
272
|
delete_groups_handle = DeleteGroupsHandle.new
|
|
204
273
|
delete_groups_handle[:pending] = true
|
|
205
|
-
delete_groups_handle[:response] =
|
|
274
|
+
delete_groups_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
206
275
|
DeleteGroupsHandle.register(delete_groups_handle)
|
|
207
276
|
admin_options_ptr = @native_kafka.with_inner do |inner|
|
|
208
277
|
Rdkafka::Bindings.rd_kafka_AdminOptions_new(inner, Rdkafka::Bindings::RD_KAFKA_ADMIN_OP_DELETETOPICS)
|
|
@@ -233,6 +302,7 @@ module Rdkafka
|
|
|
233
302
|
|
|
234
303
|
# Deletes the named topic
|
|
235
304
|
#
|
|
305
|
+
# @param topic_name [String] name of the topic to delete
|
|
236
306
|
# @return [DeleteTopicHandle] Delete topic handle that can be used to wait for the result of
|
|
237
307
|
# deleting the topic
|
|
238
308
|
# @raise [RdkafkaError] When the topic name is invalid or the topic does not exist
|
|
@@ -259,7 +329,7 @@ module Rdkafka
|
|
|
259
329
|
# Create and register the handle we will return to the caller
|
|
260
330
|
delete_topic_handle = DeleteTopicHandle.new
|
|
261
331
|
delete_topic_handle[:pending] = true
|
|
262
|
-
delete_topic_handle[:response] =
|
|
332
|
+
delete_topic_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
263
333
|
DeleteTopicHandle.register(delete_topic_handle)
|
|
264
334
|
admin_options_ptr = @native_kafka.with_inner do |inner|
|
|
265
335
|
Rdkafka::Bindings.rd_kafka_AdminOptions_new(inner, Rdkafka::Bindings::RD_KAFKA_ADMIN_OP_DELETETOPICS)
|
|
@@ -290,14 +360,12 @@ module Rdkafka
|
|
|
290
360
|
|
|
291
361
|
# Creates extra partitions for a given topic
|
|
292
362
|
#
|
|
293
|
-
# @param topic_name [String]
|
|
363
|
+
# @param topic_name [String] name of the topic
|
|
294
364
|
# @param partition_count [Integer] how many partitions we want to end up with for given topic
|
|
295
|
-
#
|
|
365
|
+
# @return [CreatePartitionsHandle] Create partitions handle that can be used to wait for the result
|
|
296
366
|
# @raise [ConfigError] When the partition count or replication factor are out of valid range
|
|
297
367
|
# @raise [RdkafkaError] When the topic name is invalid or the topic already exists
|
|
298
368
|
# @raise [RdkafkaError] When the topic configuration is invalid
|
|
299
|
-
#
|
|
300
|
-
# @return [CreateTopicHandle] Create topic handle that can be used to wait for the result of creating the topic
|
|
301
369
|
def create_partitions(topic_name, partition_count)
|
|
302
370
|
closed_admin_check(__method__)
|
|
303
371
|
|
|
@@ -327,7 +395,7 @@ module Rdkafka
|
|
|
327
395
|
# Create and register the handle we will return to the caller
|
|
328
396
|
create_partitions_handle = CreatePartitionsHandle.new
|
|
329
397
|
create_partitions_handle[:pending] = true
|
|
330
|
-
create_partitions_handle[:response] =
|
|
398
|
+
create_partitions_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
331
399
|
CreatePartitionsHandle.register(create_partitions_handle)
|
|
332
400
|
admin_options_ptr = Rdkafka::Bindings.rd_kafka_AdminOptions_new(inner, Rdkafka::Bindings::RD_KAFKA_ADMIN_OP_CREATEPARTITIONS)
|
|
333
401
|
Rdkafka::Bindings.rd_kafka_AdminOptions_set_opaque(admin_options_ptr, create_partitions_handle.to_ptr)
|
|
@@ -354,40 +422,36 @@ module Rdkafka
|
|
|
354
422
|
end
|
|
355
423
|
|
|
356
424
|
# Create acl
|
|
357
|
-
# @param resource_type - values of type rd_kafka_ResourceType_t
|
|
358
|
-
# https://github.com/confluentinc/librdkafka/blob/292d2a66b9921b783f08147807992e603c7af059/src/rdkafka.h#L7307
|
|
359
|
-
# valid values are:
|
|
360
|
-
# RD_KAFKA_RESOURCE_TOPIC = 2
|
|
361
|
-
# RD_KAFKA_RESOURCE_GROUP = 3
|
|
362
|
-
# RD_KAFKA_RESOURCE_BROKER = 4
|
|
363
|
-
# @param resource_pattern_type - values of type rd_kafka_ResourcePatternType_t
|
|
364
|
-
# https://github.com/confluentinc/librdkafka/blob/292d2a66b9921b783f08147807992e603c7af059/src/rdkafka.h#L7320
|
|
365
|
-
# valid values are:
|
|
366
|
-
# RD_KAFKA_RESOURCE_PATTERN_MATCH = 2
|
|
367
|
-
# RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3
|
|
368
|
-
# RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4
|
|
369
|
-
# @param operation - values of type rd_kafka_AclOperation_t
|
|
370
|
-
# https://github.com/confluentinc/librdkafka/blob/292d2a66b9921b783f08147807992e603c7af059/src/rdkafka.h#L8403
|
|
371
|
-
# valid values are:
|
|
372
|
-
# RD_KAFKA_ACL_OPERATION_ALL = 2
|
|
373
|
-
# RD_KAFKA_ACL_OPERATION_READ = 3
|
|
374
|
-
# RD_KAFKA_ACL_OPERATION_WRITE = 4
|
|
375
|
-
# RD_KAFKA_ACL_OPERATION_CREATE = 5
|
|
376
|
-
# RD_KAFKA_ACL_OPERATION_DELETE = 6
|
|
377
|
-
# RD_KAFKA_ACL_OPERATION_ALTER = 7
|
|
378
|
-
# RD_KAFKA_ACL_OPERATION_DESCRIBE = 8
|
|
379
|
-
# RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9
|
|
380
|
-
# RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10
|
|
381
|
-
# RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11
|
|
382
|
-
# RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12
|
|
383
|
-
# @param permission_type - values of type rd_kafka_AclPermissionType_t
|
|
384
|
-
# https://github.com/confluentinc/librdkafka/blob/292d2a66b9921b783f08147807992e603c7af059/src/rdkafka.h#L8435
|
|
385
|
-
# valid values are:
|
|
386
|
-
# RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2
|
|
387
|
-
# RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3
|
|
388
425
|
#
|
|
426
|
+
# @param resource_type [Integer] rd_kafka_ResourceType_t value:
|
|
427
|
+
# - RD_KAFKA_RESOURCE_TOPIC = 2
|
|
428
|
+
# - RD_KAFKA_RESOURCE_GROUP = 3
|
|
429
|
+
# - RD_KAFKA_RESOURCE_BROKER = 4
|
|
430
|
+
# @param resource_name [String] name of the resource
|
|
431
|
+
# @param resource_pattern_type [Integer] rd_kafka_ResourcePatternType_t value:
|
|
432
|
+
# - RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0
|
|
433
|
+
# - RD_KAFKA_RESOURCE_PATTERN_ANY = 1
|
|
434
|
+
# - RD_KAFKA_RESOURCE_PATTERN_MATCH = 2
|
|
435
|
+
# - RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3
|
|
436
|
+
# - RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4
|
|
437
|
+
# @param principal [String] principal (e.g., "User:alice")
|
|
438
|
+
# @param host [String] host address
|
|
439
|
+
# @param operation [Integer] rd_kafka_AclOperation_t value:
|
|
440
|
+
# - RD_KAFKA_ACL_OPERATION_ALL = 2
|
|
441
|
+
# - RD_KAFKA_ACL_OPERATION_READ = 3
|
|
442
|
+
# - RD_KAFKA_ACL_OPERATION_WRITE = 4
|
|
443
|
+
# - RD_KAFKA_ACL_OPERATION_CREATE = 5
|
|
444
|
+
# - RD_KAFKA_ACL_OPERATION_DELETE = 6
|
|
445
|
+
# - RD_KAFKA_ACL_OPERATION_ALTER = 7
|
|
446
|
+
# - RD_KAFKA_ACL_OPERATION_DESCRIBE = 8
|
|
447
|
+
# - RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9
|
|
448
|
+
# - RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10
|
|
449
|
+
# - RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11
|
|
450
|
+
# - RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12
|
|
451
|
+
# @param permission_type [Integer] rd_kafka_AclPermissionType_t value:
|
|
452
|
+
# - RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2
|
|
453
|
+
# - RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3
|
|
389
454
|
# @return [CreateAclHandle] Create acl handle that can be used to wait for the result of creating the acl
|
|
390
|
-
#
|
|
391
455
|
# @raise [RdkafkaError]
|
|
392
456
|
def create_acl(resource_type:, resource_name:, resource_pattern_type:, principal:, host:, operation:, permission_type:)
|
|
393
457
|
closed_admin_check(__method__)
|
|
@@ -427,7 +491,7 @@ module Rdkafka
|
|
|
427
491
|
# Create and register the handle that we will return to the caller
|
|
428
492
|
create_acl_handle = CreateAclHandle.new
|
|
429
493
|
create_acl_handle[:pending] = true
|
|
430
|
-
create_acl_handle[:response] =
|
|
494
|
+
create_acl_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
431
495
|
CreateAclHandle.register(create_acl_handle)
|
|
432
496
|
|
|
433
497
|
admin_options_ptr = @native_kafka.with_inner do |inner|
|
|
@@ -460,39 +524,35 @@ module Rdkafka
|
|
|
460
524
|
|
|
461
525
|
# Delete acl
|
|
462
526
|
#
|
|
463
|
-
# @param resource_type
|
|
464
|
-
#
|
|
465
|
-
#
|
|
466
|
-
#
|
|
467
|
-
#
|
|
468
|
-
#
|
|
469
|
-
#
|
|
470
|
-
#
|
|
471
|
-
#
|
|
472
|
-
#
|
|
473
|
-
#
|
|
474
|
-
#
|
|
475
|
-
# @param
|
|
476
|
-
#
|
|
477
|
-
#
|
|
478
|
-
#
|
|
479
|
-
#
|
|
480
|
-
#
|
|
481
|
-
#
|
|
482
|
-
#
|
|
483
|
-
#
|
|
484
|
-
#
|
|
485
|
-
#
|
|
486
|
-
#
|
|
487
|
-
#
|
|
488
|
-
#
|
|
489
|
-
#
|
|
490
|
-
#
|
|
491
|
-
# valid values are:
|
|
492
|
-
# RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2
|
|
493
|
-
# RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3
|
|
527
|
+
# @param resource_type [Integer] rd_kafka_ResourceType_t value:
|
|
528
|
+
# - RD_KAFKA_RESOURCE_TOPIC = 2
|
|
529
|
+
# - RD_KAFKA_RESOURCE_GROUP = 3
|
|
530
|
+
# - RD_KAFKA_RESOURCE_BROKER = 4
|
|
531
|
+
# @param resource_name [String, nil] name of the resource or nil for any
|
|
532
|
+
# @param resource_pattern_type [Integer] rd_kafka_ResourcePatternType_t value:
|
|
533
|
+
# - RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0
|
|
534
|
+
# - RD_KAFKA_RESOURCE_PATTERN_ANY = 1
|
|
535
|
+
# - RD_KAFKA_RESOURCE_PATTERN_MATCH = 2
|
|
536
|
+
# - RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3
|
|
537
|
+
# - RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4
|
|
538
|
+
# @param principal [String, nil] principal (e.g., "User:alice") or nil for any
|
|
539
|
+
# @param host [String, nil] host address or nil for any
|
|
540
|
+
# @param operation [Integer] rd_kafka_AclOperation_t value:
|
|
541
|
+
# - RD_KAFKA_ACL_OPERATION_ALL = 2
|
|
542
|
+
# - RD_KAFKA_ACL_OPERATION_READ = 3
|
|
543
|
+
# - RD_KAFKA_ACL_OPERATION_WRITE = 4
|
|
544
|
+
# - RD_KAFKA_ACL_OPERATION_CREATE = 5
|
|
545
|
+
# - RD_KAFKA_ACL_OPERATION_DELETE = 6
|
|
546
|
+
# - RD_KAFKA_ACL_OPERATION_ALTER = 7
|
|
547
|
+
# - RD_KAFKA_ACL_OPERATION_DESCRIBE = 8
|
|
548
|
+
# - RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9
|
|
549
|
+
# - RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10
|
|
550
|
+
# - RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11
|
|
551
|
+
# - RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12
|
|
552
|
+
# @param permission_type [Integer] rd_kafka_AclPermissionType_t value:
|
|
553
|
+
# - RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2
|
|
554
|
+
# - RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3
|
|
494
555
|
# @return [DeleteAclHandle] Delete acl handle that can be used to wait for the result of deleting the acl
|
|
495
|
-
#
|
|
496
556
|
# @raise [RdkafkaError]
|
|
497
557
|
def delete_acl(resource_type:, resource_name:, resource_pattern_type:, principal:, host:, operation:, permission_type:)
|
|
498
558
|
closed_admin_check(__method__)
|
|
@@ -534,7 +594,7 @@ module Rdkafka
|
|
|
534
594
|
# Create and register the handle that we will return to the caller
|
|
535
595
|
delete_acl_handle = DeleteAclHandle.new
|
|
536
596
|
delete_acl_handle[:pending] = true
|
|
537
|
-
delete_acl_handle[:response] =
|
|
597
|
+
delete_acl_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
538
598
|
DeleteAclHandle.register(delete_acl_handle)
|
|
539
599
|
|
|
540
600
|
admin_options_ptr = @native_kafka.with_inner do |inner|
|
|
@@ -567,39 +627,35 @@ module Rdkafka
|
|
|
567
627
|
|
|
568
628
|
# Describe acls
|
|
569
629
|
#
|
|
570
|
-
# @param resource_type
|
|
571
|
-
#
|
|
572
|
-
#
|
|
573
|
-
#
|
|
574
|
-
#
|
|
575
|
-
#
|
|
576
|
-
#
|
|
577
|
-
#
|
|
578
|
-
#
|
|
579
|
-
#
|
|
580
|
-
#
|
|
581
|
-
#
|
|
582
|
-
# @param
|
|
583
|
-
#
|
|
584
|
-
#
|
|
585
|
-
#
|
|
586
|
-
#
|
|
587
|
-
#
|
|
588
|
-
#
|
|
589
|
-
#
|
|
590
|
-
#
|
|
591
|
-
#
|
|
592
|
-
#
|
|
593
|
-
#
|
|
594
|
-
#
|
|
595
|
-
#
|
|
596
|
-
#
|
|
597
|
-
#
|
|
598
|
-
# valid values are:
|
|
599
|
-
# RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2
|
|
600
|
-
# RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3
|
|
630
|
+
# @param resource_type [Integer] rd_kafka_ResourceType_t value:
|
|
631
|
+
# - RD_KAFKA_RESOURCE_TOPIC = 2
|
|
632
|
+
# - RD_KAFKA_RESOURCE_GROUP = 3
|
|
633
|
+
# - RD_KAFKA_RESOURCE_BROKER = 4
|
|
634
|
+
# @param resource_name [String, nil] name of the resource or nil for any
|
|
635
|
+
# @param resource_pattern_type [Integer] rd_kafka_ResourcePatternType_t value:
|
|
636
|
+
# - RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0
|
|
637
|
+
# - RD_KAFKA_RESOURCE_PATTERN_ANY = 1
|
|
638
|
+
# - RD_KAFKA_RESOURCE_PATTERN_MATCH = 2
|
|
639
|
+
# - RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3
|
|
640
|
+
# - RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4
|
|
641
|
+
# @param principal [String, nil] principal (e.g., "User:alice") or nil for any
|
|
642
|
+
# @param host [String, nil] host address or nil for any
|
|
643
|
+
# @param operation [Integer] rd_kafka_AclOperation_t value:
|
|
644
|
+
# - RD_KAFKA_ACL_OPERATION_ALL = 2
|
|
645
|
+
# - RD_KAFKA_ACL_OPERATION_READ = 3
|
|
646
|
+
# - RD_KAFKA_ACL_OPERATION_WRITE = 4
|
|
647
|
+
# - RD_KAFKA_ACL_OPERATION_CREATE = 5
|
|
648
|
+
# - RD_KAFKA_ACL_OPERATION_DELETE = 6
|
|
649
|
+
# - RD_KAFKA_ACL_OPERATION_ALTER = 7
|
|
650
|
+
# - RD_KAFKA_ACL_OPERATION_DESCRIBE = 8
|
|
651
|
+
# - RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9
|
|
652
|
+
# - RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10
|
|
653
|
+
# - RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11
|
|
654
|
+
# - RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12
|
|
655
|
+
# @param permission_type [Integer] rd_kafka_AclPermissionType_t value:
|
|
656
|
+
# - RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2
|
|
657
|
+
# - RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3
|
|
601
658
|
# @return [DescribeAclHandle] Describe acl handle that can be used to wait for the result of fetching acls
|
|
602
|
-
#
|
|
603
659
|
# @raise [RdkafkaError]
|
|
604
660
|
def describe_acl(resource_type:, resource_name:, resource_pattern_type:, principal:, host:, operation:, permission_type:)
|
|
605
661
|
closed_admin_check(__method__)
|
|
@@ -634,7 +690,7 @@ module Rdkafka
|
|
|
634
690
|
# Create and register the handle that we will return to the caller
|
|
635
691
|
describe_acl_handle = DescribeAclHandle.new
|
|
636
692
|
describe_acl_handle[:pending] = true
|
|
637
|
-
describe_acl_handle[:response] =
|
|
693
|
+
describe_acl_handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
638
694
|
DescribeAclHandle.register(describe_acl_handle)
|
|
639
695
|
|
|
640
696
|
admin_options_ptr = @native_kafka.with_inner do |inner|
|
|
@@ -680,7 +736,7 @@ module Rdkafka
|
|
|
680
736
|
|
|
681
737
|
handle = DescribeConfigsHandle.new
|
|
682
738
|
handle[:pending] = true
|
|
683
|
-
handle[:response] =
|
|
739
|
+
handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
684
740
|
|
|
685
741
|
queue_ptr = @native_kafka.with_inner do |inner|
|
|
686
742
|
Rdkafka::Bindings.rd_kafka_queue_get_background(inner)
|
|
@@ -727,10 +783,12 @@ module Rdkafka
|
|
|
727
783
|
|
|
728
784
|
raise
|
|
729
785
|
ensure
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
786
|
+
if configs_array_ptr
|
|
787
|
+
Rdkafka::Bindings.rd_kafka_ConfigResource_destroy_array(
|
|
788
|
+
configs_array_ptr,
|
|
789
|
+
pointer_array.size
|
|
790
|
+
)
|
|
791
|
+
end
|
|
734
792
|
end
|
|
735
793
|
|
|
736
794
|
handle
|
|
@@ -753,7 +811,7 @@ module Rdkafka
|
|
|
753
811
|
|
|
754
812
|
handle = IncrementalAlterConfigsHandle.new
|
|
755
813
|
handle[:pending] = true
|
|
756
|
-
handle[:response] =
|
|
814
|
+
handle[:response] = Rdkafka::Bindings::RD_KAFKA_PARTITION_UA
|
|
757
815
|
|
|
758
816
|
queue_ptr = @native_kafka.with_inner do |inner|
|
|
759
817
|
Rdkafka::Bindings.rd_kafka_queue_get_background(inner)
|
|
@@ -798,7 +856,6 @@ module Rdkafka
|
|
|
798
856
|
configs_array_ptr = FFI::MemoryPointer.new(:pointer, pointer_array.size)
|
|
799
857
|
configs_array_ptr.write_array_of_pointer(pointer_array)
|
|
800
858
|
|
|
801
|
-
|
|
802
859
|
begin
|
|
803
860
|
@native_kafka.with_inner do |inner|
|
|
804
861
|
Rdkafka::Bindings.rd_kafka_IncrementalAlterConfigs(
|
|
@@ -814,10 +871,12 @@ module Rdkafka
|
|
|
814
871
|
|
|
815
872
|
raise
|
|
816
873
|
ensure
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
874
|
+
if configs_array_ptr
|
|
875
|
+
Rdkafka::Bindings.rd_kafka_ConfigResource_destroy_array(
|
|
876
|
+
configs_array_ptr,
|
|
877
|
+
pointer_array.size
|
|
878
|
+
)
|
|
879
|
+
end
|
|
821
880
|
end
|
|
822
881
|
|
|
823
882
|
handle
|
|
@@ -825,6 +884,9 @@ module Rdkafka
|
|
|
825
884
|
|
|
826
885
|
private
|
|
827
886
|
|
|
887
|
+
# Checks if the admin is closed and raises an error if so
|
|
888
|
+
# @param method [Symbol] name of the calling method for error context
|
|
889
|
+
# @raise [ClosedAdminError] when the admin is closed
|
|
828
890
|
def closed_admin_check(method)
|
|
829
891
|
raise Rdkafka::ClosedAdminError.new(method) if closed?
|
|
830
892
|
end
|