Skip to content

Commit a7b7e52

Browse files
Reset callbacks on hotreload (#406)
1 parent 8801a0b commit a7b7e52

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
### Fixed
1414

1515
- `tnt_synchro_queue_len` metric type
16+
- Reset callbacks on hotreload
1617

1718
## [0.15.0] - 2022-08-09
1819
### Fixed

metrics/init.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ local registry = rawget(_G, '__metrics_registry')
1616
if not registry then
1717
registry = Registry.new()
1818
end
19+
registry.callbacks = {}
20+
1921
rawset(_G, '__metrics_registry', registry)
2022

2123
local hotreload = package.loaded['cartridge.hotreload']

test/integration/cartridge_hotreload_test.lua

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,23 @@ g.test_cartridge_hotreload_not_reset_collectors = function()
230230
value = 1,
231231
})
232232
end
233+
234+
g.test_cartridge_hotreload_reset_callbacks = function()
235+
local main_server = g.cluster:server('main')
236+
upload_config()
237+
238+
local len_before_hotreload = main_server:exec(function()
239+
local test_utils = require('test.utils')
240+
local Registry = rawget(_G, '__metrics_registry')
241+
return test_utils.len(Registry.callbacks)
242+
end)
243+
244+
reload_roles()
245+
246+
local len_after_hotreload = main_server:exec(function()
247+
local test_utils = require('test.utils')
248+
local Registry = rawget(_G, '__metrics_registry')
249+
return test_utils.len(Registry.callbacks)
250+
end)
251+
t.assert_equals(len_before_hotreload, len_after_hotreload)
252+
end

test/metrics_test.lua

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,21 @@ g.test_default_metrics_clear = function()
138138
metrics.invoke_callbacks()
139139
t.assert(#metrics.collect() > 0)
140140
end
141+
142+
g.test_hotreload_remove_callbacks = function()
143+
metrics.enable_default_metrics()
144+
145+
local Registry = rawget(_G, '__metrics_registry')
146+
local len_before_hotreload = utils.len(Registry.callbacks)
147+
t.assert_gt(len_before_hotreload, 0)
148+
149+
package.loaded['metrics'] = nil
150+
151+
metrics = require('metrics')
152+
metrics.enable_default_metrics()
153+
154+
Registry = rawget(_G, '__metrics_registry')
155+
local len_after_hotreload = utils.len(Registry.callbacks)
156+
157+
t.assert_equals(len_before_hotreload, len_after_hotreload)
158+
end

0 commit comments

Comments
 (0)