Convert appservice, group server, profile and more databases to async (#8066)

This commit is contained in:
Patrick Cloke 2020-08-12 09:28:48 -04:00 committed by GitHub
parent 9d1e4942ab
commit a3a59bab7b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 91 additions and 116 deletions

View file

@ -18,8 +18,6 @@ import re
from canonicaljson import json
from twisted.internet import defer
from synapse.appservice import AppServiceTransaction
from synapse.config.appservice import load_appservices
from synapse.storage._base import SQLBaseStore, db_to_json
@ -124,17 +122,15 @@ class ApplicationServiceStore(ApplicationServiceWorkerStore):
class ApplicationServiceTransactionWorkerStore(
ApplicationServiceWorkerStore, EventsWorkerStore
):
@defer.inlineCallbacks
def get_appservices_by_state(self, state):
async def get_appservices_by_state(self, state):
"""Get a list of application services based on their state.
Args:
state(ApplicationServiceState): The state to filter on.
Returns:
A Deferred which resolves to a list of ApplicationServices, which
may be empty.
A list of ApplicationServices, which may be empty.
"""
results = yield self.db_pool.simple_select_list(
results = await self.db_pool.simple_select_list(
"application_services_state", {"state": state}, ["as_id"]
)
# NB: This assumes this class is linked with ApplicationServiceStore
@ -147,16 +143,15 @@ class ApplicationServiceTransactionWorkerStore(
services.append(service)
return services
@defer.inlineCallbacks
def get_appservice_state(self, service):
async def get_appservice_state(self, service):
"""Get the application service state.
Args:
service(ApplicationService): The service whose state to set.
Returns:
A Deferred which resolves to ApplicationServiceState.
An ApplicationServiceState.
"""
result = yield self.db_pool.simple_select_one(
result = await self.db_pool.simple_select_one(
"application_services_state",
{"as_id": service.id},
["state"],
@ -270,16 +265,14 @@ class ApplicationServiceTransactionWorkerStore(
"complete_appservice_txn", _complete_appservice_txn
)
@defer.inlineCallbacks
def get_oldest_unsent_txn(self, service):
async def get_oldest_unsent_txn(self, service):
"""Get the oldest transaction which has not been sent for this
service.
Args:
service(ApplicationService): The app service to get the oldest txn.
Returns:
A Deferred which resolves to an AppServiceTransaction or
None.
An AppServiceTransaction or None.
"""
def _get_oldest_unsent_txn(txn):
@ -298,7 +291,7 @@ class ApplicationServiceTransactionWorkerStore(
return entry
entry = yield self.db_pool.runInteraction(
entry = await self.db_pool.runInteraction(
"get_oldest_unsent_appservice_txn", _get_oldest_unsent_txn
)
@ -307,7 +300,7 @@ class ApplicationServiceTransactionWorkerStore(
event_ids = db_to_json(entry["event_ids"])
events = yield self.get_events_as_list(event_ids)
events = await self.get_events_as_list(event_ids)
return AppServiceTransaction(service=service, id=entry["txn_id"], events=events)
@ -332,8 +325,7 @@ class ApplicationServiceTransactionWorkerStore(
"set_appservice_last_pos", set_appservice_last_pos_txn
)
@defer.inlineCallbacks
def get_new_events_for_appservice(self, current_id, limit):
async def get_new_events_for_appservice(self, current_id, limit):
"""Get all new evnets"""
def get_new_events_for_appservice_txn(txn):
@ -357,11 +349,11 @@ class ApplicationServiceTransactionWorkerStore(
return upper_bound, [row[1] for row in rows]
upper_bound, event_ids = yield self.db_pool.runInteraction(
upper_bound, event_ids = await self.db_pool.runInteraction(
"get_new_events_for_appservice", get_new_events_for_appservice_txn
)
events = yield self.get_events_as_list(event_ids)
events = await self.get_events_as_list(event_ids)
return upper_bound, events