receptor_controller-client 0.0.4 → 0.0.5
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 +6 -1
- data/lib/receptor_controller/client/configuration.rb +1 -1
- data/lib/receptor_controller/client/directive_blocking.rb +1 -1
- data/lib/receptor_controller/client/directive_non_blocking.rb +1 -0
- data/lib/receptor_controller/client/response_worker.rb +22 -14
- data/lib/receptor_controller/client/version.rb +1 -1
- data/spec/receptor_controller/response_worker_spec.rb +9 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f99fb38eec5c760bd12813db5026e87e6a344965ecc95e64c73599a14fd369de
|
4
|
+
data.tar.gz: a494ce84703f398a2716b7bde039b4d5cffe7a0390128ebdc660c2953998bbbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26d9b2d4728bbb03b84903d9642937123a3a6226e1c7765d97cc3b0cdc618e75b92d3c35e1642b6d91fa95b74e8459f93cac4e96496e8e275cdb7cefe7a01511
|
7
|
+
data.tar.gz: 9761de4851573e324966bde349ff0da97072cf220c81f57d8586c09616c5618f085e30f987489763bfa443013130542930c01a73c4cfaf18a9a538c7ef34c8bb
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [0.0.5] - 2020-08-11
|
10
|
+
### Added
|
11
|
+
- Unique Persist-ref for every response worker #18
|
12
|
+
|
9
13
|
## [0.0.4] - 2020-08-04
|
10
14
|
### Added
|
11
15
|
- Default Kafka ACK to true
|
@@ -20,7 +24,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
20
24
|
### Added
|
21
25
|
- Added extra logging for messages
|
22
26
|
|
23
|
-
[Unreleased]: https://github.com/RedHatInsights/receptor_controller-client-ruby/compare/v0.0.
|
27
|
+
[Unreleased]: https://github.com/RedHatInsights/receptor_controller-client-ruby/compare/v0.0.5...HEAD
|
28
|
+
[0.0.5]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.5
|
24
29
|
[0.0.4]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.4
|
25
30
|
[0.0.3]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.3
|
26
31
|
[0.0.2]: https://github.com/RedHatInsights/receptor_controller-client-ruby/releases/tag/v0.0.2
|
@@ -42,7 +42,7 @@ module ReceptorController
|
|
42
42
|
@queue_auto_ack = true
|
43
43
|
@queue_host = nil
|
44
44
|
@queue_max_bytes = nil
|
45
|
-
@queue_persist_ref =
|
45
|
+
@queue_persist_ref = "receptor-client.#{SecureRandom.uuid}"
|
46
46
|
@queue_port = nil
|
47
47
|
@queue_topic = 'platform.receptor-controller.responses'
|
48
48
|
|
@@ -20,7 +20,7 @@ module ReceptorController
|
|
20
20
|
|
21
21
|
msg_id = JSON.parse(response.body)['id']
|
22
22
|
|
23
|
-
logger.debug("Receptor response: registering message #{msg_id}
|
23
|
+
logger.debug("Receptor response [#{ReceptorController::Client::Configuration.default.queue_persist_ref}]: registering message #{msg_id}, href_slug: #{body[:payload]["href_slug"]}")
|
24
24
|
# registers message id for kafka responses
|
25
25
|
response_worker.register_message(msg_id, self)
|
26
26
|
wait_for_response(msg_id)
|
@@ -48,6 +48,7 @@ module ReceptorController
|
|
48
48
|
|
49
49
|
# registers message id for kafka responses
|
50
50
|
response_worker.register_message(msg_id, self)
|
51
|
+
logger.debug("Receptor response [#{ReceptorController::Client::Configuration.default.queue_persist_ref}]: registering message #{msg_id}, href_slug: #{body[:payload]["href_slug"]}")
|
51
52
|
|
52
53
|
msg_id
|
53
54
|
else
|
@@ -89,7 +89,7 @@ module ReceptorController
|
|
89
89
|
process_message(message)
|
90
90
|
end
|
91
91
|
rescue => err
|
92
|
-
logger.error("Exception in kafka listener: #{err}\n#{err.backtrace.join("\n")}")
|
92
|
+
logger.error(response_log("Exception in kafka listener: #{err}\n#{err.backtrace.join("\n")}"))
|
93
93
|
ensure
|
94
94
|
client&.close
|
95
95
|
end
|
@@ -98,7 +98,7 @@ module ReceptorController
|
|
98
98
|
response = JSON.parse(message.payload)
|
99
99
|
|
100
100
|
if (message_id = response['in_response_to'])
|
101
|
-
logger.debug("
|
101
|
+
logger.debug(response_log("Received message #{message_id}: serial: #{response["serial"]}, type: #{response['message_type']}, payload: #{response['payload'] || "n/a"}"))
|
102
102
|
if (callbacks = registered_messages[message_id]).present?
|
103
103
|
# Reset last_checked_at to avoid timeout in multi-response messages
|
104
104
|
reset_last_checked_at(callbacks)
|
@@ -121,6 +121,7 @@ module ReceptorController
|
|
121
121
|
callbacks[:receiver].send(callbacks[:response_callback], message_id, message_type, payload)
|
122
122
|
else
|
123
123
|
# Send the callback to release the thread.
|
124
|
+
logger.warn(response_log("Unexpected type | message #{message_id}, type: #{message_type}"))
|
124
125
|
callbacks[:receiver].send(callbacks[:response_callback], message_id, message_type, payload)
|
125
126
|
end
|
126
127
|
|
@@ -128,31 +129,31 @@ module ReceptorController
|
|
128
129
|
if callbacks[:received_msgs] == callbacks[:total_msgs]
|
129
130
|
registered_messages.delete(message_id)
|
130
131
|
callbacks[:receiver].send(callbacks[:response_callback], message_id, EOF, payload)
|
131
|
-
logger.debug("
|
132
|
+
logger.debug(response_log("Message #{message_id} complete, total bytes: #{callbacks[:msg_size]}"))
|
132
133
|
end
|
133
134
|
|
134
|
-
logger.debug("
|
135
|
+
logger.debug(response_log("OK | message: #{message_id}, serial: #{response["serial"]}, type: #{message_type}, payload: #{payload || "n/a"}"))
|
135
136
|
else
|
136
137
|
#
|
137
138
|
# Response Error
|
138
139
|
#
|
139
140
|
registered_messages.delete(message_id)
|
140
141
|
|
141
|
-
logger.error("
|
142
|
+
logger.error(response_log("ERROR | message #{message_id} (#{response})"))
|
142
143
|
|
143
144
|
callbacks[:receiver].send(callbacks[:error_callback], message_id, response['code'], response['payload'])
|
144
145
|
end
|
145
146
|
elsif ENV["LOG_ALL_RECEPTOR_MESSAGES"]&.to_i != 0
|
146
147
|
# noop, it's not error if not registered, can be processed by another pod
|
147
|
-
logger.debug("
|
148
|
+
logger.debug(response_log("NOT REGISTERED | #{message_id} (#{response['code']})"))
|
148
149
|
end
|
149
150
|
else
|
150
|
-
logger.error("
|
151
|
+
logger.error(response_log("MISSING | Message id (in_response_to) not received! #{response}"))
|
151
152
|
end
|
152
153
|
rescue JSON::ParserError => e
|
153
|
-
logger.error("
|
154
|
+
logger.error(response_log("Failed to parse Kafka response (#{e.message})\n#{message.payload}"))
|
154
155
|
rescue => e
|
155
|
-
logger.error("
|
156
|
+
logger.error(response_log("#{e}\n#{e.backtrace.join("\n")}"))
|
156
157
|
ensure
|
157
158
|
message.ack unless config.queue_auto_ack
|
158
159
|
end
|
@@ -213,12 +214,15 @@ module ReceptorController
|
|
213
214
|
end
|
214
215
|
|
215
216
|
# No persist_ref here, because all instances (pods) needs to receive kafka message
|
217
|
+
# TODO: temporary changed to unique persist_ref
|
216
218
|
def queue_opts
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
219
|
+
return @queue_opts if @queue_opts
|
220
|
+
|
221
|
+
@queue_opts = {:service => config.queue_topic,
|
222
|
+
:auto_ack => config.queue_auto_ack}
|
223
|
+
@queue_opts[:max_bytes] = config.queue_max_bytes if config.queue_max_bytes
|
224
|
+
@queue_opts[:persist_ref] = config.queue_persist_ref if config.queue_persist_ref
|
225
|
+
@queue_opts
|
222
226
|
end
|
223
227
|
|
224
228
|
def default_messaging_opts
|
@@ -229,5 +233,9 @@ module ReceptorController
|
|
229
233
|
:client_ref => "receptor_client-responses-#{Time.now.to_i}", # A reference string to identify the client
|
230
234
|
}
|
231
235
|
end
|
236
|
+
|
237
|
+
def response_log(message)
|
238
|
+
"Receptor Response [#{queue_opts[:persist_ref]}]: #{message}"
|
239
|
+
end
|
232
240
|
end
|
233
241
|
end
|
@@ -9,7 +9,13 @@ RSpec.describe ReceptorController::Client::ResponseWorker do
|
|
9
9
|
|
10
10
|
before do
|
11
11
|
allow(logger).to receive_messages(%i[debug info warn error fatal])
|
12
|
-
allow(config).to receive_messages(:queue_auto_ack => false,
|
12
|
+
allow(config).to receive_messages(:queue_auto_ack => false,
|
13
|
+
:queue_max_bytes => nil,
|
14
|
+
:queue_persist_ref => 'consumer-group-1',
|
15
|
+
:queue_topic => 'receptor.kafka.topic',
|
16
|
+
:response_timeout => 0,
|
17
|
+
:response_timeout_poll_time => 0,
|
18
|
+
)
|
13
19
|
end
|
14
20
|
|
15
21
|
describe "#register_message" do
|
@@ -87,7 +93,7 @@ RSpec.describe ReceptorController::Client::ResponseWorker do
|
|
87
93
|
end
|
88
94
|
|
89
95
|
it "logs error" do
|
90
|
-
expect(logger).to receive(:error).with(/
|
96
|
+
expect(logger).to receive(:error).with(/Failed to parse Kafka response/)
|
91
97
|
|
92
98
|
subject.send(:process_message, message)
|
93
99
|
end
|
@@ -97,7 +103,7 @@ RSpec.describe ReceptorController::Client::ResponseWorker do
|
|
97
103
|
let(:payload) { {'code' => 0, 'message_type' => 'response', 'payload' => response_body} }
|
98
104
|
|
99
105
|
it "logs error" do
|
100
|
-
expect(logger).to receive(:error).with(/
|
106
|
+
expect(logger).to receive(:error).with(/Message id \(in_response_to\) not received!/)
|
101
107
|
|
102
108
|
subject.send(:process_message, message)
|
103
109
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: receptor_controller-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Slemr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -261,8 +261,8 @@ signing_key:
|
|
261
261
|
specification_version: 4
|
262
262
|
summary: Client for communication with Platform Receptor Controller - Gem
|
263
263
|
test_files:
|
264
|
-
- spec/receptor_controller/directive_blocking_spec.rb
|
265
|
-
- spec/receptor_controller/response_worker_spec.rb
|
266
264
|
- spec/receptor_controller/client_spec.rb
|
265
|
+
- spec/receptor_controller/response_worker_spec.rb
|
267
266
|
- spec/receptor_controller/directive_non_blocking_spec.rb
|
267
|
+
- spec/receptor_controller/directive_blocking_spec.rb
|
268
268
|
- spec/spec_helper.rb
|