summaryrefslogtreecommitdiff
path: root/synapse/app/_base.py
diff options
context:
space:
mode:
authorAndrej Shadura <andrewsh@debian.org>2021-11-08 14:53:03 +0100
committerAndrej Shadura <andrewsh@debian.org>2021-11-08 14:53:03 +0100
commit5a72e26a861b796b09c1b4b4b2bd5688a33d8df5 (patch)
tree6624948c82b5a926b56eb4f2365066a5f189d3be /synapse/app/_base.py
parent62c1a069b73e89b50d80fbbb4bc49f0c247afcdf (diff)
New upstream version 1.46.0
Diffstat (limited to 'synapse/app/_base.py')
-rw-r--r--synapse/app/_base.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/synapse/app/_base.py b/synapse/app/_base.py
index 4a204a58..f4c3f867 100644
--- a/synapse/app/_base.py
+++ b/synapse/app/_base.py
@@ -31,6 +31,7 @@ import twisted
from twisted.internet import defer, error, reactor
from twisted.logger import LoggingFile, LogLevel
from twisted.protocols.tls import TLSMemoryBIOFactory
+from twisted.python.threadpool import ThreadPool
import synapse
from synapse.api.constants import MAX_PDU_SIZE
@@ -42,11 +43,13 @@ from synapse.crypto import context_factory
from synapse.events.presence_router import load_legacy_presence_router
from synapse.events.spamcheck import load_legacy_spam_checkers
from synapse.events.third_party_rules import load_legacy_third_party_event_rules
+from synapse.handlers.auth import load_legacy_password_auth_providers
from synapse.logging.context import PreserveLoggingContext
from synapse.metrics.background_process_metrics import wrap_as_background_process
from synapse.metrics.jemalloc import setup_jemalloc_stats
from synapse.util.caches.lrucache import setup_expire_lru_cache_entries
from synapse.util.daemonize import daemonize_process
+from synapse.util.gai_resolver import GAIResolver
from synapse.util.rlimit import change_resource_limit
from synapse.util.versionstring import get_version_string
@@ -293,7 +296,7 @@ def listen_ssl(
return r
-def refresh_certificate(hs):
+def refresh_certificate(hs: "HomeServer"):
"""
Refresh the TLS certificates that Synapse is using by re-reading them from
disk and updating the TLS context factories to use them.
@@ -337,9 +340,19 @@ async def start(hs: "HomeServer"):
Args:
hs: homeserver instance
"""
+ reactor = hs.get_reactor()
+
+ # We want to use a separate thread pool for the resolver so that large
+ # numbers of DNS requests don't starve out other users of the threadpool.
+ resolver_threadpool = ThreadPool(name="gai_resolver")
+ resolver_threadpool.start()
+ reactor.addSystemEventTrigger("during", "shutdown", resolver_threadpool.stop)
+ reactor.installNameResolver(
+ GAIResolver(reactor, getThreadPool=lambda: resolver_threadpool)
+ )
+
# Set up the SIGHUP machinery.
if hasattr(signal, "SIGHUP"):
- reactor = hs.get_reactor()
@wrap_as_background_process("sighup")
def handle_sighup(*args, **kwargs):
@@ -379,6 +392,7 @@ async def start(hs: "HomeServer"):
load_legacy_spam_checkers(hs)
load_legacy_third_party_event_rules(hs)
load_legacy_presence_router(hs)
+ load_legacy_password_auth_providers(hs)
# If we've configured an expiry time for caches, start the background job now.
setup_expire_lru_cache_entries(hs)
@@ -417,11 +431,11 @@ async def start(hs: "HomeServer"):
atexit.register(gc.freeze)
-def setup_sentry(hs):
+def setup_sentry(hs: "HomeServer"):
"""Enable sentry integration, if enabled in configuration
Args:
- hs (synapse.server.HomeServer)
+ hs
"""
if not hs.config.metrics.sentry_enabled:
@@ -447,7 +461,7 @@ def setup_sentry(hs):
scope.set_tag("worker_name", name)
-def setup_sdnotify(hs):
+def setup_sdnotify(hs: "HomeServer"):
"""Adds process state hooks to tell systemd what we are up to."""
# Tell systemd our state, if we're using it. This will silently fail if