D3845: worker: support more return types in posix worker
hooper (Danny Hooper)
phabricator at mercurial-scm.org
Tue Jul 3 19:46:44 UTC 2018
hooper updated this revision to Diff 9418.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D3845?vs=9401&id=9418
REVISION DETAIL
https://phab.mercurial-scm.org/D3845
AFFECTED FILES
mercurial/worker.py
CHANGE DETAILS
diff --git a/mercurial/worker.py b/mercurial/worker.py
--- a/mercurial/worker.py
+++ b/mercurial/worker.py
@@ -155,8 +155,8 @@
def workerfunc():
os.close(rfd)
- for i, item in func(*(staticargs + (pargs,))):
- os.write(wfd, '%d %s\n' % (i, item))
+ for result in func(*(staticargs + (pargs,))):
+ os.write(wfd, util.pickle.dumps(result))
return 0
ret = scmutil.callcatch(ui, workerfunc)
@@ -187,9 +187,15 @@
os.kill(os.getpid(), -status)
sys.exit(status)
try:
- for line in util.iterfile(fp):
- l = line.split(' ', 1)
- yield int(l[0]), l[1][:-1]
+ while True:
+ try:
+ yield util.pickle.load(fp)
+ except EOFError:
+ break
+ except IOError as e:
+ if e.errno == errno.EINTR:
+ continue
+ raise
except: # re-raises
killworkers()
cleanup()
To: hooper, #hg-reviewers
Cc: yuja, durin42, mercurial-devel
More information about the Mercurial-devel
mailing list