diff --git a/CHANGELOG.md b/CHANGELOG.md index b91d0214..ebf07f4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Throw an error when http_middelware is processing a wrong handler [#199](https://github.com/tarantool/metrics/issues/199) +- cartridge issues metric fails before cartridge.cfg() call [#298](https://github.com/tarantool/metrics/issues/298) ## [0.10.0] - 2021-08-03 ### Changed diff --git a/metrics/cartridge.lua b/metrics/cartridge.lua index a5e274e8..6a1d4051 100644 --- a/metrics/cartridge.lua +++ b/metrics/cartridge.lua @@ -2,7 +2,6 @@ local metrics = require('metrics') local cartridge_metrics = { require('metrics.cartridge.issues'), - require('metrics.tarantool.clock'), } local function enable() diff --git a/metrics/cartridge/issues.lua b/metrics/cartridge/issues.lua index e2a166b2..a4ace3b7 100644 --- a/metrics/cartridge/issues.lua +++ b/metrics/cartridge/issues.lua @@ -3,14 +3,18 @@ local fun = require('fun') local collectors_list = {} -local function update_info_metrics() +local function update() local list_on_instance = rawget(_G, '__cartridge_issues_list_on_instance') if not list_on_instance then return end - local issues = list_on_instance() + local ok, issues = pcall(list_on_instance) + + if not ok then + return + end local levels = { 'warning', 'critical' } @@ -22,6 +26,6 @@ local function update_info_metrics() end return { - update = update_info_metrics, + update = update, list = collectors_list, } diff --git a/test/unit/cartridge_issues_test.lua b/test/unit/cartridge_issues_test.lua new file mode 100644 index 00000000..98daf8b6 --- /dev/null +++ b/test/unit/cartridge_issues_test.lua @@ -0,0 +1,16 @@ +local helpers = require('test.helper') + +local t = require('luatest') +local g = t.group() + +g.before_all = function() + t.skip_if(type(helpers) ~= 'table', 'Skip cartridge test') + helpers.skip_cartridge_version_less('2.0.2') +end + +g.test_cartridge_issues_before_cartridge_cfg = function() + require('cartridge.issues') + local issues = require('metrics.cartridge.issues') + local ok, error = pcall(issues.update) + t.assert(ok, error) +end