[PATCH 4 of 5] chgserver: add an explicit gc to trigger __del__
Jun Wu
quark at fb.com
Tue Mar 15 05:58:35 EDT 2016
# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1457996883 0
# Mon Mar 14 23:08:03 2016 +0000
# Node ID 1dcd622a1f8ffdbfedad1a284dc09c5ea409712d
# Parent c769f8196ccfdfa546862b0c4f608b78ca80a1c7
chgserver: add an explicit gc to trigger __del__
SocketServer.ForkingMixIn uses os._exit which will skip all cleanup handlers.
We want to run __del__ to make things like transactions work.
This patch adds a "gc.collect()" to trigger __del__. It is helpful for chg
to pass some test cases in test-devel-warnings.t.
diff --git a/hgext/chgserver.py b/hgext/chgserver.py
--- a/hgext/chgserver.py
+++ b/hgext/chgserver.py
@@ -45,6 +45,7 @@
import SocketServer
import errno
+import gc
import inspect
import os
import re
@@ -588,6 +589,9 @@
cerr = commandserver.channeledoutput(self.wfile, 'e')
traceback.print_exc(file=cerr)
raise
+ finally:
+ # trigger __del__ since ForkingMixIn uses os._exit
+ gc.collect()
def _reporoot(repo):
if not repo:
More information about the Mercurial-devel
mailing list