diff options
author | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2021-11-04 13:38:46 +0000 |
---|---|---|
committer | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2021-11-04 13:38:46 +0000 |
commit | e38f7953ef62c990ec525f2819e1ad8d8ae3dbdf (patch) | |
tree | 4eeec5fe16c5b41dd33a3c42f553bbbef26c511e /synapse/logging | |
parent | Simplify gatherResults and fix log contexts (diff) | |
parent | Track ongoing event fetches correctly in the presence of failure (#11240) (diff) | |
download | synapse-e38f7953ef62c990ec525f2819e1ad8d8ae3dbdf.tar.xz |
Merge branch 'develop' into rei/gsfg_1
Diffstat (limited to 'synapse/logging')
-rw-r--r-- | synapse/logging/context.py | 4 | ||||
-rw-r--r-- | synapse/logging/opentracing.py | 8 | ||||
-rw-r--r-- | synapse/logging/utils.py | 8 |
3 files changed, 16 insertions, 4 deletions
diff --git a/synapse/logging/context.py b/synapse/logging/context.py index bdc0187743..d8ae3188b7 100644 --- a/synapse/logging/context.py +++ b/synapse/logging/context.py @@ -220,7 +220,7 @@ class _Sentinel: self.scope = None self.tag = None - def __str__(self): + def __str__(self) -> str: return "sentinel" def copy_to(self, record): @@ -241,7 +241,7 @@ class _Sentinel: def record_event_fetch(self, event_count): pass - def __bool__(self): + def __bool__(self) -> Literal[False]: return False diff --git a/synapse/logging/opentracing.py b/synapse/logging/opentracing.py index 5276c4bfcc..20d23a4260 100644 --- a/synapse/logging/opentracing.py +++ b/synapse/logging/opentracing.py @@ -807,6 +807,14 @@ def trace(func=None, opname=None): result.addCallbacks(call_back, err_back) else: + if inspect.isawaitable(result): + logger.error( + "@trace may not have wrapped %s correctly! " + "The function is not async but returned a %s.", + func.__qualname__, + type(result).__name__, + ) + scope.__exit__(None, None, None) return result diff --git a/synapse/logging/utils.py b/synapse/logging/utils.py index 08895e72ee..4a01b902c2 100644 --- a/synapse/logging/utils.py +++ b/synapse/logging/utils.py @@ -16,6 +16,7 @@ import logging from functools import wraps from inspect import getcallargs +from typing import Callable, TypeVar, cast _TIME_FUNC_ID = 0 @@ -41,7 +42,10 @@ def _log_debug_as_f(f, msg, msg_args): logger.handle(record) -def log_function(f): +F = TypeVar("F", bound=Callable) + + +def log_function(f: F) -> F: """Function decorator that logs every call to that function.""" func_name = f.__name__ @@ -69,4 +73,4 @@ def log_function(f): return f(*args, **kwargs) wrapped.__name__ = func_name - return wrapped + return cast(F, wrapped) |