istox 0.1.153.2 → 0.1.154.2
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/Gemfile.lock +15 -6
- data/bulk-update-version.py +93 -0
- data/istox.gemspec +3 -0
- data/lib/istox.rb +2 -1
- data/lib/istox/helpers/bunny_boot.rb +5 -1
- data/lib/istox/helpers/logger.rb +1 -1
- data/lib/istox/helpers/publisher.rb +13 -1
- data/lib/istox/helpers/{redis.rb → redis_boot.rb} +7 -6
- data/lib/istox/helpers/redis_manager.rb +21 -0
- data/lib/istox/helpers/remote_model_cache.rb +4 -6
- data/lib/istox/helpers/subscriber.rb +45 -30
- data/lib/istox/helpers/xray/grpc_client_xray_interceptor.rb +0 -1
- data/lib/istox/helpers/xray/grpc_server_xray_interceptor.rb +0 -1
- data/lib/istox/helpers/xray/rabbitmq_consumer_interceptor.rb +0 -1
- data/lib/istox/helpers/xray/rabbitmq_publisher_interceptor.rb +0 -1
- data/lib/istox/helpers/xray/xray_initializer.rb +34 -20
- data/lib/istox/quant/bond.rb +1 -2
- data/lib/istox/version.rb +1 -1
- metadata +47 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc27873608ff702f609c372920ae7fe0f887c32f7379113c2e22dd0cd1e27d70
|
4
|
+
data.tar.gz: 9517caed4f791e620781f726fdd4f1952c9b06949d03a681857d185408e757a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71fe3e68f49caa983c607952552314abc2b40437a4d6b3f4a51fc82135502ae97d5f289db292b1cff2f25761058d9da6f57cf1bf03222ac2ecaf97d949475a1d
|
7
|
+
data.tar.gz: c564f7093ca3484d6285cf4c77cd98569b5b99f44c27713a127c4e1c4995f37f807ef8d0d8acf2799b06c951bbc05a0625a90d519e5d20ce7c72fa2a4fc21df6
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
istox (0.1.
|
4
|
+
istox (0.1.154)
|
5
|
+
amazing_print
|
5
6
|
awesome_print
|
6
7
|
binding_of_caller
|
7
8
|
bunny (>= 2.12.0)
|
9
|
+
exponential-backoff (= 0.0.4)
|
8
10
|
graphlient
|
9
11
|
gruf
|
10
12
|
hashie (~> 3.5.7)
|
@@ -61,6 +63,7 @@ GEM
|
|
61
63
|
i18n (>= 0.7, < 2)
|
62
64
|
minitest (~> 5.1)
|
63
65
|
tzinfo (~> 1.1)
|
66
|
+
amazing_print (1.1.0)
|
64
67
|
amq-protocol (2.3.1)
|
65
68
|
arel (9.0.0)
|
66
69
|
awesome_print (1.8.0)
|
@@ -87,6 +90,7 @@ GEM
|
|
87
90
|
uniform_notifier (~> 1.11.0)
|
88
91
|
bunny (2.15.0)
|
89
92
|
amq-protocol (~> 2.3, >= 2.3.1)
|
93
|
+
byebug (11.1.3)
|
90
94
|
coderay (1.1.2)
|
91
95
|
concurrent-ruby (1.1.6)
|
92
96
|
crass (1.0.6)
|
@@ -94,6 +98,7 @@ GEM
|
|
94
98
|
debug_inspector (0.0.3)
|
95
99
|
diff-lcs (1.3)
|
96
100
|
erubi (1.9.0)
|
101
|
+
exponential-backoff (0.0.4)
|
97
102
|
factory_bot (4.8.2)
|
98
103
|
activesupport (>= 3.0.0)
|
99
104
|
factory_bot_rails (4.8.2)
|
@@ -107,14 +112,14 @@ GEM
|
|
107
112
|
multipart-post (>= 1.2, < 3)
|
108
113
|
faraday_middleware (1.0.0)
|
109
114
|
faraday (~> 1.0)
|
110
|
-
ffi (1.
|
115
|
+
ffi (1.13.0)
|
111
116
|
globalid (0.4.2)
|
112
117
|
activesupport (>= 4.2.0)
|
113
|
-
google-protobuf (3.12.
|
118
|
+
google-protobuf (3.12.2-universal-darwin)
|
114
119
|
googleapis-common-protos-types (1.0.5)
|
115
120
|
google-protobuf (~> 3.11)
|
116
|
-
graphlient (0.
|
117
|
-
faraday
|
121
|
+
graphlient (0.4.0)
|
122
|
+
faraday (>= 1.0)
|
118
123
|
faraday_middleware
|
119
124
|
graphql-client
|
120
125
|
graphql (1.10.10)
|
@@ -169,6 +174,9 @@ GEM
|
|
169
174
|
pry (0.12.2)
|
170
175
|
coderay (~> 1.1.0)
|
171
176
|
method_source (~> 0.9.0)
|
177
|
+
pry-byebug (3.8.0)
|
178
|
+
byebug (~> 11.0)
|
179
|
+
pry (~> 0.10)
|
172
180
|
pry-rails (0.3.9)
|
173
181
|
pry (>= 0.10.4)
|
174
182
|
rack (2.2.2)
|
@@ -257,7 +265,7 @@ GEM
|
|
257
265
|
tzinfo (1.2.6)
|
258
266
|
thread_safe (~> 0.1)
|
259
267
|
uniform_notifier (1.11.0)
|
260
|
-
vault (0.
|
268
|
+
vault (0.14.0)
|
261
269
|
aws-sigv4
|
262
270
|
websocket-driver (0.7.0)
|
263
271
|
websocket-extensions (>= 0.1.0)
|
@@ -276,6 +284,7 @@ DEPENDENCIES
|
|
276
284
|
fakeredis
|
277
285
|
istox!
|
278
286
|
pry
|
287
|
+
pry-byebug
|
279
288
|
pry-rails
|
280
289
|
rails (~> 5.2.1)
|
281
290
|
rake (~> 10.0)
|
@@ -0,0 +1,93 @@
|
|
1
|
+
import sys
|
2
|
+
import re
|
3
|
+
from tempfile import mkstemp
|
4
|
+
from shutil import move, copymode
|
5
|
+
from os import fdopen, remove
|
6
|
+
import os
|
7
|
+
|
8
|
+
# HOW TO RUN: python bulk-update-version.py <version updating to, eg. 0.1.150.2>
|
9
|
+
|
10
|
+
SERVICES = ["client-api", "admin-api", "message-api", "auth", "admin-auth"]
|
11
|
+
|
12
|
+
|
13
|
+
def replace(file_path, pattern, subst):
|
14
|
+
# Create temp file
|
15
|
+
fh, abs_path = mkstemp()
|
16
|
+
with fdopen(fh, 'w') as new_file:
|
17
|
+
dirname = os.path.dirname(__file__)
|
18
|
+
file_path = os.path.join(dirname, file_path)
|
19
|
+
if os.path.exists(file_path) == False:
|
20
|
+
return
|
21
|
+
with open(file_path) as old_file:
|
22
|
+
for line in old_file:
|
23
|
+
new_file.write(re.sub(pattern, subst, line))
|
24
|
+
# Copy the file permissions from the old file to the new file
|
25
|
+
copymode(file_path, abs_path)
|
26
|
+
# Remove original file
|
27
|
+
remove(file_path)
|
28
|
+
# Move new file
|
29
|
+
move(abs_path, file_path)
|
30
|
+
|
31
|
+
|
32
|
+
def push_service(file_path, version, hotfix):
|
33
|
+
dirname = os.path.dirname(__file__)
|
34
|
+
file_path = os.path.join(dirname, file_path)
|
35
|
+
|
36
|
+
if os.path.exists(file_path) == False:
|
37
|
+
return
|
38
|
+
|
39
|
+
if hotfix == True:
|
40
|
+
branch_name = "hotfix"
|
41
|
+
else:
|
42
|
+
branch_name = "FIX/update-istox-gem-" + version
|
43
|
+
|
44
|
+
os.chdir(file_path)
|
45
|
+
os.system(
|
46
|
+
"git branch -D %s &>/dev/null" % (branch_name))
|
47
|
+
os.system("echo 'Deleted local branch'")
|
48
|
+
os.system(
|
49
|
+
"git push origin --delete %s &>/dev/null" % (branch_name))
|
50
|
+
os.system("echo 'Deleted remote branch'")
|
51
|
+
os.system("git fetch -a")
|
52
|
+
os.system("git checkout -b %s" % (branch_name))
|
53
|
+
os.system("git add Gemfile")
|
54
|
+
os.system("git commit -m 'Update istox-gem version to %s'" % (version))
|
55
|
+
os.system("git push --set-upstream origin %s" % (branch_name))
|
56
|
+
# os.system("cd " + file_path + " && git branch -D " +
|
57
|
+
# branch_name + " &>/dev/null || echo 'Deleted local branch' || git push origin --delete hotfix &>/dev/null || echo 'Deleted remote branch' || git fetch -a || git checkout -b " +
|
58
|
+
# branch_name + " && git add Gemfile && git commit -m 'Update istox-gem version to "
|
59
|
+
# + version + "' && git push --set-upstream origin " + branch_name)
|
60
|
+
|
61
|
+
|
62
|
+
arguments = sys.argv
|
63
|
+
arguments.pop(0)
|
64
|
+
|
65
|
+
new_version = arguments[0]
|
66
|
+
|
67
|
+
hotfix = False
|
68
|
+
|
69
|
+
while True:
|
70
|
+
result = raw_input("Is this a hotix? Y/N \n")
|
71
|
+
|
72
|
+
if result.lower() == 'y':
|
73
|
+
hotfix = True
|
74
|
+
break
|
75
|
+
elif result.lower() == 'n':
|
76
|
+
hotfix = False
|
77
|
+
break
|
78
|
+
else:
|
79
|
+
print("Please input only Y or N.")
|
80
|
+
|
81
|
+
|
82
|
+
print("Updating services " + str(SERVICES) +
|
83
|
+
" to istox-gem version " + new_version)
|
84
|
+
|
85
|
+
for service in SERVICES:
|
86
|
+
replace("../" + service + "/Gemfile", r"gem 'istox'.+",
|
87
|
+
"gem 'istox', '" + new_version + "'")
|
88
|
+
|
89
|
+
for service in SERVICES:
|
90
|
+
push_service("../" + service, new_version, hotfix)
|
91
|
+
|
92
|
+
print("Services " + str(SERVICES) +
|
93
|
+
" has been updated to istox-gem version " + new_version)
|
data/istox.gemspec
CHANGED
@@ -30,9 +30,11 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ['lib']
|
32
32
|
|
33
|
+
spec.add_dependency 'amazing_print'
|
33
34
|
spec.add_dependency 'awesome_print'
|
34
35
|
spec.add_dependency 'binding_of_caller'
|
35
36
|
spec.add_dependency 'bunny', '>= 2.12.0'
|
37
|
+
spec.add_dependency 'exponential-backoff', '0.0.4'
|
36
38
|
spec.add_dependency 'graphlient'
|
37
39
|
spec.add_dependency 'gruf'
|
38
40
|
spec.add_dependency 'hashie', '~> 3.5.7'
|
@@ -52,6 +54,7 @@ Gem::Specification.new do |spec|
|
|
52
54
|
spec.add_development_dependency 'faker', '~> 1.7.3'
|
53
55
|
spec.add_development_dependency 'fakeredis'
|
54
56
|
spec.add_development_dependency 'pry'
|
57
|
+
spec.add_development_dependency 'pry-byebug'
|
55
58
|
spec.add_development_dependency 'pry-rails'
|
56
59
|
spec.add_development_dependency 'rails', '~> 5.2.1'
|
57
60
|
spec.add_development_dependency 'rake', '~> 10.0'
|
data/lib/istox.rb
CHANGED
@@ -32,7 +32,8 @@ module Istox
|
|
32
32
|
require 'istox/helpers/common_helper'
|
33
33
|
require 'istox/helpers/regex_helper'
|
34
34
|
require 'istox/helpers/result_handler'
|
35
|
-
require 'istox/helpers/
|
35
|
+
require 'istox/helpers/redis_boot'
|
36
|
+
require 'istox/helpers/redis_manager'
|
36
37
|
require 'istox/helpers/dlm'
|
37
38
|
require 'istox/helpers/remote_model_cache'
|
38
39
|
|
@@ -215,7 +215,7 @@ module Istox
|
|
215
215
|
retry_limit = queue_config_from_consumer_key!(consumer_key)['retry_limit']
|
216
216
|
|
217
217
|
if retry_limit.nil?
|
218
|
-
|
218
|
+
5
|
219
219
|
else
|
220
220
|
retry_limit.to_i
|
221
221
|
end
|
@@ -234,6 +234,10 @@ module Istox
|
|
234
234
|
end
|
235
235
|
end
|
236
236
|
|
237
|
+
def queue_retry_gap_set?(consumer_key)
|
238
|
+
queue_config_from_consumer_key!(consumer_key)['retry_gap'].present?
|
239
|
+
end
|
240
|
+
|
237
241
|
def channel_pool_size(consumer_key)
|
238
242
|
channel = channel_config(consumer_key)
|
239
243
|
return data['channel_pool_size'] || 1 if channel.nil?
|
data/lib/istox/helpers/logger.rb
CHANGED
@@ -6,7 +6,7 @@ module Istox
|
|
6
6
|
return @logger if @logger.present?
|
7
7
|
|
8
8
|
@logger = ::Ougai::Logger.new(STDOUT)
|
9
|
-
@logger.formatter = ::Ougai::Formatters::Readable.new unless Rails.env.production?
|
9
|
+
@logger.formatter = ::Ougai::Formatters::Readable.new unless ENV.fetch('RAILS_ENV','development') == 'production'|| (defined?(Rails) && Rails.env.production?)
|
10
10
|
|
11
11
|
@logger
|
12
12
|
end
|
@@ -78,6 +78,9 @@ module Istox
|
|
78
78
|
@channel[t]['confirm-1'].close
|
79
79
|
@channel[t]['noconfirm'].close
|
80
80
|
@channel.delete t
|
81
|
+
|
82
|
+
# Remove exchange from @exchange
|
83
|
+
@exchanges.delete t
|
81
84
|
end
|
82
85
|
end
|
83
86
|
end.join
|
@@ -233,7 +236,16 @@ module Istox
|
|
233
236
|
sleep 1
|
234
237
|
do_publish(ex,options,message)
|
235
238
|
rescue => e
|
236
|
-
log.debug "Error happens: #{e}"
|
239
|
+
log.debug "Error happens: #{e.message}"
|
240
|
+
|
241
|
+
# If the error indicates that the channel is already closed
|
242
|
+
# then clear hash @channel and @exchange
|
243
|
+
if e.message.include? "cannot use a closed channel"
|
244
|
+
@channel.delete Thread.current.object_id
|
245
|
+
@exchanges.delete Thread.current.object_id
|
246
|
+
ex = exchange(eid)
|
247
|
+
do_publish(ex, options, message)
|
248
|
+
end
|
237
249
|
end
|
238
250
|
end
|
239
251
|
end
|
@@ -3,9 +3,8 @@ require 'redis'
|
|
3
3
|
module Istox
|
4
4
|
class RedisBoot
|
5
5
|
class << self
|
6
|
-
|
7
|
-
|
8
|
-
redis(db).set(k,v, options)
|
6
|
+
def sets(k, v, options = {}, db)
|
7
|
+
redis(db).set(k, v, options)
|
9
8
|
end
|
10
9
|
|
11
10
|
def scan(cursor, options = {}, db)
|
@@ -44,10 +43,12 @@ module Istox
|
|
44
43
|
|
45
44
|
def redis(db)
|
46
45
|
@redis = {} if @redis.nil?
|
47
|
-
@redis[db]
|
48
|
-
|
46
|
+
if @redis[db].nil?
|
47
|
+
@redis[db] = Redis.new(
|
48
|
+
url: ENV['REDIS_URL'] || 'redis://127.0.0.1',
|
49
49
|
db: db
|
50
|
-
|
50
|
+
)
|
51
|
+
end
|
51
52
|
@redis[db]
|
52
53
|
end
|
53
54
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Istox
|
2
|
+
class RedisManager
|
3
|
+
class << self
|
4
|
+
# for remote model cache
|
5
|
+
def remote_model_redis
|
6
|
+
@remote_model_redis ||= Redis::Namespace.new(:platform_cache, redis: Redis.new(
|
7
|
+
url: ENV['REDIS_URL'] || 'redis://127.0.0.1:16379',
|
8
|
+
db: 5
|
9
|
+
))
|
10
|
+
end
|
11
|
+
|
12
|
+
# cache request to prevent double submission
|
13
|
+
def request_redis
|
14
|
+
@request_redis ||= Redis::Namespace.new(:request_cache, redis: Redis.new(
|
15
|
+
url: ENV['REDIS_URL'] || 'redis://127.0.0.1:16379',
|
16
|
+
db: 6
|
17
|
+
))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'istox/helpers/logger'
|
2
|
+
require 'istox/helpers/redis_manager'
|
2
3
|
|
3
4
|
module Istox
|
4
5
|
class RemoteModelCache
|
@@ -15,9 +16,9 @@ module Istox
|
|
15
16
|
log.debug "Writing data to cache, key: #{key}, fields: #{fields.inspect}"
|
16
17
|
log.debug "Cache data: #{data.inspect}"
|
17
18
|
|
18
|
-
|
19
|
-
data = data.to_json unless data.instance_of?(String)
|
19
|
+
data = data.to_json unless data.instance_of?(String)
|
20
20
|
|
21
|
+
Thread.new do
|
21
22
|
results = fields.map do |f|
|
22
23
|
redis.hset(key, f.to_s, data)
|
23
24
|
end
|
@@ -77,10 +78,7 @@ module Istox
|
|
77
78
|
end
|
78
79
|
|
79
80
|
def redis
|
80
|
-
|
81
|
-
url: ENV['REDIS_URL'] || 'redis://127.0.0.1:16379',
|
82
|
-
db: 5
|
83
|
-
))
|
81
|
+
::Istox::RedisManager.remote_model_redis
|
84
82
|
end
|
85
83
|
end
|
86
84
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'exponential_backoff'
|
1
2
|
require 'istox/helpers/logger'
|
2
3
|
|
3
4
|
module Istox
|
@@ -79,26 +80,6 @@ module Istox
|
|
79
80
|
queue.bind exchange, queue_options
|
80
81
|
end
|
81
82
|
|
82
|
-
if manual_ack
|
83
|
-
letter_exchange = if exchange.nil?
|
84
|
-
active_channel.default_exchange.name
|
85
|
-
else
|
86
|
-
exchange.name
|
87
|
-
end
|
88
|
-
retry_queue = active_channel.queue("#{queue_name}.retry", arguments: {
|
89
|
-
'x-dead-letter-exchange': letter_exchange,
|
90
|
-
'x-dead-letter-routing-key': queue_name.to_s,
|
91
|
-
'x-message-ttl': (::Istox::BunnyBoot.queue_retry_gap consumer_key)
|
92
|
-
})
|
93
|
-
if exchange_name.nil?
|
94
|
-
exchange_retry = active_channel.default_exchange
|
95
|
-
else
|
96
|
-
exchange_retry_name = "#{exchange_name}.retry"
|
97
|
-
exchange_retry = active_channel.send exchange_type, exchange_retry_name, durable: exchange_durable
|
98
|
-
retry_queue.bind exchange_retry, routing_key: "#{queue_name}.retry" if manual_ack
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
83
|
loop do
|
103
84
|
break unless ::Istox::BunnyBoot.queue_single_consumer? consumer_key
|
104
85
|
|
@@ -115,9 +96,7 @@ module Istox
|
|
115
96
|
ruby_class = ::Istox::BunnyBoot.ruby_class(consumer_key) || "#{consumer_key.to_s.underscore}_consumer"
|
116
97
|
@workers = {} if @workers.nil?
|
117
98
|
unless block || @workers[ruby_class]
|
118
|
-
klass =
|
119
|
-
'::' + ruby_class.camelize
|
120
|
-
)
|
99
|
+
klass = consumer_class(ruby_class)
|
121
100
|
param = ::Istox::BunnyBoot.queue_worker_param consumer_key
|
122
101
|
@workers[ruby_class] = if param.nil?
|
123
102
|
klass.new
|
@@ -184,15 +163,13 @@ module Istox
|
|
184
163
|
if ::Istox::BunnyBoot.queue_worker_param_format(consumer_key) == 'open_struct'
|
185
164
|
processing_payload = ::Istox::CommonHelper.to_open_struct(processing_payload)
|
186
165
|
end
|
187
|
-
|
166
|
+
|
167
|
+
retry_obj = create_retry_obj(consumer_key, active_channel, exchange, exchange_name, queue_name, retry_count - 1)
|
168
|
+
|
169
|
+
::Istox::BunnyBoot.publish(retry_obj.exchange_retry, processing_payload,
|
170
|
+
routing_key: retry_obj.routing_key, priority: retry_count, type: 'dlx')
|
188
171
|
end
|
189
172
|
end
|
190
|
-
# # For redelivered message, call 'reject' not 'nack' in order to reschedule message to tail not head of queue
|
191
|
-
# if delivery_info.redelivered
|
192
|
-
# active_channel.reject(delivery_info.delivery_tag, true)
|
193
|
-
# else
|
194
|
-
# active_channel.nack(delivery_info.delivery_tag, false, true)
|
195
|
-
# end
|
196
173
|
ensure
|
197
174
|
if manual_ack
|
198
175
|
multiple = if !multiple.nil? && !result && result == multiple
|
@@ -205,6 +182,44 @@ module Istox
|
|
205
182
|
end
|
206
183
|
end
|
207
184
|
|
185
|
+
def create_retry_obj(consumer_key, active_channel, _exchange, exchange_name, queue_name, retried_count)
|
186
|
+
minimal_interval = 1.0
|
187
|
+
maximal_elapsed_time = 60.0
|
188
|
+
|
189
|
+
# retry interval will be [1, 3, 9, 27, 60, 60....] seconds
|
190
|
+
backoff = ExponentialBackoff.new(minimal_interval, maximal_elapsed_time)
|
191
|
+
backoff.multiplier = 3
|
192
|
+
ttl = ::Istox::BunnyBoot.queue_retry_gap_set?(consumer_key) ? ::Istox::BunnyBoot.queue_retry_gap(consumer_key) : backoff.interval_at(retried_count) * 1000
|
193
|
+
ttl = ttl.to_i
|
194
|
+
|
195
|
+
routing_key = "#{queue_name}.retry.#{ttl}"
|
196
|
+
|
197
|
+
retry_queue = active_channel.queue(routing_key, arguments: {
|
198
|
+
'x-dead-letter-exchange': active_channel.default_exchange.name,
|
199
|
+
'x-dead-letter-routing-key': queue_name.to_s,
|
200
|
+
'x-message-ttl': ttl.to_i
|
201
|
+
})
|
202
|
+
if exchange_name.nil?
|
203
|
+
exchange_retry = active_channel.default_exchange
|
204
|
+
else
|
205
|
+
exchange_durable = ::Istox::BunnyBoot.exchange_durable? exchange_name
|
206
|
+
exchange_retry_name = "#{exchange_name}.retry"
|
207
|
+
exchange_retry = active_channel.direct(exchange_retry_name, durable: exchange_durable)
|
208
|
+
retry_queue.bind exchange_retry, routing_key: routing_key
|
209
|
+
end
|
210
|
+
|
211
|
+
OpenStruct.new(
|
212
|
+
exchange_retry: exchange_retry,
|
213
|
+
routing_key: routing_key
|
214
|
+
)
|
215
|
+
end
|
216
|
+
|
217
|
+
def consumer_class(ruby_class)
|
218
|
+
Object.const_get(
|
219
|
+
'::' + ruby_class.camelize
|
220
|
+
)
|
221
|
+
end
|
222
|
+
|
208
223
|
def intercept(interceptors, payload, metadata, delivery_info)
|
209
224
|
return yield if interceptors.none?
|
210
225
|
|
@@ -4,7 +4,6 @@ require 'istox/helpers/xray/grpc_server_xray_interceptor'
|
|
4
4
|
require 'istox/helpers/xray/rabbitmq_publisher_interceptor'
|
5
5
|
require 'istox/helpers/xray/rabbitmq_consumer_interceptor'
|
6
6
|
require 'istox/helpers/logger'
|
7
|
-
require 'aws-xray-sdk'
|
8
7
|
|
9
8
|
module Istox
|
10
9
|
module Xray
|
@@ -15,27 +14,42 @@ module Istox
|
|
15
14
|
## input gruf config to enable gruf/grpc tracing, eg. Gruf.configure do |config|
|
16
15
|
## set enable_rabbitmq_trace to enable rabbitmq tracing
|
17
16
|
def init(service_name, gruf_config: nil, enable_rabbitmq_trace: nil)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
17
|
+
if ENV['AWS_XRAY_ENABLE']&.downcase.to_s == 'true'
|
18
|
+
|
19
|
+
Rails.application.config.xray = {
|
20
|
+
# default segment name generated by XRay middleware
|
21
|
+
daemon_address: ENV['AWS_XRAY_DAEMON_ADDRESS'],
|
22
|
+
name: service_name,
|
23
|
+
patch: %I[net_http aws_sdk],
|
24
|
+
# record db transactions as subsegments
|
25
|
+
active_record: true,
|
26
|
+
context_missing: 'LOG_ERROR'
|
27
|
+
}
|
28
|
+
|
29
|
+
@service_name = service_name
|
30
|
+
|
31
|
+
if gruf_config.present?
|
32
|
+
gruf_config.interceptors.use(::Istox::Xray::GrpcServerXrayInterceptor)
|
33
|
+
::Istox::GrpcClient.add_interceptors(::Istox::Xray::GrpcClientXrayInterceptor.new)
|
34
|
+
end
|
34
35
|
|
35
|
-
|
36
|
+
return unless enable_rabbitmq_trace == true
|
36
37
|
|
37
|
-
|
38
|
-
|
38
|
+
::Istox::BunnyBoot.add_publisher_interceptor(::Istox::Xray::RabbitmqPublisherInterceptor.new)
|
39
|
+
::Istox::BunnyBoot.add_consumer_interceptor(::Istox::Xray::RabbitmqConsumerInterceptor.new)
|
40
|
+
|
41
|
+
else
|
42
|
+
Rails.application.config.xray = {
|
43
|
+
name: service_name,
|
44
|
+
context_missing: 'LOG_ERROR'
|
45
|
+
}
|
46
|
+
|
47
|
+
config = {
|
48
|
+
sampling: false,
|
49
|
+
name: service_name
|
50
|
+
}
|
51
|
+
XRay.recorder.configure(config)
|
52
|
+
end
|
39
53
|
end
|
40
54
|
end
|
41
55
|
end
|
data/lib/istox/quant/bond.rb
CHANGED
data/lib/istox/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: istox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.154.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Siong Leng
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: amazing_print
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: awesome_print
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: 2.12.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: exponential-backoff
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.0.4
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.0.4
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: graphlient
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -318,6 +346,20 @@ dependencies:
|
|
318
346
|
- - ">="
|
319
347
|
- !ruby/object:Gem::Version
|
320
348
|
version: '0'
|
349
|
+
- !ruby/object:Gem::Dependency
|
350
|
+
name: pry-byebug
|
351
|
+
requirement: !ruby/object:Gem::Requirement
|
352
|
+
requirements:
|
353
|
+
- - ">="
|
354
|
+
- !ruby/object:Gem::Version
|
355
|
+
version: '0'
|
356
|
+
type: :development
|
357
|
+
prerelease: false
|
358
|
+
version_requirements: !ruby/object:Gem::Requirement
|
359
|
+
requirements:
|
360
|
+
- - ">="
|
361
|
+
- !ruby/object:Gem::Version
|
362
|
+
version: '0'
|
321
363
|
- !ruby/object:Gem::Dependency
|
322
364
|
name: pry-rails
|
323
365
|
requirement: !ruby/object:Gem::Requirement
|
@@ -441,6 +483,7 @@ files:
|
|
441
483
|
- Rakefile
|
442
484
|
- bin/console
|
443
485
|
- bin/setup
|
486
|
+
- bulk-update-version.py
|
444
487
|
- istox.gemspec
|
445
488
|
- lib/istox.rb
|
446
489
|
- lib/istox/constants/error.rb
|
@@ -460,7 +503,8 @@ files:
|
|
460
503
|
- lib/istox/helpers/order_book_prorate.rb
|
461
504
|
- lib/istox/helpers/publisher.rb
|
462
505
|
- lib/istox/helpers/rate_limit.rb
|
463
|
-
- lib/istox/helpers/
|
506
|
+
- lib/istox/helpers/redis_boot.rb
|
507
|
+
- lib/istox/helpers/redis_manager.rb
|
464
508
|
- lib/istox/helpers/regex_helper.rb
|
465
509
|
- lib/istox/helpers/remote_model_cache.rb
|
466
510
|
- lib/istox/helpers/result_handler.rb
|