--- a/mercurial/bundle2.py Wed Oct 04 11:04:18 2017 -0400
+++ b/mercurial/bundle2.py Wed Oct 11 10:36:59 2017 -0700
@@ -370,14 +370,10 @@
if not self.iterator:
return
- if exc:
- # If exiting or interrupted, do not attempt to seek the stream in
- # the finally block below. This makes abort faster.
- if (self.current and
- not isinstance(exc, (SystemExit, KeyboardInterrupt))):
- # consume the part content to not corrupt the stream.
- self.current.seek(0, 2)
-
+ # Only gracefully abort in a normal exception situation. User aborts
+ # like Ctrl+C throw a KeyboardInterrupt which is not a base Exception,
+ # and should not gracefully cleanup.
+ if isinstance(exc, Exception):
# Any exceptions seeking to the end of the bundle at this point are
# almost certainly related to the underlying stream being bad.
# And, chances are that the exception we're handling is related to
@@ -385,6 +381,10 @@
# re-raise the original error.
seekerror = False
try:
+ if self.current:
+ # consume the part content to not corrupt the stream.
+ self.current.seek(0, 2)
+
for part in self.iterator:
# consume the bundle content
part.seek(0, 2)