This is an archive of the discontinued Mercurial Phabricator instance.

lfs: check content length after downloading content
ClosedPublic

Authored by mharbison72 on Jan 14 2020, 11:09 PM.

Details

Summary

Adapted from the Facebook repo[1]. The intent is to distinguish between the
connection dying and getting served a corrupt blob.

The original message:

HTTP makes no provision to tell your client that you failed halfway through
producing your response and won't have the answer they're looking for. So, if a
LFS server fails while producing a response, then we'll report an OID mismatch.

We can do a little better and disambiguate between "the server sent us the
wrong blob" (very scary) and "the server crashed" (merely annoying) by looking
at the content length of the response we got back. If it's not what was
advertised, we can reasonably safely assume the server crashed.

[1] https://github.com/facebookexperimental/eden/commit/2a4a6fab4e882ed89b948bfc1e7d56d7c3c99dd2

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.