mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-01-13 00:49:27 -05:00
Refuse to start if sqlite is older than 3.11.0
This commit is contained in:
parent
e48ba84e0b
commit
bf46821180
@ -447,11 +447,15 @@ class Porter(object):
|
|||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
def build_db_store(self, db_config: DatabaseConnectionConfig):
|
def build_db_store(
|
||||||
|
self, db_config: DatabaseConnectionConfig, allow_outdated_version: bool = False,
|
||||||
|
):
|
||||||
"""Builds and returns a database store using the provided configuration.
|
"""Builds and returns a database store using the provided configuration.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
config: The database configuration
|
db_config: The database configuration
|
||||||
|
allow_outdated_version: True to suppress errors about the database server
|
||||||
|
version being too old to run a complete synapse
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
The built Store object.
|
The built Store object.
|
||||||
@ -463,7 +467,9 @@ class Porter(object):
|
|||||||
hs = MockHomeserver(self.hs_config)
|
hs = MockHomeserver(self.hs_config)
|
||||||
|
|
||||||
with make_conn(db_config, engine) as db_conn:
|
with make_conn(db_config, engine) as db_conn:
|
||||||
engine.check_database(db_conn)
|
engine.check_database(
|
||||||
|
db_conn, allow_outdated_version=allow_outdated_version
|
||||||
|
)
|
||||||
prepare_database(db_conn, engine, config=None)
|
prepare_database(db_conn, engine, config=None)
|
||||||
store = Store(Database(hs, db_config, engine), db_conn, hs)
|
store = Store(Database(hs, db_config, engine), db_conn, hs)
|
||||||
db_conn.commit()
|
db_conn.commit()
|
||||||
@ -491,8 +497,10 @@ class Porter(object):
|
|||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def run(self):
|
def run(self):
|
||||||
try:
|
try:
|
||||||
|
# we allow people to port away from outdated versions of sqlite.
|
||||||
self.sqlite_store = self.build_db_store(
|
self.sqlite_store = self.build_db_store(
|
||||||
DatabaseConnectionConfig("master-sqlite", self.sqlite_config)
|
DatabaseConnectionConfig("master-sqlite", self.sqlite_config),
|
||||||
|
allow_outdated_version=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check if all background updates are done, abort if not.
|
# Check if all background updates are done, abort if not.
|
||||||
|
@ -32,7 +32,7 @@ class PostgresEngine(object):
|
|||||||
self.synchronous_commit = database_config.get("synchronous_commit", True)
|
self.synchronous_commit = database_config.get("synchronous_commit", True)
|
||||||
self._version = None # unknown as yet
|
self._version = None # unknown as yet
|
||||||
|
|
||||||
def check_database(self, db_conn):
|
def check_database(self, db_conn, allow_outdated_version: bool = False):
|
||||||
# Get the version of PostgreSQL that we're using. As per the psycopg2
|
# Get the version of PostgreSQL that we're using. As per the psycopg2
|
||||||
# docs: The number is formed by converting the major, minor, and
|
# docs: The number is formed by converting the major, minor, and
|
||||||
# revision numbers into two-decimal-digit numbers and appending them
|
# revision numbers into two-decimal-digit numbers and appending them
|
||||||
@ -40,7 +40,7 @@ class PostgresEngine(object):
|
|||||||
self._version = db_conn.server_version
|
self._version = db_conn.server_version
|
||||||
|
|
||||||
# Are we on a supported PostgreSQL version?
|
# Are we on a supported PostgreSQL version?
|
||||||
if self._version < 90500:
|
if not allow_outdated_version and self._version < 90500:
|
||||||
raise RuntimeError("Synapse requires PostgreSQL 9.5+ or above.")
|
raise RuntimeError("Synapse requires PostgreSQL 9.5+ or above.")
|
||||||
|
|
||||||
with db_conn.cursor() as txn:
|
with db_conn.cursor() as txn:
|
||||||
|
@ -53,8 +53,11 @@ class Sqlite3Engine(object):
|
|||||||
"""
|
"""
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def check_database(self, db_conn):
|
def check_database(self, db_conn, allow_outdated_version: bool = False):
|
||||||
pass
|
if not allow_outdated_version:
|
||||||
|
version = self.module.sqlite_version_info
|
||||||
|
if version < (3, 11, 0):
|
||||||
|
raise RuntimeError("Synapse requires sqlite 3.11 or above.")
|
||||||
|
|
||||||
def convert_param_style(self, sql):
|
def convert_param_style(self, sql):
|
||||||
return sql
|
return sql
|
||||||
|
Loading…
Reference in New Issue
Block a user