diff options
author | jackpoz <giacomopoz@gmail.com> | 2017-12-17 14:35:18 +0100 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2017-12-17 14:35:18 +0100 |
commit | 45b2bcfaf266cac74806ed71f32b8dc02cd2321e (patch) | |
tree | c64be96bd9d2a9731029813c4515806567e60a77 /src | |
parent | 3bb166dd5c014df9d5e9bea1479773ee406c0088 (diff) |
Shared/Metric: Fix crash on shutdown
Fix crash on shutdown with metrics enabled but InfluxDB stopping before worldserver
Diffstat (limited to 'src')
-rw-r--r-- | src/common/Metric/Metric.cpp | 7 | ||||
-rw-r--r-- | src/common/Metric/Metric.h | 2 | ||||
-rw-r--r-- | src/server/worldserver/Main.cpp | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/src/common/Metric/Metric.cpp b/src/common/Metric/Metric.cpp index e208cdc4aec..8ef90971808 100644 --- a/src/common/Metric/Metric.cpp +++ b/src/common/Metric/Metric.cpp @@ -213,16 +213,17 @@ void Metric::ScheduleSend() } } -void Metric::ForceSend() +void Metric::Unload() { // Send what's queued only if io_service is stopped (so only on shutdown) if (_enabled && _batchTimer->get_io_service().stopped()) { _enabled = false; SendBatch(); - _batchTimer->cancel(); - _overallStatusTimer->cancel(); } + + _batchTimer->cancel(); + _overallStatusTimer->cancel(); } void Metric::ScheduleOverallStatusLog() diff --git a/src/common/Metric/Metric.h b/src/common/Metric/Metric.h index 49347ffe1b7..720fc4a2de7 100644 --- a/src/common/Metric/Metric.h +++ b/src/common/Metric/Metric.h @@ -115,7 +115,7 @@ public: void LogEvent(std::string const& category, std::string const& title, std::string const& description); - void ForceSend(); + void Unload(); bool IsEnabled() const { return _enabled; } }; diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index bbda89aad03..631df594b04 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -232,7 +232,7 @@ extern int main(int argc, char** argv) std::shared_ptr<void> sMetricHandle(nullptr, [](void*) { TC_METRIC_EVENT("events", "Worldserver shutdown", ""); - sMetric->ForceSend(); + sMetric->Unload(); }); sScriptMgr->SetScriptLoader(AddScripts); |