comparison mercurial/dispatch.py @ 32165:1208b74841ff

dispatch: take over SignalInterrupt handling from scmutil dispatch handles KeyboardInterrupt already. This makes the code more consistent, and makes worker not print "killed!" if it receives SIGTERM in most cases (in rare cases there is still "killed!" printed, which will be fixed by the next patch).
author Jun Wu <quark@fb.com>
date Sat, 22 Apr 2017 15:00:17 -0700
parents 616e788321cc
children c3dcec6cbc1b
comparison
equal deleted inserted replaced
32164:6cacc271ee0a 32165:1208b74841ff
160 msg = _formatargs(req.args) 160 msg = _formatargs(req.args)
161 starttime = util.timer() 161 starttime = util.timer()
162 ret = None 162 ret = None
163 try: 163 try:
164 ret = _runcatch(req) 164 ret = _runcatch(req)
165 except KeyboardInterrupt: 165 except KeyboardInterrupt as inst:
166 try: 166 try:
167 req.ui.warn(_("interrupted!\n")) 167 if isinstance(inst, error.SignalInterrupt):
168 msg = _("killed!\n")
169 else:
170 msg = _("interrupted!\n")
171 req.ui.warn(msg)
168 except error.SignalInterrupt: 172 except error.SignalInterrupt:
169 # maybe pager would quit without consuming all the output, and 173 # maybe pager would quit without consuming all the output, and
170 # SIGPIPE was raised. we cannot print anything in this case. 174 # SIGPIPE was raised. we cannot print anything in this case.
171 pass 175 pass
172 except IOError as inst: 176 except IOError as inst: