From e67e530a14e25f3e8011681ae887cf4b52bafd11 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Fri, 6 Feb 2026 12:44:29 -0600 Subject: [PATCH 1/2] Log if we ever `gc.freeze()` --- synapse/app/_base.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/synapse/app/_base.py b/synapse/app/_base.py index c64c41e9d27..7f4855f36bd 100644 --- a/synapse/app/_base.py +++ b/synapse/app/_base.py @@ -776,6 +776,11 @@ def log_shutdown() -> None: # # PyPy does not (yet?) implement gc.freeze() if hasattr(gc, "freeze"): + logger.info( + "garbage collector: Freezing all allocated objects in the hopes that (almost) " + "everything currently allocated are things that will be used by the homeserver " + "for the rest of time. Doing so means less work each GC (hopefully)." + ) gc.collect() gc.freeze() From 07d791df64fd22575bcb13c0807eb635399bb8b9 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Fri, 6 Feb 2026 12:50:25 -0600 Subject: [PATCH 2/2] Add changelog --- changelog.d/19440.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/19440.misc diff --git a/changelog.d/19440.misc b/changelog.d/19440.misc new file mode 100644 index 00000000000..77776011144 --- /dev/null +++ b/changelog.d/19440.misc @@ -0,0 +1 @@ +Add log to explain when and why we freeze objects in the garbage collector.