Cleanly shutdown SynapseHomeServer object (#18828)
This PR aims to allow for a clean shutdown of the `SynapseHomeServer` object so that it can be fully deleted and cleaned up by garbage collection without shutting down the entire python process. Fix https://github.com/element-hq/synapse-small-hosts/issues/50 ### Pull Request Checklist <!-- Please read https://element-hq.github.io/synapse/latest/development/contributing_guide.html before submitting your pull request --> * [x] Pull request is based on the develop branch * [x] Pull request includes a [changelog file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog). The entry should: - Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from `EventStore` to `EventWorkerStore`.". - Use markdown where necessary, mostly for `code blocks`. - End with either a period (.) or an exclamation mark (!). - Start with a capital letter. - Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry. * [x] [Code style](https://element-hq.github.io/synapse/latest/code_style.html) is correct (run the [linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters)) --------- Co-authored-by: Eric Eastwood <erice@element.io>
This commit is contained in:
@@ -86,7 +86,9 @@ async def main(reactor: ISynapseReactor, loops: int) -> float:
|
||||
hs_config = Config()
|
||||
|
||||
# To be able to sleep.
|
||||
clock = Clock(reactor, server_name=hs_config.server.server_name)
|
||||
# Ignore linter error here since we are running outside of the context of a
|
||||
# Synapse `HomeServer`.
|
||||
clock = Clock(reactor, server_name=hs_config.server.server_name) # type: ignore[multiple-internal-clocks]
|
||||
|
||||
errors = StringIO()
|
||||
publisher = LogPublisher()
|
||||
|
||||
@@ -23,14 +23,19 @@ from pyperf import perf_counter
|
||||
|
||||
from synapse.types import ISynapseReactor
|
||||
from synapse.util.caches.lrucache import LruCache
|
||||
from synapse.util.clock import Clock
|
||||
|
||||
|
||||
async def main(reactor: ISynapseReactor, loops: int) -> float:
|
||||
"""
|
||||
Benchmark `loops` number of insertions into LruCache without eviction.
|
||||
"""
|
||||
# Ignore linter error here since we are running outside of the context of a
|
||||
# Synapse `HomeServer`.
|
||||
cache: LruCache[int, bool] = LruCache(
|
||||
max_size=loops, server_name="synmark_benchmark"
|
||||
max_size=loops,
|
||||
clock=Clock(reactor, server_name="synmark_benchmark"), # type: ignore[multiple-internal-clocks]
|
||||
server_name="synmark_benchmark",
|
||||
)
|
||||
|
||||
start = perf_counter()
|
||||
|
||||
@@ -23,6 +23,7 @@ from pyperf import perf_counter
|
||||
|
||||
from synapse.types import ISynapseReactor
|
||||
from synapse.util.caches.lrucache import LruCache
|
||||
from synapse.util.clock import Clock
|
||||
|
||||
|
||||
async def main(reactor: ISynapseReactor, loops: int) -> float:
|
||||
@@ -30,8 +31,12 @@ async def main(reactor: ISynapseReactor, loops: int) -> float:
|
||||
Benchmark `loops` number of insertions into LruCache where half of them are
|
||||
evicted.
|
||||
"""
|
||||
# Ignore linter error here since we are running outside of the context of a
|
||||
# Synapse `HomeServer`.
|
||||
cache: LruCache[int, bool] = LruCache(
|
||||
max_size=loops // 2, server_name="synmark_benchmark"
|
||||
max_size=loops // 2,
|
||||
clock=Clock(reactor, server_name="synmark_benchmark"), # type: ignore[multiple-internal-clocks]
|
||||
server_name="synmark_benchmark",
|
||||
)
|
||||
|
||||
start = perf_counter()
|
||||
|
||||
Reference in New Issue
Block a user