mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Remove the unused inlineCallbacks code-paths in the caching code (#8119)
This commit is contained in:
parent
76d21d14a0
commit
d294f0e7e1
1
changelog.d/8119.misc
Normal file
1
changelog.d/8119.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Convert various parts of the codebase to async/await.
|
@ -285,16 +285,9 @@ class Cache(object):
|
|||||||
|
|
||||||
|
|
||||||
class _CacheDescriptorBase(object):
|
class _CacheDescriptorBase(object):
|
||||||
def __init__(
|
def __init__(self, orig: _CachedFunction, num_args, cache_context=False):
|
||||||
self, orig: _CachedFunction, num_args, inlineCallbacks, cache_context=False
|
|
||||||
):
|
|
||||||
self.orig = orig
|
self.orig = orig
|
||||||
|
|
||||||
if inlineCallbacks:
|
|
||||||
self.function_to_call = defer.inlineCallbacks(orig)
|
|
||||||
else:
|
|
||||||
self.function_to_call = orig
|
|
||||||
|
|
||||||
arg_spec = inspect.getfullargspec(orig)
|
arg_spec = inspect.getfullargspec(orig)
|
||||||
all_args = arg_spec.args
|
all_args = arg_spec.args
|
||||||
|
|
||||||
@ -364,7 +357,7 @@ class CacheDescriptor(_CacheDescriptorBase):
|
|||||||
invalidated) by adding a special "cache_context" argument to the function
|
invalidated) by adding a special "cache_context" argument to the function
|
||||||
and passing that as a kwarg to all caches called. For example::
|
and passing that as a kwarg to all caches called. For example::
|
||||||
|
|
||||||
@cachedInlineCallbacks(cache_context=True)
|
@cached(cache_context=True)
|
||||||
def foo(self, key, cache_context):
|
def foo(self, key, cache_context):
|
||||||
r1 = yield self.bar1(key, on_invalidate=cache_context.invalidate)
|
r1 = yield self.bar1(key, on_invalidate=cache_context.invalidate)
|
||||||
r2 = yield self.bar2(key, on_invalidate=cache_context.invalidate)
|
r2 = yield self.bar2(key, on_invalidate=cache_context.invalidate)
|
||||||
@ -382,17 +375,11 @@ class CacheDescriptor(_CacheDescriptorBase):
|
|||||||
max_entries=1000,
|
max_entries=1000,
|
||||||
num_args=None,
|
num_args=None,
|
||||||
tree=False,
|
tree=False,
|
||||||
inlineCallbacks=False,
|
|
||||||
cache_context=False,
|
cache_context=False,
|
||||||
iterable=False,
|
iterable=False,
|
||||||
):
|
):
|
||||||
|
|
||||||
super(CacheDescriptor, self).__init__(
|
super().__init__(orig, num_args=num_args, cache_context=cache_context)
|
||||||
orig,
|
|
||||||
num_args=num_args,
|
|
||||||
inlineCallbacks=inlineCallbacks,
|
|
||||||
cache_context=cache_context,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.max_entries = max_entries
|
self.max_entries = max_entries
|
||||||
self.tree = tree
|
self.tree = tree
|
||||||
@ -465,9 +452,7 @@ class CacheDescriptor(_CacheDescriptorBase):
|
|||||||
observer = defer.succeed(cached_result_d)
|
observer = defer.succeed(cached_result_d)
|
||||||
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
ret = defer.maybeDeferred(
|
ret = defer.maybeDeferred(preserve_fn(self.orig), obj, *args, **kwargs)
|
||||||
preserve_fn(self.function_to_call), obj, *args, **kwargs
|
|
||||||
)
|
|
||||||
|
|
||||||
def onErr(f):
|
def onErr(f):
|
||||||
cache.invalidate(cache_key)
|
cache.invalidate(cache_key)
|
||||||
@ -510,9 +495,7 @@ class CacheListDescriptor(_CacheDescriptorBase):
|
|||||||
of results.
|
of results.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(self, orig, cached_method_name, list_name, num_args=None):
|
||||||
self, orig, cached_method_name, list_name, num_args=None, inlineCallbacks=False
|
|
||||||
):
|
|
||||||
"""
|
"""
|
||||||
Args:
|
Args:
|
||||||
orig (function)
|
orig (function)
|
||||||
@ -521,12 +504,8 @@ class CacheListDescriptor(_CacheDescriptorBase):
|
|||||||
num_args (int): number of positional arguments (excluding ``self``,
|
num_args (int): number of positional arguments (excluding ``self``,
|
||||||
but including list_name) to use as cache keys. Defaults to all
|
but including list_name) to use as cache keys. Defaults to all
|
||||||
named args of the function.
|
named args of the function.
|
||||||
inlineCallbacks (bool): Whether orig is a generator that should
|
|
||||||
be wrapped by defer.inlineCallbacks
|
|
||||||
"""
|
"""
|
||||||
super(CacheListDescriptor, self).__init__(
|
super().__init__(orig, num_args=num_args)
|
||||||
orig, num_args=num_args, inlineCallbacks=inlineCallbacks
|
|
||||||
)
|
|
||||||
|
|
||||||
self.list_name = list_name
|
self.list_name = list_name
|
||||||
|
|
||||||
@ -631,7 +610,7 @@ class CacheListDescriptor(_CacheDescriptorBase):
|
|||||||
|
|
||||||
cached_defers.append(
|
cached_defers.append(
|
||||||
defer.maybeDeferred(
|
defer.maybeDeferred(
|
||||||
preserve_fn(self.function_to_call), **args_to_call
|
preserve_fn(self.orig), **args_to_call
|
||||||
).addCallbacks(complete_all, errback)
|
).addCallbacks(complete_all, errback)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -695,21 +674,7 @@ def cached(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def cachedInlineCallbacks(
|
def cachedList(cached_method_name, list_name, num_args=None):
|
||||||
max_entries=1000, num_args=None, tree=False, cache_context=False, iterable=False
|
|
||||||
):
|
|
||||||
return lambda orig: CacheDescriptor(
|
|
||||||
orig,
|
|
||||||
max_entries=max_entries,
|
|
||||||
num_args=num_args,
|
|
||||||
tree=tree,
|
|
||||||
inlineCallbacks=True,
|
|
||||||
cache_context=cache_context,
|
|
||||||
iterable=iterable,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def cachedList(cached_method_name, list_name, num_args=None, inlineCallbacks=False):
|
|
||||||
"""Creates a descriptor that wraps a function in a `CacheListDescriptor`.
|
"""Creates a descriptor that wraps a function in a `CacheListDescriptor`.
|
||||||
|
|
||||||
Used to do batch lookups for an already created cache. A single argument
|
Used to do batch lookups for an already created cache. A single argument
|
||||||
@ -725,8 +690,6 @@ def cachedList(cached_method_name, list_name, num_args=None, inlineCallbacks=Fal
|
|||||||
do batch lookups in the cache.
|
do batch lookups in the cache.
|
||||||
num_args (int): Number of arguments to use as the key in the cache
|
num_args (int): Number of arguments to use as the key in the cache
|
||||||
(including list_name). Defaults to all named parameters.
|
(including list_name). Defaults to all named parameters.
|
||||||
inlineCallbacks (bool): Should the function be wrapped in an
|
|
||||||
`defer.inlineCallbacks`?
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@ -744,5 +707,4 @@ def cachedList(cached_method_name, list_name, num_args=None, inlineCallbacks=Fal
|
|||||||
cached_method_name=cached_method_name,
|
cached_method_name=cached_method_name,
|
||||||
list_name=list_name,
|
list_name=list_name,
|
||||||
num_args=num_args,
|
num_args=num_args,
|
||||||
inlineCallbacks=inlineCallbacks,
|
|
||||||
)
|
)
|
||||||
|
@ -366,11 +366,11 @@ class CachedListDescriptorTestCase(unittest.TestCase):
|
|||||||
def fn(self, arg1, arg2):
|
def fn(self, arg1, arg2):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@descriptors.cachedList("fn", "args1", inlineCallbacks=True)
|
@descriptors.cachedList("fn", "args1")
|
||||||
def list_fn(self, args1, arg2):
|
async def list_fn(self, args1, arg2):
|
||||||
assert current_context().request == "c1"
|
assert current_context().request == "c1"
|
||||||
# we want this to behave like an asynchronous function
|
# we want this to behave like an asynchronous function
|
||||||
yield run_on_reactor()
|
await run_on_reactor()
|
||||||
assert current_context().request == "c1"
|
assert current_context().request == "c1"
|
||||||
return self.mock(args1, arg2)
|
return self.mock(args1, arg2)
|
||||||
|
|
||||||
@ -416,10 +416,10 @@ class CachedListDescriptorTestCase(unittest.TestCase):
|
|||||||
def fn(self, arg1, arg2):
|
def fn(self, arg1, arg2):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@descriptors.cachedList("fn", "args1", inlineCallbacks=True)
|
@descriptors.cachedList("fn", "args1")
|
||||||
def list_fn(self, args1, arg2):
|
async def list_fn(self, args1, arg2):
|
||||||
# we want this to behave like an asynchronous function
|
# we want this to behave like an asynchronous function
|
||||||
yield run_on_reactor()
|
await run_on_reactor()
|
||||||
return self.mock(args1, arg2)
|
return self.mock(args1, arg2)
|
||||||
|
|
||||||
obj = Cls()
|
obj = Cls()
|
||||||
|
Loading…
Reference in New Issue
Block a user