tracing: ignore any IOErrors when writing to pipe
When the pager forks off the main process, we can end up with the pipe
closed prematurely. Rather than break hg entirely when that happens
and tracing is active, just let lingering events disappear as needed.
Differential Revision: https://phab.mercurial-scm.org/D4445
--- a/hgdemandimport/tracing.py Sat Sep 01 11:06:47 2018 -0400
+++ b/hgdemandimport/tracing.py Sat Sep 01 11:33:17 2018 -0400
@@ -28,7 +28,17 @@
_session = os.environ.get('HGCATAPULTSESSION', 'none')
whence = whencefmt % whenceargs
try:
- _pipe.write('START %s %s\n' % (_session, whence))
+ # Both writes to the pipe are wrapped in try/except to ignore
+ # errors, as we can see mysterious errors in here if the pager
+ # is active. Presumably other conditions could trigger
+ # problems too.
+ try:
+ _pipe.write('START %s %s\n' % (_session, whence))
+ except IOError:
+ pass
yield
finally:
- _pipe.write('END %s %s\n' % (_session, whence))
+ try:
+ _pipe.write('END %s %s\n' % (_session, whence))
+ except IOError:
+ pass