summary refs log tree commit diff
path: root/synapse/logging/_structured.py
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2019-11-26 17:53:57 +0000
committerBrendan Abolivier <babolivier@matrix.org>2019-11-26 17:53:57 +0000
commit9e937c28ee2013d01716a4647ddb8df34c7ec3cd (patch)
treeddb7c3a62227bfa760b9c9c8fcd78359f4bc4636 /synapse/logging/_structured.py
parentDon't restrict the tests to v1 rooms (diff)
parentMerge pull request #6420 from matrix-org/erikj/fix_find_next_generated_user_i... (diff)
downloadsynapse-9e937c28ee2013d01716a4647ddb8df34c7ec3cd.tar.xz
Merge branch 'develop' into babolivier/message_retention
Diffstat (limited to 'synapse/logging/_structured.py')
-rw-r--r--synapse/logging/_structured.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/synapse/logging/_structured.py b/synapse/logging/_structured.py
index 334ddaf39a..ffa7b20ca8 100644
--- a/synapse/logging/_structured.py
+++ b/synapse/logging/_structured.py
@@ -261,6 +261,18 @@ def parse_drain_configs(
             )
 
 
+class StoppableLogPublisher(LogPublisher):
+    """
+    A log publisher that can tell its observers to shut down any external
+    communications.
+    """
+
+    def stop(self):
+        for obs in self._observers:
+            if hasattr(obs, "stop"):
+                obs.stop()
+
+
 def setup_structured_logging(
     hs,
     config,
@@ -336,7 +348,7 @@ def setup_structured_logging(
             # We should never get here, but, just in case, throw an error.
             raise ConfigError("%s drain type cannot be configured" % (observer.type,))
 
-    publisher = LogPublisher(*observers)
+    publisher = StoppableLogPublisher(*observers)
     log_filter = LogLevelFilterPredicate()
 
     for namespace, namespace_config in log_config.get(