parent
f337d2f0f0
commit
c560b791e1
|
@ -15,10 +15,12 @@
|
||||||
|
|
||||||
import gc
|
import gc
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
import sdnotify
|
||||||
from daemonize import Daemonize
|
from daemonize import Daemonize
|
||||||
|
|
||||||
from twisted.internet import defer, error, reactor
|
from twisted.internet import defer, error, reactor
|
||||||
|
@ -242,9 +244,16 @@ def start(hs, listeners=None):
|
||||||
if hasattr(signal, "SIGHUP"):
|
if hasattr(signal, "SIGHUP"):
|
||||||
|
|
||||||
def handle_sighup(*args, **kwargs):
|
def handle_sighup(*args, **kwargs):
|
||||||
|
# Tell systemd our state, if we're using it. This will silently fail if
|
||||||
|
# we're not using systemd.
|
||||||
|
sd_channel = sdnotify.SystemdNotifier()
|
||||||
|
sd_channel.notify("RELOADING=1")
|
||||||
|
|
||||||
for i in _sighup_callbacks:
|
for i in _sighup_callbacks:
|
||||||
i(hs)
|
i(hs)
|
||||||
|
|
||||||
|
sd_channel.notify("READY=1")
|
||||||
|
|
||||||
signal.signal(signal.SIGHUP, handle_sighup)
|
signal.signal(signal.SIGHUP, handle_sighup)
|
||||||
|
|
||||||
register_sighup(refresh_certificate)
|
register_sighup(refresh_certificate)
|
||||||
|
@ -260,6 +269,7 @@ def start(hs, listeners=None):
|
||||||
hs.get_datastore().start_profiling()
|
hs.get_datastore().start_profiling()
|
||||||
|
|
||||||
setup_sentry(hs)
|
setup_sentry(hs)
|
||||||
|
setup_sdnotify(hs)
|
||||||
except Exception:
|
except Exception:
|
||||||
traceback.print_exc(file=sys.stderr)
|
traceback.print_exc(file=sys.stderr)
|
||||||
reactor = hs.get_reactor()
|
reactor = hs.get_reactor()
|
||||||
|
@ -292,6 +302,25 @@ def setup_sentry(hs):
|
||||||
scope.set_tag("worker_name", name)
|
scope.set_tag("worker_name", name)
|
||||||
|
|
||||||
|
|
||||||
|
def setup_sdnotify(hs):
|
||||||
|
"""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
|
||||||
|
# we're not using systemd.
|
||||||
|
sd_channel = sdnotify.SystemdNotifier()
|
||||||
|
|
||||||
|
hs.get_reactor().addSystemEventTrigger(
|
||||||
|
"after",
|
||||||
|
"startup",
|
||||||
|
lambda: sd_channel.notify("READY=1\nMAINPID=%s" % (os.getpid())),
|
||||||
|
)
|
||||||
|
|
||||||
|
hs.get_reactor().addSystemEventTrigger(
|
||||||
|
"before", "shutdown", lambda: sd_channel.notify("STOPPING=1")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def install_dns_limiter(reactor, max_dns_requests_in_flight=100):
|
def install_dns_limiter(reactor, max_dns_requests_in_flight=100):
|
||||||
"""Replaces the resolver with one that limits the number of in flight DNS
|
"""Replaces the resolver with one that limits the number of in flight DNS
|
||||||
requests.
|
requests.
|
||||||
|
|
|
@ -72,6 +72,7 @@ REQUIREMENTS = [
|
||||||
"netaddr>=0.7.18",
|
"netaddr>=0.7.18",
|
||||||
"Jinja2>=2.9",
|
"Jinja2>=2.9",
|
||||||
"bleach>=1.4.3",
|
"bleach>=1.4.3",
|
||||||
|
"sdnotify>=0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
CONDITIONAL_REQUIREMENTS = {
|
CONDITIONAL_REQUIREMENTS = {
|
||||||
|
|
Loading…
Reference in New Issue