Skip to content
Snippets Groups Projects
Commit 4345274a authored by Pierre-Yves David's avatar Pierre-Yves David
Browse files

bundle2: gracefully handle UnknownPartError during unbundle

Same as for Abort error, we catch the error, encode it into a bundle2 reply
(expected by the client) and stream this reply. The client processing of the
error will raise the exception again.
parent 08c84fd9
No related branches found
No related tags found
No related merge requests found
......@@ -753,3 +753,9 @@
manargs = dict(inpart.mandatoryparams)
advargs = dict(inpart.advisoryparams)
raise util.Abort(manargs['message'], hint=advargs.get('hint'))
@parthandler('b2x:error:unknownpart')
def handlereplycaps(op, inpart):
"""Used to transmit unknown part error over the wire"""
manargs = dict(inpart.mandatoryparams)
raise UnknownPartError(manargs['parttype'])
......@@ -803,6 +803,12 @@
finally:
fp.close()
os.unlink(tempname)
except bundle2.UnknownPartError, exc:
bundler = bundle2.bundle20(repo.ui)
part = bundle2.bundlepart('B2X:ERROR:UNKNOWNPART',
[('parttype', str(exc))])
bundler.addpart(part)
return streamres(bundler.getchunks())
except util.Abort, inst:
# The old code we moved used sys.stderr directly.
# We did not change it to minimise code change.
......
......@@ -908,6 +908,8 @@
> part = None
> if reason == 'abort':
> part = bundle2.bundlepart('test:abort')
> if reason == 'unknown':
> part = bundle2.bundlepart('TEST:UNKNOWN')
> if part is not None:
> bundler.addpart(part)
> return extradata
......@@ -969,3 +971,27 @@
[255]
Doing the actual push: unknown mandatory parts
$ cat << EOF >> $HGRCPATH
> [failpush]
> reason = unknown
> EOF
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
abort: missing support for 'test:unknown'
[255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
abort: missing support for "'test:unknown'"
[255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
abort: missing support for "'test:unknown'"
[255]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment