Skip to content

Commit f763614

Browse files
Don't reset collectors when Cartridge roles hot reloads (#341)
1 parent 47c269a commit f763614

File tree

4 files changed

+46
-5
lines changed

4 files changed

+46
-5
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased]
88

9+
### Fixed
10+
- Don't reset collectors when Cartridge roles hot reload
11+
912
### Deprecated
1013

1114
- Metrics:

metrics/init.lua

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ if not registry then
1717
end
1818
rawset(_G, '__metrics_registry', registry)
1919

20+
local hotreload = package.loaded['cartridge.hotreload']
21+
if hotreload ~= nil then
22+
hotreload.whitelist_globals({'__metrics_registry'})
23+
end
24+
2025
local function collectors()
2126
return registry.collectors
2227
end

test/helper.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function helpers.entrypoint(name)
2424
return path
2525
end
2626

27-
function helpers.init_cluster()
27+
function helpers.init_cluster(env)
2828
local cluster = helpers.Cluster:new({
2929
datadir = fio.tempdir(),
3030
server_command = helpers.entrypoint('srv_basic'),
@@ -38,6 +38,7 @@ function helpers.init_cluster()
3838
},
3939
},
4040
},
41+
env = env,
4142
})
4243
cluster:start()
4344
return cluster

test/integration/cartridge_hotreload_test.lua

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ local t = require('luatest')
33
local g = t.group()
44

55
local helpers = require('test.helper')
6+
local utils = require('test.utils')
67

78
g.before_all(function()
89
t.skip_if(type(helpers) ~= 'table', 'Skip cartridge test')
910
helpers.skip_cartridge_version_less('2.3.0')
10-
g.cluster = helpers.init_cluster()
11+
g.cluster = helpers.init_cluster({TARANTOOL_ROLES_RELOAD_ALLOWED = 'true'})
1112
end)
1213

1314
g.after_all(function()
@@ -57,9 +58,9 @@ end
5758

5859
local function reload_roles()
5960
local main_server = g.cluster:server('main')
60-
main_server.net_box:eval([[
61-
require('cartridge.roles').reload()
62-
]])
61+
t.assert(main_server.net_box:eval([[
62+
return require('cartridge.roles').reload()
63+
]]))
6364
end
6465

6566
g.test_cartridge_hotreload_set_export = function()
@@ -198,3 +199,34 @@ g.test_cartridge_hotreload_labels_from_config_and_set_labels = function()
198199
t.assert_equals(obs.label_pairs.alias, 'main')
199200
end
200201
end
202+
203+
g.test_cartridge_hotreload_not_reset_collectors = function()
204+
local main_server = g.cluster:server('main')
205+
upload_config()
206+
207+
main_server:exec(function()
208+
local metrics = require('cartridge').service_get('metrics')
209+
metrics.gauge('hotreload_checker'):set(1)
210+
end)
211+
212+
local resp = main_server:http_request('get', '/new-metrics', {raise = false})
213+
t.assert_equals(resp.status, 200)
214+
215+
local obs = utils.find_metric('hotreload_checker', resp.json)
216+
t.assert_covers(obs[1], {
217+
metric_name = 'hotreload_checker',
218+
value = 1,
219+
})
220+
221+
reload_roles()
222+
223+
main_server = g.cluster:server('main')
224+
resp = main_server:http_request('get', '/new-metrics', {raise = false})
225+
t.assert_equals(resp.status, 200)
226+
227+
obs = utils.find_metric('hotreload_checker', resp.json)
228+
t.assert_covers(obs[1], {
229+
metric_name = 'hotreload_checker',
230+
value = 1,
231+
})
232+
end

0 commit comments

Comments
 (0)