##// END OF EJS Templates
worker: move killworkers and waitforworkers up...
Jun Wu -
r30410:7a5d6e2f default
parent child Browse files
Show More
@@ -89,6 +89,20 b' def _posixworker(ui, func, staticargs, a'
89 oldhandler = signal.getsignal(signal.SIGINT)
89 oldhandler = signal.getsignal(signal.SIGINT)
90 signal.signal(signal.SIGINT, signal.SIG_IGN)
90 signal.signal(signal.SIGINT, signal.SIG_IGN)
91 pids, problem = [], [0]
91 pids, problem = [], [0]
92 def killworkers():
93 # if one worker bails, there's no good reason to wait for the rest
94 for p in pids:
95 try:
96 os.kill(p, signal.SIGTERM)
97 except OSError as err:
98 if err.errno != errno.ESRCH:
99 raise
100 def waitforworkers():
101 for _pid in pids:
102 st = _exitstatus(os.wait()[1])
103 if st and not problem[0]:
104 problem[0] = st
105 killworkers()
92 for pargs in partition(args, workers):
106 for pargs in partition(args, workers):
93 pid = os.fork()
107 pid = os.fork()
94 if pid == 0:
108 if pid == 0:
@@ -106,20 +120,6 b' def _posixworker(ui, func, staticargs, a'
106 pids.reverse()
120 pids.reverse()
107 os.close(wfd)
121 os.close(wfd)
108 fp = os.fdopen(rfd, 'rb', 0)
122 fp = os.fdopen(rfd, 'rb', 0)
109 def killworkers():
110 # if one worker bails, there's no good reason to wait for the rest
111 for p in pids:
112 try:
113 os.kill(p, signal.SIGTERM)
114 except OSError as err:
115 if err.errno != errno.ESRCH:
116 raise
117 def waitforworkers():
118 for _pid in pids:
119 st = _exitstatus(os.wait()[1])
120 if st and not problem[0]:
121 problem[0] = st
122 killworkers()
123 t = threading.Thread(target=waitforworkers)
123 t = threading.Thread(target=waitforworkers)
124 t.start()
124 t.start()
125 def cleanup():
125 def cleanup():
General Comments 0
You need to be logged in to leave comments. Login now