# HG changeset patch # User Yuya Nishihara # Date 2017-02-25 03:48:50 # Node ID a91c62752d08d504011e4cb8e2c3bc63d8d443ac # Parent 92bca12328d153160770db605e679ed615e155d5 worker: flush messages written by child processes before exit I found some child outputs were lost while testing the previous patch. Since os._exit() does nothing special, we need to do that explicitly. diff --git a/mercurial/worker.py b/mercurial/worker.py --- a/mercurial/worker.py +++ b/mercurial/worker.py @@ -148,12 +148,16 @@ def _posixworker(ui, func, staticargs, a # may do some clean-ups which could cause surprises like deadlock. # see sshpeer.cleanup for example. try: - scmutil.callcatch(ui, workerfunc) + try: + scmutil.callcatch(ui, workerfunc) + finally: + ui.flush() except KeyboardInterrupt: os._exit(255) except: # never return, therefore no re-raises try: ui.traceback() + ui.flush() finally: os._exit(255) else: diff --git a/tests/test-simple-update.t b/tests/test-simple-update.t --- a/tests/test-simple-update.t +++ b/tests/test-simple-update.t @@ -84,7 +84,8 @@ update with worker processes $ hg update null 0 files updated, 0 files merged, 100 files removed, 0 files unresolved - $ hg update + $ hg update -v | grep 100 + getting 100 100 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd ..