Software /
code /
prosody
Diff
core/statsmanager.lua @ 7524:b6f32bb3b584
statsmanager: If provider doesn't offer a get_stats method, still fire the stats-update event if stats_interval is specified (however stats-updated will not fire)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 27 Jul 2016 15:01:28 +0100 |
parent | 7522:ebf2e77ac8a7 |
child | 7533:4ef37ac69562 |
line wrap: on
line diff
--- a/core/statsmanager.lua Wed Jul 27 14:06:10 2016 +0100 +++ b/core/statsmanager.lua Wed Jul 27 15:01:28 2016 +0100 @@ -56,15 +56,17 @@ end if stats_interval then - if stats.get_stats then - log("debug", "Statistics collection is enabled every %d seconds", stats_interval); + log("debug", "Statistics collection is enabled every %d seconds", stats_interval); + + local mark_collection_start = measure("times", "stats.collection"); + local mark_processing_start = measure("times", "stats.processing"); - local mark_collection_start = measure("times", "stats.collection"); - local mark_processing_start = measure("times", "stats.processing"); + function collect() + local mark_collection_done = mark_collection_start(); + fire_event("stats-update"); + mark_collection_done(); - function collect() - local mark_collection_done = mark_collection_start(); - fire_event("stats-update"); + if stats.get_stats then changed_stats, stats_extra = {}, {}; for stat_name, getter in pairs(stats.get_stats()) do local type, value, extra = getter(); @@ -77,17 +79,14 @@ stats_extra[stat_name] = extra; end end - mark_collection_done(); local mark_processing_done = mark_processing_start(); fire_event("stats-updated", { stats = latest_stats, changed_stats = changed_stats, stats_extra = stats_extra }); mark_processing_done(); - return stats_interval; end - timer.add_task(stats_interval, collect); - prosody.events.add_handler("server-started", function () collect() end, -1); - else - log("error", "statistics_interval specified, but the selected statistics_provider (%s) does not support statistics collection", stats_provider_config or "internal"); + return stats_interval; end + timer.add_task(stats_interval, collect); + prosody.events.add_handler("server-started", function () collect() end, -1); end if not stats_interval and stats_provider == "util.statistics" then