Compare commits

...

5 Commits

Author SHA1 Message Date
H. Shay
c92f2f7409 conditionally import psycopg2 2022-06-06 21:30:13 -07:00
H. Shay
5b97ad0680 use real newsfragment suffix 2022-06-06 21:21:56 -07:00
H. Shay
31c4bf1d45 newsfragment 2022-06-06 21:10:07 -07:00
H. Shay
af75e0d722 fix import errors from moving sqlite/postgres import statements in engine 2022-06-06 20:33:46 -07:00
H. Shay
950b0cfe12 conditionally import sqlite and postgres in engines/__init__.py 2022-06-06 20:33:04 -07:00
40 changed files with 59 additions and 44 deletions

1
changelog.d/12974.bugfix Normal file
View File

@@ -0,0 +1 @@
Fix a bug introduced in v1.60.0 that causes synapse to fail to start when python module sqlite3 is not installed.

View File

@@ -17,7 +17,7 @@ from typing import TYPE_CHECKING, Optional
from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.database import DatabasePool, LoggingDatabaseConnection
from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.util.id_generators import MultiWriterIdGenerator from synapse.storage.util.id_generators import MultiWriterIdGenerator
if TYPE_CHECKING: if TYPE_CHECKING:

View File

@@ -628,7 +628,7 @@ class BackgroundUpdater:
logger.debug("[SQL] %s", sql) logger.debug("[SQL] %s", sql)
c.execute(sql) c.execute(sql)
if isinstance(self.db_pool.engine, engines.PostgresEngine): if isinstance(self.db_pool.engine, engines.postgres.PostgresEngine):
runner: Optional[Callable[[Connection], None]] = create_index_psql runner: Optional[Callable[[Connection], None]] = create_index_psql
elif psql_only: elif psql_only:
runner = None runner = None

View File

@@ -55,7 +55,9 @@ from synapse.logging.context import (
from synapse.metrics import register_threadpool from synapse.metrics import register_threadpool
from synapse.metrics.background_process_metrics import run_as_background_process from synapse.metrics.background_process_metrics import run_as_background_process
from synapse.storage.background_updates import BackgroundUpdater from synapse.storage.background_updates import BackgroundUpdater
from synapse.storage.engines import BaseDatabaseEngine, PostgresEngine, Sqlite3Engine from synapse.storage.engines import BaseDatabaseEngine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.storage.types import Connection, Cursor from synapse.storage.types import Connection, Cursor
from synapse.util.async_helpers import delay_cancellation from synapse.util.async_helpers import delay_cancellation
from synapse.util.iterutils import batch_iter from synapse.util.iterutils import batch_iter

View File

@@ -24,7 +24,8 @@ from synapse.storage.database import (
LoggingTransaction, LoggingTransaction,
) )
from synapse.storage.databases.main.stats import UserSortOrder from synapse.storage.databases.main.stats import UserSortOrder
from synapse.storage.engines import BaseDatabaseEngine, PostgresEngine from synapse.storage.engines import BaseDatabaseEngine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.types import Cursor from synapse.storage.types import Cursor
from synapse.storage.util.id_generators import MultiWriterIdGenerator, StreamIdGenerator from synapse.storage.util.id_generators import MultiWriterIdGenerator, StreamIdGenerator
from synapse.types import JsonDict, get_domain_from_id from synapse.types import JsonDict, get_domain_from_id

View File

@@ -37,7 +37,7 @@ from synapse.storage.database import (
) )
from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore
from synapse.storage.databases.main.push_rule import PushRulesWorkerStore from synapse.storage.databases.main.push_rule import PushRulesWorkerStore
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.util.id_generators import ( from synapse.storage.util.id_generators import (
AbstractStreamIdGenerator, AbstractStreamIdGenerator,
AbstractStreamIdTracker, AbstractStreamIdTracker,

View File

@@ -31,7 +31,7 @@ from synapse.storage.database import (
LoggingDatabaseConnection, LoggingDatabaseConnection,
LoggingTransaction, LoggingTransaction,
) )
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.util.caches.descriptors import _CachedFunction from synapse.util.caches.descriptors import _CachedFunction
from synapse.util.iterutils import batch_iter from synapse.util.iterutils import batch_iter

View File

@@ -36,7 +36,7 @@ from synapse.storage.database import (
LoggingTransaction, LoggingTransaction,
make_in_list_sql_clause, make_in_list_sql_clause,
) )
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.util.id_generators import ( from synapse.storage.util.id_generators import (
AbstractStreamIdGenerator, AbstractStreamIdGenerator,
MultiWriterIdGenerator, MultiWriterIdGenerator,

View File

@@ -42,7 +42,7 @@ from synapse.storage.database import (
make_in_list_sql_clause, make_in_list_sql_clause,
) )
from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.util.id_generators import StreamIdGenerator from synapse.storage.util.id_generators import StreamIdGenerator
from synapse.types import JsonDict from synapse.types import JsonDict
from synapse.util import json_encoder from synapse.util import json_encoder

View File

@@ -42,7 +42,7 @@ from synapse.storage.database import (
) )
from synapse.storage.databases.main.events_worker import EventsWorkerStore from synapse.storage.databases.main.events_worker import EventsWorkerStore
from synapse.storage.databases.main.signatures import SignatureWorkerStore from synapse.storage.databases.main.signatures import SignatureWorkerStore
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.types import JsonDict from synapse.types import JsonDict
from synapse.util import json_encoder from synapse.util import json_encoder
from synapse.util.caches.descriptors import cached from synapse.util.caches.descriptors import cached

