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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e0fca40eecf936d8ef48f10f5ff0a9c0a8f285496d504a4942b85f5ad43b679
4
- data.tar.gz: c48de26017a7f7b2193d13603abe1ebfafaf55974efd1e1cc5700e89b3097394
3
+ metadata.gz: f99fb38eec5c760bd12813db5026e87e6a344965ecc95e64c73599a14fd369de
4
+ data.tar.gz: a494ce84703f398a2716b7bde039b4d5cffe7a0390128ebdc660c2953998bbbd
5
5
  SHA512:
6
- metadata.gz: 9cabdb3d3176a0d6591a4b4fb06422481cf51f248edf669db455fc9f1ab9a98c19887d2b3b4780568be92058477d424164c158f49bc5ec9afbe1630becd273d6
7
- data.tar.gz: fbe4d361bb3dfff586d6e6da8391623a5a92fcdc224a15c6c3ace6379105748562b6bc87f360d84556170b271298b3661985b88bddd3b8d8fe9ab60e0e8f4e6c
6
+ metadata.gz: 26d9b2d4728bbb03b84903d9642937123a3a6226e1c7765d97cc3b0cdc618e75b92d3c35e1642b6d91fa95b74e8459f93cac4e96496e8e275cdb7cefe7a01511
7
+ data.tar.gz: 9761de4851573e324966bde349ff0da97072cf220c81f57d8586c09616c5618f085e30f987489763bfa443013130542930c01a73c4cfaf18a9a538c7ef34c8bb
@@ -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.4...HEAD
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 = nil
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}".tap { |msg| msg << " req: #{body[:payload]}" if ENV["LOG_ALL_RECEPTOR_MESSAGES"]&.to_i != 0 })
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("Receptor response for message #{message_id}: serial: #{response["serial"]}, type: #{response['message_type']}, payload: #{response['payload'] || "n/a"}")
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("Receptor Message #{message_id} complete, total bytes: #{callbacks[:msg_size]}")
132
+ logger.debug(response_log("Message #{message_id} complete, total bytes: #{callbacks[:msg_size]}"))
132
133
  end
133
134
 
134
- logger.debug("Receptor response: OK | message: #{message_id}, serial: #{response["serial"]}, type: #{message_type}, payload: #{payload || "n/a"}")
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("Receptor response: ERROR | message #{message_id} (#{response})")
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("Receptor response unhandled: #{message_id} (#{response['code']})")
148
+ logger.debug(response_log("NOT REGISTERED | #{message_id} (#{response['code']})"))
148
149
  end
149
150
  else
150
- logger.error("Receptor response: Message id (in_response_to) not received! #{response}")
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("Receptor response: Failed to parse Kafka response (#{e.message})\n#{message.payload}")
154
+ logger.error(response_log("Failed to parse Kafka response (#{e.message})\n#{message.payload}"))
154
155
  rescue => e
155
- logger.error("Receptor response: #{e}\n#{e.backtrace.join("\n")}")
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
- opts = {:service => config.queue_topic,
218
- :auto_ack => config.queue_auto_ack}
219
- opts[:max_bytes] = config.queue_max_bytes if config.queue_max_bytes
220
- opts[:persist_ref] = config.queue_persist_ref if config.queue_persist_ref
221
- opts
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
@@ -1,5 +1,5 @@
1
1
  module ReceptorController
2
2
  class Client
3
- VERSION = "0.0.4".freeze
3
+ VERSION = "0.0.5".freeze
4
4
  end
5
5
  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, :response_timeout => 0, :response_timeout_poll_time => 0)
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(/Receptor response: Failed to parse Kafka response/)
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(/Receptor response: Message id \(in_response_to\) not received!/)
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
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-04 00:00:00.000000000 Z
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