summary refs log tree commit diff
path: root/synapse/app/_base.py
diff options
context:
space:
mode:
authorShay <hillerys@element.io>2022-01-25 10:35:18 -0800
committerGitHub <noreply@github.com>2022-01-25 10:35:18 -0800
commitb8bf6007002131b8931f4b5f49a77bf5aba85067 (patch)
treea80d7cefdf803aa1107d38f7074015802690f174 /synapse/app/_base.py
parentAdd admin API to get a list of federated rooms (#11658) (diff)
downloadsynapse-b8bf6007002131b8931f4b5f49a77bf5aba85067.tar.xz
Check that `gc` method is available before using in `synapse/app/_base` (#11816)
* add check that gc.freeze is available before calling

* newsfragment

* lint

* Update comment

Co-authored-by: Dan Callahan <danc@element.io>

Co-authored-by: Dan Callahan <danc@element.io>
Diffstat (limited to 'synapse/app/_base.py')
-rw-r--r--synapse/app/_base.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/synapse/app/_base.py b/synapse/app/_base.py
index 9efdd071cc..bbab8a052a 100644
--- a/synapse/app/_base.py
+++ b/synapse/app/_base.py
@@ -468,12 +468,14 @@ async def start(hs: "HomeServer") -> None:
     # everything currently allocated are things that will be used for the
     # rest of time. Doing so means less work each GC (hopefully).
     #
-    gc.collect()
-    gc.freeze()
-
-    # Speed up shutdowns by freezing all allocated objects. This moves everything
-    # into the permanent generation and excludes them from the final GC.
-    atexit.register(gc.freeze)
+    # PyPy does not (yet?) implement gc.freeze()
+    if hasattr(gc, "freeze"):
+        gc.collect()
+        gc.freeze()
+
+        # Speed up shutdowns by freezing all allocated objects. This moves everything
+        # into the permanent generation and excludes them from the final GC.
+        atexit.register(gc.freeze)
 
 
 def setup_sentry(hs: "HomeServer") -> None: