lfs: provide more Batch API error info via a hint in the raised exception
authorMatt Harbison <matt_harbison@yahoo.com>
Thu, 15 Nov 2018 17:55:01 -0500
changeset 40659 8863f08c1630
parent 40658 4ec8bee15930
child 40660 9f78d10742af
lfs: provide more Batch API error info via a hint in the raised exception A coworker had a typo in `lfs.url`, forgot it was even set because usually the blob server is inferred, and then got a 404. It would have been easier to debug with the failing URL printed.
hgext/lfs/blobstore.py
tests/test-lfs-serve-access.t
--- a/hgext/lfs/blobstore.py	Thu Nov 15 17:50:14 2018 -0500
+++ b/hgext/lfs/blobstore.py	Thu Nov 15 17:55:01 2018 -0500
@@ -263,16 +263,17 @@
             'objects': objects,
             'operation': action,
         })
-        batchreq = util.urlreq.request('%s/objects/batch' % self.baseurl,
-                                       data=requestdata)
+        url = '%s/objects/batch' % self.baseurl
+        batchreq = util.urlreq.request(url, data=requestdata)
         batchreq.add_header('Accept', 'application/vnd.git-lfs+json')
         batchreq.add_header('Content-Type', 'application/vnd.git-lfs+json')
         try:
             rsp = self.urlopener.open(batchreq)
             rawjson = rsp.read()
         except util.urlerr.httperror as ex:
-            raise LfsRemoteError(_('LFS HTTP error: %s (action=%s)')
-                                 % (ex, action))
+            raise LfsRemoteError(_('LFS HTTP error: %s') % ex,
+                                 hint=_('api=%s, action=%s')
+                                 % (url, action))
         try:
             response = json.loads(rawjson)
         except ValueError:
--- a/tests/test-lfs-serve-access.t	Thu Nov 15 17:50:14 2018 -0500
+++ b/tests/test-lfs-serve-access.t	Thu Nov 15 17:55:01 2018 -0500
@@ -29,7 +29,8 @@
   $ hg -R client push http://localhost:$HGPORT
   pushing to http://localhost:$HGPORT/
   searching for changes
-  abort: LFS HTTP error: HTTP Error 400: no such method: .git (action=upload)!
+  abort: LFS HTTP error: HTTP Error 400: no such method: .git!
+  (api=http://localhost:$HGPORT/.git/info/lfs/objects/batch, action=upload)
   [255]
 
 ... so do a local push to make the data available.  Remove the blob from the
@@ -50,7 +51,8 @@
   added 1 changesets with 1 changes to 1 files
   new changesets 525251863cad
   updating to branch default
-  abort: LFS HTTP error: HTTP Error 400: no such method: .git (action=download)!
+  abort: LFS HTTP error: HTTP Error 400: no such method: .git!
+  (api=http://localhost:$HGPORT/.git/info/lfs/objects/batch, action=download)
   [255]
 
   $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS