Convert runWithConnection to async. (#8121)
parent
d294f0e7e1
commit
d89692ea84
|
@ -0,0 +1 @@
|
|||
Convert various parts of the codebase to async/await.
|
|
@ -175,7 +175,7 @@ def run_as_background_process(desc: str, func, *args, **kwargs):
|
|||
It returns a Deferred which completes when the function completes, but it doesn't
|
||||
follow the synapse logcontext rules, which makes it appropriate for passing to
|
||||
clock.looping_call and friends (or for firing-and-forgetting in the middle of a
|
||||
normal synapse inlineCallbacks function).
|
||||
normal synapse async function).
|
||||
|
||||
Args:
|
||||
desc: a description for this background process type
|
||||
|
|
|
@ -516,14 +516,16 @@ class DatabasePool(object):
|
|||
logger.warning("Starting db txn '%s' from sentinel context", desc)
|
||||
|
||||
try:
|
||||
result = yield self.runWithConnection(
|
||||
self.new_transaction,
|
||||
desc,
|
||||
after_callbacks,
|
||||
exception_callbacks,
|
||||
func,
|
||||
*args,
|
||||
**kwargs
|
||||
result = yield defer.ensureDeferred(
|
||||
self.runWithConnection(
|
||||
self.new_transaction,
|
||||
desc,
|
||||
after_callbacks,
|
||||
exception_callbacks,
|
||||
func,
|
||||
*args,
|
||||
**kwargs
|
||||
)
|
||||
)
|
||||
|
||||
for after_callback, after_args, after_kwargs in after_callbacks:
|
||||
|
@ -535,8 +537,7 @@ class DatabasePool(object):
|
|||
|
||||
return result
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def runWithConnection(self, func: Callable, *args: Any, **kwargs: Any):
|
||||
async def runWithConnection(self, func: Callable, *args: Any, **kwargs: Any) -> Any:
|
||||
"""Wraps the .runWithConnection() method on the underlying db_pool.
|
||||
|
||||
Arguments:
|
||||
|
@ -547,7 +548,7 @@ class DatabasePool(object):
|
|||
kwargs: named args to pass to `func`
|
||||
|
||||
Returns:
|
||||
Deferred: The result of func
|
||||
The result of func
|
||||
"""
|
||||
parent_context = current_context() # type: Optional[LoggingContextOrSentinel]
|
||||
if not parent_context:
|
||||
|
@ -570,12 +571,10 @@ class DatabasePool(object):
|
|||
|
||||
return func(conn, *args, **kwargs)
|
||||
|
||||
result = yield make_deferred_yieldable(
|
||||
return await make_deferred_yieldable(
|
||||
self._db_pool.runWithConnection(inner_func, *args, **kwargs)
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
def cursor_to_dict(cursor):
|
||||
"""Converts a SQL cursor into an list of dicts.
|
||||
|
|
Loading…
Reference in New Issue