mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 02:54:52 -04:00
Convert some of the general database methods to async (#8100)
This commit is contained in:
parent
e04e465b4d
commit
050e20e7ca
13 changed files with 69 additions and 59 deletions
|
@ -332,8 +332,7 @@ class DatabasePool(object):
|
|||
"""
|
||||
return self._db_pool.running
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _check_safe_to_upsert(self):
|
||||
async def _check_safe_to_upsert(self):
|
||||
"""
|
||||
Is it safe to use native UPSERT?
|
||||
|
||||
|
@ -342,7 +341,7 @@ class DatabasePool(object):
|
|||
|
||||
If the background updates have not completed, wait 15 sec and check again.
|
||||
"""
|
||||
updates = yield self.simple_select_list(
|
||||
updates = await self.simple_select_list(
|
||||
"background_updates",
|
||||
keyvalues=None,
|
||||
retcols=["update_name"],
|
||||
|
@ -614,8 +613,7 @@ class DatabasePool(object):
|
|||
# "Simple" SQL API methods that operate on a single table with no JOINs,
|
||||
# no complex WHERE clauses, just a dict of values for columns.
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def simple_insert(self, table, values, or_ignore=False, desc="simple_insert"):
|
||||
async def simple_insert(self, table, values, or_ignore=False, desc="simple_insert"):
|
||||
"""Executes an INSERT query on the named table.
|
||||
|
||||
Args:
|
||||
|
@ -631,7 +629,7 @@ class DatabasePool(object):
|
|||
`or_ignore` is True
|
||||
"""
|
||||
try:
|
||||
yield self.runInteraction(desc, self.simple_insert_txn, table, values)
|
||||
await self.runInteraction(desc, self.simple_insert_txn, table, values)
|
||||
except self.engine.module.IntegrityError:
|
||||
# We have to do or_ignore flag at this layer, since we can't reuse
|
||||
# a cursor after we receive an error from the db.
|
||||
|
@ -684,8 +682,7 @@ class DatabasePool(object):
|
|||
|
||||
txn.executemany(sql, vals)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def simple_upsert(
|
||||
async def simple_upsert(
|
||||
self,
|
||||
table,
|
||||
keyvalues,
|
||||
|
@ -714,14 +711,14 @@ class DatabasePool(object):
|
|||
inserting
|
||||
lock (bool): True to lock the table when doing the upsert.
|
||||
Returns:
|
||||
Deferred(None or bool): Native upserts always return None. Emulated
|
||||
None or bool: Native upserts always return None. Emulated
|
||||
upserts return True if a new entry was created, False if an existing
|
||||
one was updated.
|
||||
"""
|
||||
attempts = 0
|
||||
while True:
|
||||
try:
|
||||
result = yield self.runInteraction(
|
||||
return await self.runInteraction(
|
||||
desc,
|
||||
self.simple_upsert_txn,
|
||||
table,
|
||||
|
@ -730,7 +727,6 @@ class DatabasePool(object):
|
|||
insertion_values,
|
||||
lock=lock,
|
||||
)
|
||||
return result
|
||||
except self.engine.module.IntegrityError as e:
|
||||
attempts += 1
|
||||
if attempts >= 5:
|
||||
|
@ -1121,8 +1117,7 @@ class DatabasePool(object):
|
|||
|
||||
return cls.cursor_to_dict(txn)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def simple_select_many_batch(
|
||||
async def simple_select_many_batch(
|
||||
self,
|
||||
table,
|
||||
column,
|
||||
|
@ -1156,7 +1151,7 @@ class DatabasePool(object):
|
|||
it_list[i : i + batch_size] for i in range(0, len(it_list), batch_size)
|
||||
]
|
||||
for chunk in chunks:
|
||||
rows = yield self.runInteraction(
|
||||
rows = await self.runInteraction(
|
||||
desc,
|
||||
self.simple_select_many_txn,
|
||||
table,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue