##// END OF EJS Templates
remotefilelog: stop using RuntimeError for control flow...
Augie Fackler -
r48344:e9720776 default
parent child Browse files
Show More
@@ -308,7 +308,7 b' class basestore(object):'
308 # Content matches the intended path
308 # Content matches the intended path
309 return True
309 return True
310 return False
310 return False
311 except (ValueError, RuntimeError):
311 except (ValueError, shallowutil.BadRemotefilelogHeader):
312 pass
312 pass
313
313
314 return False
314 return False
@@ -233,6 +233,10 b' def bin2int(buf):'
233 return x
233 return x
234
234
235
235
236 class BadRemotefilelogHeader(error.StorageError):
237 """Exception raised when parsing a remotefilelog blob header fails."""
238
239
236 def parsesizeflags(raw):
240 def parsesizeflags(raw):
237 """given a remotefilelog blob, return (headersize, rawtextsize, flags)
241 """given a remotefilelog blob, return (headersize, rawtextsize, flags)
238
242
@@ -253,16 +257,20 b' def parsesizeflags(raw):'
253 elif s.startswith(constants.METAKEYFLAG):
257 elif s.startswith(constants.METAKEYFLAG):
254 flags = int(s[len(constants.METAKEYFLAG) :])
258 flags = int(s[len(constants.METAKEYFLAG) :])
255 else:
259 else:
256 raise RuntimeError(
260 raise BadRemotefilelogHeader(
257 b'unsupported remotefilelog header: %s' % header
261 b'unsupported remotefilelog header: %s' % header
258 )
262 )
259 else:
263 else:
260 # v0, str(int(size)) is the header
264 # v0, str(int(size)) is the header
261 size = int(header)
265 size = int(header)
262 except ValueError:
266 except ValueError:
263 raise RuntimeError("unexpected remotefilelog header: illegal format")
267 raise BadRemotefilelogHeader(
268 "unexpected remotefilelog header: illegal format"
269 )
264 if size is None:
270 if size is None:
265 raise RuntimeError("unexpected remotefilelog header: no size found")
271 raise BadRemotefilelogHeader(
272 "unexpected remotefilelog header: no size found"
273 )
266 return index + 1, size, flags
274 return index + 1, size, flags
267
275
268
276
@@ -38,7 +38,8 b' Verify corrupt cache error message'
38 $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
38 $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
39 $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
39 $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
40 $ hg up tip 2>&1 | egrep "^[^ ].*unexpected remotefilelog"
40 $ hg up tip 2>&1 | egrep "^[^ ].*unexpected remotefilelog"
41 RuntimeError: unexpected remotefilelog header: illegal format
41 abort: unexpected remotefilelog header: illegal format (no-py3 !)
42 hgext.remotefilelog.shallowutil.BadRemotefilelogHeader: unexpected remotefilelog header: illegal format (py3 !)
42
43
43 Verify detection and remediation when remotefilelog.validatecachelog is set
44 Verify detection and remediation when remotefilelog.validatecachelog is set
44
45
General Comments 0
You need to be logged in to leave comments. Login now