aboutsummaryrefslogtreecommitdiffstats
path: root/core/statsmanager.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2016-07-27 15:01:28 +0100
committerMatthew Wild <mwild1@gmail.com>2016-07-27 15:01:28 +0100
commita5e5091b70b0b76d717bb387382b4be226e25f4c (patch)
treed5bc9ce886610095d7deb6f27a010902e9c57cad /core/statsmanager.lua
parentf78f6631d3694a1ed5c0827629bd40e34e60bef9 (diff)
downloadprosody-a5e5091b70b0b76d717bb387382b4be226e25f4c.tar.gz
prosody-a5e5091b70b0b76d717bb387382b4be226e25f4c.zip
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)
Diffstat (limited to 'core/statsmanager.lua')
-rw-r--r--core/statsmanager.lua25
1 files changed, 12 insertions, 13 deletions
diff --git a/core/statsmanager.lua b/core/statsmanager.lua
index 9572f68d..19d5860e 100644
--- a/core/statsmanager.lua
+++ b/core/statsmanager.lua
@@ -56,15 +56,17 @@ if stats then
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");
+ function collect()
+ local mark_collection_done = mark_collection_start();
+ fire_event("stats-update");
+ mark_collection_done();
+
+ 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 @@ if stats_interval then
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