View File

@@ -67,7 +67,7 @@ from synapse.storage.database import (
LoggingDatabaseConnection, LoggingDatabaseConnection,
LoggingTransaction, LoggingTransaction,
) )
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.types import Cursor from synapse.storage.types import Cursor
from synapse.storage.util.id_generators import ( from synapse.storage.util.id_generators import (
AbstractStreamIdTracker, AbstractStreamIdTracker,

View File

@@ -23,7 +23,7 @@ from synapse.storage.database import (
LoggingTransaction, LoggingTransaction,
) )
from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.types import Connection from synapse.storage.types import Connection
from synapse.storage.util.id_generators import ( from synapse.storage.util.id_generators import (
AbstractStreamIdGenerator, AbstractStreamIdGenerator,

View File

@@ -31,7 +31,8 @@ from synapse.storage.databases.main.events_worker import EventsWorkerStore
from synapse.storage.databases.main.pusher import PusherWorkerStore from synapse.storage.databases.main.pusher import PusherWorkerStore
from synapse.storage.databases.main.receipts import ReceiptsWorkerStore from synapse.storage.databases.main.receipts import ReceiptsWorkerStore
from synapse.storage.databases.main.roommember import RoomMemberWorkerStore from synapse.storage.databases.main.roommember import RoomMemberWorkerStore
from synapse.storage.engines import PostgresEngine, Sqlite3Engine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.storage.push_rule import InconsistentRuleException, RuleNotFoundException from synapse.storage.push_rule import InconsistentRuleException, RuleNotFoundException
from synapse.storage.util.id_generators import ( from synapse.storage.util.id_generators import (
AbstractStreamIdGenerator, AbstractStreamIdGenerator,

View File

@@ -35,7 +35,7 @@ from synapse.storage.database import (
LoggingDatabaseConnection, LoggingDatabaseConnection,
LoggingTransaction, LoggingTransaction,
) )
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.util.id_generators import ( from synapse.storage.util.id_generators import (
AbstractStreamIdTracker, AbstractStreamIdTracker,
MultiWriterIdGenerator, MultiWriterIdGenerator,

View File

@@ -33,7 +33,7 @@ from synapse.events import EventBase
from synapse.storage._base import SQLBaseStore from synapse.storage._base import SQLBaseStore
from synapse.storage.database import LoggingTransaction, make_in_list_sql_clause from synapse.storage.database import LoggingTransaction, make_in_list_sql_clause
from synapse.storage.databases.main.stream import generate_pagination_where_clause from synapse.storage.databases.main.stream import generate_pagination_where_clause
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.types import JsonDict, RoomStreamToken, StreamKeyType, StreamToken from synapse.types import JsonDict, RoomStreamToken, StreamKeyType, StreamToken
from synapse.util.caches.descriptors import cached, cachedList from synapse.util.caches.descriptors import cached, cachedList

View File

@@ -45,7 +45,7 @@ from synapse.storage.database import (
) )
from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore from synapse.storage.databases.main.cache import CacheInvalidationWorkerStore
from synapse.storage.databases.main.events_worker import EventsWorkerStore from synapse.storage.databases.main.events_worker import EventsWorkerStore
from synapse.storage.engines import Sqlite3Engine from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.storage.roommember import ( from synapse.storage.roommember import (
GetRoomsForUserWithStreamOrdering, GetRoomsForUserWithStreamOrdering,
MemberSummary, MemberSummary,

View File

@@ -27,7 +27,9 @@ from synapse.storage.database import (
LoggingTransaction, LoggingTransaction,
) )
from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.storage.databases.main.events_worker import EventRedactBehaviour
from synapse.storage.engines import BaseDatabaseEngine, PostgresEngine, Sqlite3Engine from synapse.storage.engines import BaseDatabaseEngine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.types import JsonDict from synapse.types import JsonDict
if TYPE_CHECKING: if TYPE_CHECKING:

View File

@@ -64,7 +64,8 @@ from synapse.storage.database import (
make_in_list_sql_clause, make_in_list_sql_clause,
) )
from synapse.storage.databases.main.events_worker import EventsWorkerStore from synapse.storage.databases.main.events_worker import EventsWorkerStore
from synapse.storage.engines import BaseDatabaseEngine, PostgresEngine from synapse.storage.engines import BaseDatabaseEngine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.util.id_generators import MultiWriterIdGenerator from synapse.storage.util.id_generators import MultiWriterIdGenerator
from synapse.types import PersistedEventPosition, RoomStreamToken from synapse.types import PersistedEventPosition, RoomStreamToken
from synapse.util.caches.descriptors import cached from synapse.util.caches.descriptors import cached

View File

@@ -42,7 +42,8 @@ from synapse.storage.database import (
) )
from synapse.storage.databases.main.state import StateFilter from synapse.storage.databases.main.state import StateFilter
from synapse.storage.databases.main.state_deltas import StateDeltasStore from synapse.storage.databases.main.state_deltas import StateDeltasStore
from synapse.storage.engines import PostgresEngine, Sqlite3Engine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.types import ( from synapse.types import (
JsonDict, JsonDict,
UserProfile, UserProfile,

View File

@@ -21,7 +21,7 @@ from synapse.storage.database import (
LoggingDatabaseConnection, LoggingDatabaseConnection,
LoggingTransaction, LoggingTransaction,
) )
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.state import StateFilter from synapse.storage.state import StateFilter
from synapse.types import MutableStateMap, StateMap from synapse.types import MutableStateMap, StateMap

View File

@@ -14,17 +14,19 @@
from typing import Any, Mapping from typing import Any, Mapping
from ._base import BaseDatabaseEngine, IncorrectDatabaseSetup from ._base import BaseDatabaseEngine, IncorrectDatabaseSetup
from .postgres import PostgresEngine
from .sqlite import Sqlite3Engine
def create_engine(database_config: Mapping[str, Any]) -> BaseDatabaseEngine: def create_engine(database_config: Mapping[str, Any]) -> BaseDatabaseEngine:
name = database_config["name"] name = database_config["name"]
if name == "sqlite3": if name == "sqlite3":
from .sqlite import Sqlite3Engine
return Sqlite3Engine(database_config) return Sqlite3Engine(database_config)
if name == "psycopg2": if name == "psycopg2":
from .postgres import PostgresEngine
return PostgresEngine(database_config) return PostgresEngine(database_config)
raise RuntimeError("Unsupported database engine '%s'" % (name,)) raise RuntimeError("Unsupported database engine '%s'" % (name,))

View File

@@ -23,7 +23,7 @@ from synapse.storage.engines._base import (
from synapse.storage.types import Cursor from synapse.storage.types import Cursor
if TYPE_CHECKING: if TYPE_CHECKING:
import psycopg2 # noqa: F401 import psycopg2
from synapse.storage.database import LoggingDatabaseConnection from synapse.storage.database import LoggingDatabaseConnection

View File

@@ -14,7 +14,8 @@
import json import json
import logging import logging
from synapse.storage.engines import PostgresEngine, Sqlite3Engine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.storage.prepare_database import get_statements from synapse.storage.prepare_database import get_statements
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -14,7 +14,7 @@
import json import json
import logging import logging
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.prepare_database import get_statements from synapse.storage.prepare_database import get_statements
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -14,7 +14,7 @@
import logging import logging
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.prepare_database import get_statements from synapse.storage.prepare_database import get_statements
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -14,7 +14,7 @@
import logging import logging
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -14,7 +14,7 @@
import logging import logging
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.prepare_database import get_statements from synapse.storage.prepare_database import get_statements
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -14,7 +14,8 @@
import logging import logging
from synapse.storage.engines import PostgresEngine, Sqlite3Engine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.storage.prepare_database import get_statements from synapse.storage.prepare_database import get_statements
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.prepare_database import get_statements from synapse.storage.prepare_database import get_statements
FIX_INDEXES = """ FIX_INDEXES = """

View File

@@ -53,7 +53,7 @@ SQLite:
import logging import logging
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -1,7 +1,7 @@
import logging import logging
from io import StringIO from io import StringIO
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.prepare_database import execute_statements_from_stream from synapse.storage.prepare_database import execute_statements_from_stream
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@@ -20,7 +20,8 @@ entries, and with a UNIQUE index.
import logging import logging
from io import StringIO from io import StringIO
from synapse.storage.engines import BaseDatabaseEngine, PostgresEngine from synapse.storage.engines import BaseDatabaseEngine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.prepare_database import execute_statements_from_stream from synapse.storage.prepare_database import execute_statements_from_stream
from synapse.storage.types import Cursor from synapse.storage.types import Cursor

View File

@@ -19,7 +19,7 @@ Adds a postgres SEQUENCE for generating guest user IDs.
from synapse.storage.databases.main.registration import ( from synapse.storage.databases.main.registration import (
find_max_generated_user_id_localpart, find_max_generated_user_id_localpart,
) )
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
def run_create(cur, database_engine, *args, **kwargs): def run_create(cur, database_engine, *args, **kwargs):

View File

@@ -16,7 +16,8 @@
This migration handles the process of changing the type of `room_depth.min_depth` to This migration handles the process of changing the type of `room_depth.min_depth` to
a BIGINT. a BIGINT.
""" """
from synapse.storage.engines import BaseDatabaseEngine, PostgresEngine from synapse.storage.engines import BaseDatabaseEngine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.types import Cursor from synapse.storage.types import Cursor

View File

@@ -18,7 +18,9 @@ This migration adds triggers to the partial_state_events tables to enforce uniqu
Triggers cannot be expressed in .sql files, so we have to use a separate file. Triggers cannot be expressed in .sql files, so we have to use a separate file.
""" """
from synapse.storage.engines import BaseDatabaseEngine, PostgresEngine, Sqlite3Engine from synapse.storage.engines import BaseDatabaseEngine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.storage.engines.sqlite import Sqlite3Engine
from synapse.storage.types import Cursor from synapse.storage.types import Cursor

View File

@@ -17,7 +17,7 @@
Adds a postgres SEQUENCE for generating application service transaction IDs. Adds a postgres SEQUENCE for generating application service transaction IDs.
""" """
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
def run_create(cur, database_engine, *args, **kwargs): def run_create(cur, database_engine, *args, **kwargs):

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
def run_create(cur, database_engine, *args, **kwargs): def run_create(cur, database_engine, *args, **kwargs):

View File

@@ -16,11 +16,8 @@ import logging
import threading import threading
from typing import TYPE_CHECKING, Callable, List, Optional from typing import TYPE_CHECKING, Callable, List, Optional
from synapse.storage.engines import ( from synapse.storage.engines import BaseDatabaseEngine, IncorrectDatabaseSetup
BaseDatabaseEngine, from synapse.storage.engines.postgres import PostgresEngine
IncorrectDatabaseSetup,
PostgresEngine,
)
from synapse.storage.types import Connection, Cursor from synapse.storage.types import Connection, Cursor
if TYPE_CHECKING: if TYPE_CHECKING:

View File

@@ -67,7 +67,8 @@ from synapse.http.site import SynapseRequest
from synapse.logging.context import ContextResourceUsage from synapse.logging.context import ContextResourceUsage
from synapse.server import HomeServer from synapse.server import HomeServer
from synapse.storage import DataStore from synapse.storage import DataStore
from synapse.storage.engines import PostgresEngine, create_engine from synapse.storage.engines import create_engine
from synapse.storage.engines.postgres import PostgresEngine
from synapse.types import JsonDict from synapse.types import JsonDict
from synapse.util import Clock from synapse.util import Clock

View File

@@ -16,7 +16,7 @@ import synapse.rest.admin
from synapse.api.constants import EventTypes from synapse.api.constants import EventTypes
from synapse.api.errors import StoreError from synapse.api.errors import StoreError
from synapse.rest.client import login, room from synapse.rest.client import login, room
from synapse.storage.engines import PostgresEngine from synapse.storage.engines.postgres import PostgresEngine
from tests.unittest import HomeserverTestCase, skip_unless from tests.unittest import HomeserverTestCase, skip_unless
from tests.utils import USE_POSTGRES_FOR_TESTS from tests.utils import USE_POSTGRES_FOR_TESTS