- Added SmartEnum.h for enum iteration, stringification, and more, courtesy of krabicezpapundeklu/smart_enum
- Moved a bunch of enums in SharedDefines.h to the new system
- Miscellaneous utility methods ported
Core/Util: Redesign SmartEnum to properly work for large
enums (>64 entries) and play nice with IDEs (PR #22768)
(cherry picked from commit 338e8ba0fea8b4b15120c96fff15a6c4b1a52593)
(cherry picked from commit f7ca0877a3736000a6e3b4ed09ac5f08b4d8e3f0)
(cherry picked from commit 207093475a177e9fd29696e80fdd06a11324782d)
(cherry picked from commit ee68cf33921944fd3f8c188044906998cf10ff2a)
(cherry picked from commit c16d461e16f0704bb11040faff30953d33ba2188)
(cherry picked from commit f6b0d99e2c0bc22b44d6f3cfdae50cbba7d51de8)
(cherry picked from commit bc1f456125c1b6c90617a514152d69c40ce64886)
* Circle CI (#22982)
* Build/CI: Add Circle CI
* Fix travis
(cherry picked from commit cb6439bacd8b5d10ef2a4d2eb4e8ab2f950e4ffd)
* CI/CircleCI: Add parallel no-pch build
(cherry picked from commit 33c58b4aaf4afc8ca13c1d07c65d66e6beb6bedb)
* CI/CircleCI: Use ccache for nopch
(cherry picked from commit 6bcf5c64c489175da41acf7739f156319a00f5f9)
* CI/CircleCI: Change base docker image to custom-built trinitycore one
(cherry picked from commit 37beeb1282c24fc584f5f524279df408779c5d5b)
* CI/CircleCI: Switch to Ubuntu 18.10
(cherry picked from commit 6dfb4fde07082498a264ca0802ebdeb0bf3fa994)
* CI/CircleCI: Switch to Ubuntu 19.04
(cherry picked from commit 9009c82a8db2bdb433cba17820af8b0cef8e28e3)
* CI/Circle CI: Reduce ccache size from 5G to 1G
This should speedup Circle CI cache saving and in turn no-pch build
(cherry picked from commit 1b543ac16dd61ac6e1f8f00fee28156234c7e73f)
* CI/Circle CI: Adjust config for master branch
Co-authored-by: Giacomo Pozzoni <[email protected]>
Docs at https://trinitycore.atlassian.net/wiki/display/tc/Monitoring+a+TrinityCore+server
* Common/Graphs: Initial proof of concept
* Move influx db code to its own class
* Reuse the same socket
* Allow to log values of different categories
* Allow to log events
* Pass the timestamp to influxdb
* Send events in batches
* Send data async
* Log server shutdown.
Fix memory leak.
* Allow to enable/disable Stats in the settings and at runtime
* Read interval between each batch send from config
* Add InfluxDB connection info to configs
* Move each event category to its own table
* Log pathfinding queries
* Move categories table initialization to constructor using enum as key to avoid assigning the table name to the wrong enum value
* Log player login/logout events.
Pass the hostname correctly in the HTTP request.
* Fix linux build
* Handle "Connection: close" HTTP header, reconnecting on next scheduled send.
Disable StatsLogger if connection fails, logging the error.
* Add an enum for categories of logged values, it's still possible to pass a string instead of the enum.
* Don't log the whole batchedData when InfluxDB returns an error, it's too long and unreadable on console.
* Allow to call a function at a specified interval in thread-safe World::Update() context to log data like player count.
* Log map tile load/unload
* Core/StatsLogger: Allow logging more value types other than ints
https://docs.influxdata.com/influxdb/v0.10/write_protocols/write_syntax/
* Fix a typo in string escape of StatsLogger
* Yet more fixes to the escaping in FormatInfluxDBValue
* DB/Gameobject: Fix respawn time of few Quest GameObjects
By Tauriella, closes#16701
* DB/Misc: Fix some engrish
By tkrokli closes#16648
* Tools/MMaps: Add format library linking to mmaps_generator
(Very) partial cherry pick of ed75b0649a
* Core/StatsLogger: Simplify code
Convert values and categories arrays to maps initialized in-place
Remove constructor and destructor
* Core/StatsLogger: Add realm name to the event and value tags
* Log amount of processed packet of each session
* Apply recent singleton changes to sStatsLogger too
* Fix influxdb data format if no realm name is present
* Remove unneeded newlines from request body, fixes response 400 from InfluxDB 0.10
* Rename Reporting folder to Metric
* Rename StatsLogger to Metric
* Rename InfluxDB configs to Metric
* Add Grafana dashboards
* Add a random annoying macro
* Move string formatting to Metric::SendBatch(), reducing performance footprint of Metric::LogEvent() and Metric::LogValue()
* Update grafana graphs refresing tags on load and showing now-15m data, refreshing every minute. These settings can be modified in grafana.
* Rename MetricData fields
* Contrib/Grafana: Rename dashboard files
* Contrib/Grafana: Replace hardcoded Windows/Ubuntu realm names by the default, Trinity
* Config/Worldserver: Add missing section to the index
* Contrib/Grafana: Add singlestat panels with current online players, update diff averages (1 min, 5 mins and 15 mins)
http://i.imgur.com/Zi8lfvS.png
* Core/Metric: Replace the enums MetricEventCategory and MetricValueCategory by strings
For the sake of simplicity and less recompile time when adding new metrics, similar to how TC_LOG_* works
* Contrib/Grafana: Display the current number of online players and not its average
Closes#15075
(cherry picked from commit 3ae10160820782d039c3449107960108fb3a63b9)
# Conflicts:
# src/server/game/Server/WorldSession.cpp
# src/server/game/World/World.cpp
# src/server/worldserver/Main.cpp
You must copy it to your wow directory with the tools and run it.
Linux version is welcomed.
(cherry picked from commit d55d32fa0f7a7d86d8eae2649f7090377c777d2e)
Fix a factual error in the /contrib/check_updates.sh error message text,
Best shown in an example from the latest travis build error:
```
$ ./contrib/check_updates.sh auth auth
Database Updater check script:
Checking database 'auth' for missing filenames in tables...
- "sql/updates/2015_10_09_00_auth.sql" is missing in table 'auth'.'updates'
Fatal error:
The Database Updater is broken for database 'auth
due to applied update which are missing in the 'auth'.'updates' table.
How to fix:
Insert the missing names of sql updates which were applied already to
the 'updates' table of the 'auth' base dump ('sql/base/auth_database.sql').
The command "./contrib/check_updates.sh auth auth" exited with 1.
```
Main fix: `\"sql/updates/${file}\"` -> `\"sql/updates/${name}/${file}\"`
Before this change, the error message claims that the updated SQL file was placed
directly in the `/sql/updates/` directory and not in the subdirectory based on its DB name.
All the other changes are improvements in English grammar and more precise description.
(cherry picked from commit 01e0475ab898632bb9fd7c3ab0b11ddc6d5cee81)