Skip to content
Snippets Groups Projects
Unverified Commit f191be82 authored by Richard van der Hoff's avatar Richard van der Hoff Committed by GitHub
Browse files

Add database version to phonehome stats. (#4753)

parent 57426ec6
No related branches found
No related tags found
No related merge requests found
Add database version to phonehome stats.
...@@ -555,6 +555,9 @@ def run(hs): ...@@ -555,6 +555,9 @@ def run(hs):
stats["memory_rss"] += process.memory_info().rss stats["memory_rss"] += process.memory_info().rss
stats["cpu_average"] += int(process.cpu_percent(interval=None)) stats["cpu_average"] += int(process.cpu_percent(interval=None))
stats["database_engine"] = hs.get_datastore().database_engine_name
stats["database_server_version"] = hs.get_datastore().get_server_version()
logger.info("Reporting stats to matrix.org: %s" % (stats,)) logger.info("Reporting stats to matrix.org: %s" % (stats,))
try: try:
yield hs.get_simple_http_client().put_json( yield hs.get_simple_http_client().put_json(
......
...@@ -1596,6 +1596,14 @@ class SQLBaseStore(object): ...@@ -1596,6 +1596,14 @@ class SQLBaseStore(object):
return cls.cursor_to_dict(txn) return cls.cursor_to_dict(txn)
@property
def database_engine_name(self):
return self.database_engine.module.__name__
def get_server_version(self):
"""Returns a string describing the server version number"""
return self.database_engine.server_version
class _RollbackButIsFineException(Exception): class _RollbackButIsFineException(Exception):
""" This exception is used to rollback a transaction without implying """ This exception is used to rollback a transaction without implying
......
...@@ -23,6 +23,7 @@ class PostgresEngine(object): ...@@ -23,6 +23,7 @@ class PostgresEngine(object):
self.module = database_module self.module = database_module
self.module.extensions.register_type(self.module.extensions.UNICODE) self.module.extensions.register_type(self.module.extensions.UNICODE)
self.synchronous_commit = database_config.get("synchronous_commit", True) self.synchronous_commit = database_config.get("synchronous_commit", True)
self._version = None # unknown as yet
def check_database(self, txn): def check_database(self, txn):
txn.execute("SHOW SERVER_ENCODING") txn.execute("SHOW SERVER_ENCODING")
...@@ -87,3 +88,27 @@ class PostgresEngine(object): ...@@ -87,3 +88,27 @@ class PostgresEngine(object):
""" """
txn.execute("SELECT nextval('state_group_id_seq')") txn.execute("SELECT nextval('state_group_id_seq')")
return txn.fetchone()[0] return txn.fetchone()[0]
@property
def server_version(self):
"""Returns a string giving the server version. For example: '8.1.5'
Returns:
string
"""
# note that this is a bit of a hack because it relies on on_new_connection
# having been called at least once. Still, that should be a safe bet here.
numver = self._version
assert numver is not None
# https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQSERVERVERSION
if numver >= 100000:
return "%i.%i" % (
numver / 10000, numver % 10000,
)
else:
return "%i.%i.%i" % (
numver / 10000,
(numver % 10000) / 100,
numver % 100,
)
...@@ -70,6 +70,15 @@ class Sqlite3Engine(object): ...@@ -70,6 +70,15 @@ class Sqlite3Engine(object):
self._current_state_group_id += 1 self._current_state_group_id += 1
return self._current_state_group_id return self._current_state_group_id
@property
def server_version(self):
"""Gets a string giving the server version. For example: '3.22.0'
Returns:
string
"""
return "%i.%i.%i" % self.module.sqlite_version_info
# Following functions taken from: https://github.com/coleifer/peewee # Following functions taken from: https://github.com/coleifer/peewee
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment