Add database version to phonehome stats. (#4753)
parent
57426ec6a3
commit
f191be822b
|
@ -0,0 +1 @@
|
||||||
|
Add database version to phonehome stats.
|
|
@ -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):
|
||||||
|
|
||||||
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):
|
||||||
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):
|
||||||
"""
|
"""
|
||||||
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):
|
||||||
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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue