Parse SYNAPSE_ASYNC_IO_REACTOR env variable & log the reactor on startup (#14092)

This commit is contained in:
Quentin Gliech 2022-10-07 16:19:59 +02:00 committed by GitHub
parent 8faf7245fd
commit dc37b68a25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 14 deletions

1
changelog.d/14092.misc Normal file
View File

@ -0,0 +1 @@
Run the integration test suites with the asyncio reactor enabled in CI.

View File

@ -21,6 +21,7 @@ import os
import sys import sys
from synapse.util.rust import check_rust_lib_up_to_date from synapse.util.rust import check_rust_lib_up_to_date
from synapse.util.stringutils import strtobool
# Check that we're not running on an unsupported Python version. # Check that we're not running on an unsupported Python version.
if sys.version_info < (3, 7): if sys.version_info < (3, 7):
@ -28,25 +29,22 @@ if sys.version_info < (3, 7):
sys.exit(1) sys.exit(1)
# Allow using the asyncio reactor via env var. # Allow using the asyncio reactor via env var.
if bool(os.environ.get("SYNAPSE_ASYNC_IO_REACTOR", False)): if strtobool(os.environ.get("SYNAPSE_ASYNC_IO_REACTOR", "0")):
try: from incremental import Version
from incremental import Version
import twisted import twisted
# We need a bugfix that is included in Twisted 21.2.0: # We need a bugfix that is included in Twisted 21.2.0:
# https://twistedmatrix.com/trac/ticket/9787 # https://twistedmatrix.com/trac/ticket/9787
if twisted.version < Version("Twisted", 21, 2, 0): if twisted.version < Version("Twisted", 21, 2, 0):
print("Using asyncio reactor requires Twisted>=21.2.0") print("Using asyncio reactor requires Twisted>=21.2.0")
sys.exit(1) sys.exit(1)
import asyncio import asyncio
from twisted.internet import asyncioreactor from twisted.internet import asyncioreactor
asyncioreactor.install(asyncio.get_event_loop()) asyncioreactor.install(asyncio.get_event_loop())
except ImportError:
pass
# Twisted and canonicaljson will fail to import when this file is executed to # Twisted and canonicaljson will fail to import when this file is executed to
# get the __version__ during a fresh install. That's OK and subsequent calls to # get the __version__ during a fresh install. That's OK and subsequent calls to

View File

@ -326,6 +326,8 @@ def setup_logging(
logBeginner: The Twisted logBeginner to use. logBeginner: The Twisted logBeginner to use.
""" """
from twisted.internet import reactor
log_config_path = ( log_config_path = (
config.worker.worker_log_config config.worker.worker_log_config
if use_worker_options if use_worker_options
@ -348,3 +350,4 @@ def setup_logging(
) )
logging.info("Server hostname: %s", config.server.server_name) logging.info("Server hostname: %s", config.server.server_name)
logging.info("Instance name: %s", hs.get_instance_name()) logging.info("Instance name: %s", hs.get_instance_name())
logging.info("Twisted reactor: %s", type(reactor).__name__)