karafka-rdkafka 0.12.2 → 0.12.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +4 -0
- data/lib/rdkafka/bindings.rb +1 -0
- data/lib/rdkafka/callbacks.rb +5 -1
- data/lib/rdkafka/producer/delivery_handle.rb +3 -2
- data/lib/rdkafka/producer/delivery_report.rb +6 -1
- data/lib/rdkafka/version.rb +1 -1
- data/spec/rdkafka/producer/delivery_handle_spec.rb +3 -0
- data/spec/rdkafka/producer/delivery_report_spec.rb +5 -1
- data/spec/rdkafka/producer_spec.rb +6 -2
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26881045d33d54883dbc4483364b0162e0f380619fcfe4079c892817b04328bf
|
4
|
+
data.tar.gz: 9db9e87135682ff34cbc699dd20d6dcf43f5d2d82ee82153152b7d91eaf02152
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64200c66fb2623c04bb4dd3313173926a508e6a2a0678d5a5beab83dab75b4f597d6fd1d5b7fd2b875aec74db5338fa57bb54b79b1d420d9b04d1a5272c86171
|
7
|
+
data.tar.gz: ce91a9bd42090b85a13a2ba1d40779894b330aab5f50a074e093386c9137ca926ebf90d402a7a9179e2192251a9c55291f72f16ead9a8680f13ce20f659e68c4
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
data/lib/rdkafka/bindings.rb
CHANGED
@@ -153,6 +153,7 @@ module Rdkafka
|
|
153
153
|
) do |_client_prr, err_code, reason, _opaque|
|
154
154
|
if Rdkafka::Config.error_callback
|
155
155
|
error = Rdkafka::RdkafkaError.new(err_code, broker_message: reason)
|
156
|
+
error.set_backtrace(caller)
|
156
157
|
Rdkafka::Config.error_callback.call(error)
|
157
158
|
end
|
158
159
|
end
|
data/lib/rdkafka/callbacks.rb
CHANGED
@@ -109,14 +109,18 @@ module Rdkafka
|
|
109
109
|
message = Rdkafka::Bindings::Message.new(message_ptr)
|
110
110
|
delivery_handle_ptr_address = message[:_private].address
|
111
111
|
if delivery_handle = Rdkafka::Producer::DeliveryHandle.remove(delivery_handle_ptr_address)
|
112
|
+
topic_name = Rdkafka::Bindings.rd_kafka_topic_name(message[:rkt])
|
113
|
+
|
112
114
|
# Update delivery handle
|
113
115
|
delivery_handle[:response] = message[:err]
|
114
116
|
delivery_handle[:partition] = message[:partition]
|
115
117
|
delivery_handle[:offset] = message[:offset]
|
118
|
+
delivery_handle[:topic_name] = FFI::MemoryPointer.from_string(topic_name)
|
116
119
|
delivery_handle[:pending] = false
|
120
|
+
|
117
121
|
# Call delivery callback on opaque
|
118
122
|
if opaque = Rdkafka::Config.opaques[opaque_ptr.to_i]
|
119
|
-
opaque.call_delivery_callback(Rdkafka::Producer::DeliveryReport.new(message[:partition], message[:offset], message[:err]), delivery_handle)
|
123
|
+
opaque.call_delivery_callback(Rdkafka::Producer::DeliveryReport.new(message[:partition], message[:offset], topic_name, message[:err]), delivery_handle)
|
120
124
|
end
|
121
125
|
end
|
122
126
|
end
|
@@ -6,7 +6,8 @@ module Rdkafka
|
|
6
6
|
layout :pending, :bool,
|
7
7
|
:response, :int,
|
8
8
|
:partition, :int,
|
9
|
-
:offset, :int64
|
9
|
+
:offset, :int64,
|
10
|
+
:topic_name, :pointer
|
10
11
|
|
11
12
|
# @return [String] the name of the operation (e.g. "delivery")
|
12
13
|
def operation_name
|
@@ -15,7 +16,7 @@ module Rdkafka
|
|
15
16
|
|
16
17
|
# @return [DeliveryReport] a report on the delivery of the message
|
17
18
|
def create_result
|
18
|
-
DeliveryReport.new(self[:partition], self[:offset])
|
19
|
+
DeliveryReport.new(self[:partition], self[:offset], self[:topic_name].read_string)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
@@ -10,15 +10,20 @@ module Rdkafka
|
|
10
10
|
# @return [Integer]
|
11
11
|
attr_reader :offset
|
12
12
|
|
13
|
+
# The name of the topic this message was produced to.
|
14
|
+
# @return [String]
|
15
|
+
attr_reader :topic_name
|
16
|
+
|
13
17
|
# Error in case happen during produce.
|
14
18
|
# @return [String]
|
15
19
|
attr_reader :error
|
16
20
|
|
17
21
|
private
|
18
22
|
|
19
|
-
def initialize(partition, offset, error = nil)
|
23
|
+
def initialize(partition, offset, topic_name = nil, error = nil)
|
20
24
|
@partition = partition
|
21
25
|
@offset = offset
|
26
|
+
@topic_name = topic_name
|
22
27
|
@error = error
|
23
28
|
end
|
24
29
|
end
|
data/lib/rdkafka/version.rb
CHANGED
@@ -9,6 +9,7 @@ describe Rdkafka::Producer::DeliveryHandle do
|
|
9
9
|
handle[:response] = response
|
10
10
|
handle[:partition] = 2
|
11
11
|
handle[:offset] = 100
|
12
|
+
handle[:topic_name] = FFI::MemoryPointer.from_string("produce_test_topic")
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
@@ -29,6 +30,7 @@ describe Rdkafka::Producer::DeliveryHandle do
|
|
29
30
|
|
30
31
|
expect(report.partition).to eq(2)
|
31
32
|
expect(report.offset).to eq(100)
|
33
|
+
expect(report.topic_name).to eq("produce_test_topic")
|
32
34
|
end
|
33
35
|
|
34
36
|
it "should wait without a timeout" do
|
@@ -36,6 +38,7 @@ describe Rdkafka::Producer::DeliveryHandle do
|
|
36
38
|
|
37
39
|
expect(report.partition).to eq(2)
|
38
40
|
expect(report.offset).to eq(100)
|
41
|
+
expect(report.topic_name).to eq("produce_test_topic")
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Rdkafka::Producer::DeliveryReport do
|
4
|
-
subject { Rdkafka::Producer::DeliveryReport.new(2, 100, "error") }
|
4
|
+
subject { Rdkafka::Producer::DeliveryReport.new(2, 100, "topic", "error") }
|
5
5
|
|
6
6
|
it "should get the partition" do
|
7
7
|
expect(subject.partition).to eq 2
|
@@ -11,6 +11,10 @@ describe Rdkafka::Producer::DeliveryReport do
|
|
11
11
|
expect(subject.offset).to eq 100
|
12
12
|
end
|
13
13
|
|
14
|
+
it "should get the topic_name" do
|
15
|
+
expect(subject.topic_name).to eq "topic"
|
16
|
+
end
|
17
|
+
|
14
18
|
it "should get the error" do
|
15
19
|
expect(subject.error).to eq "error"
|
16
20
|
end
|
@@ -30,6 +30,7 @@ describe Rdkafka::Producer do
|
|
30
30
|
expect(report).not_to be_nil
|
31
31
|
expect(report.partition).to eq 1
|
32
32
|
expect(report.offset).to be >= 0
|
33
|
+
expect(report.topic_name).to eq "produce_test_topic"
|
33
34
|
@callback_called = true
|
34
35
|
end
|
35
36
|
|
@@ -113,6 +114,7 @@ describe Rdkafka::Producer do
|
|
113
114
|
expect(called_report.first).not_to be_nil
|
114
115
|
expect(called_report.first.partition).to eq 1
|
115
116
|
expect(called_report.first.offset).to be >= 0
|
117
|
+
expect(called_report.first.topic_name).to eq "produce_test_topic"
|
116
118
|
end
|
117
119
|
|
118
120
|
it "should provide handle" do
|
@@ -448,7 +450,8 @@ describe Rdkafka::Producer do
|
|
448
450
|
|
449
451
|
report_json = JSON.generate(
|
450
452
|
"partition" => report.partition,
|
451
|
-
"offset" => report.offset
|
453
|
+
"offset" => report.offset,
|
454
|
+
"topic_name" => report.topic_name
|
452
455
|
)
|
453
456
|
|
454
457
|
writer.write(report_json)
|
@@ -460,7 +463,8 @@ describe Rdkafka::Producer do
|
|
460
463
|
report_hash = JSON.parse(reader.read)
|
461
464
|
report = Rdkafka::Producer::DeliveryReport.new(
|
462
465
|
report_hash["partition"],
|
463
|
-
report_hash["offset"]
|
466
|
+
report_hash["offset"],
|
467
|
+
report_hash["topic_name"]
|
464
468
|
)
|
465
469
|
|
466
470
|
reader.close
|
data.tar.gz.sig
CHANGED
Binary file
|
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.12.
|
4
|
+
version: 0.12.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thijs Cadier
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
Qf04B9ceLUaC4fPVEz10FyobjaFoY4i32xRto3XnrzeAgfEe4swLq8bQsR3w/EF3
|
36
36
|
MGU0FeSV2Yj7Xc2x/7BzLK8xQn5l7Yy75iPF+KP3vVmDHnNl
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2023-05-
|
38
|
+
date: 2023-05-26 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: ffi
|
metadata.gz.sig
CHANGED
Binary file
|