sapling/hgext/largefiles
Mads Kiilerich 4b17e20f7c largefiles: don't verify largefile hashes on servers when processing statlfile
When changesets referencing largefiles are pushed then the corresponding
largefiles will be pushed too - unless the target already has them. The client
will use statlfile to make sure it only sends largefiles that the target
doesn't have. The server would however on every statlfile check that the
content of the largefile had the expected hash. What should be cheap thus
became an expensive operation that trashed the disk and the cache.

Largefile hashes are already checked by putlfile before being stored on the
server. A server should thus be able to keep its largefile store free of
errors - even more than it can keep revlogs free of errors. Verification should
happen when running 'hg verify' locally on the server. Rehashing every
largefile on every remote stat is too expensive.

Clients will also stat lfiles before downloading them. When the server verified
the hash in stat it meant that it had to read the file twice to serve it.

With this change the server will assume its own hashes are ok without checking
them on every statlfile.

Some consequences of this change:
- in case of server side corruption the problem will be detected by the
  existing check on the client side - not on server side
- clients that could upload an uncorrupted largefile when pushing will no
  longer magically heal the server (and break hardlinks) - a client will now
  only upload its uncorrupted files after the corrupted file has been removed
  on the server side
- client side verify will no longer report corruption in files it doesn't have

(Issue3123 discussed related problems - and how they have been fixed.)
2013-01-28 15:19:44 +01:00
..
__init__.py largefiles: mark as a first party extension 2012-07-20 22:10:52 -04:00
basestore.py largefiles: verify all files in each revision and report errors in any revision 2013-01-28 15:19:44 +01:00
CONTRIBUTORS hgext: add largefiles extension 2011-09-24 17:35:45 +02:00
lfcommands.py Merge with stable. 2013-01-10 09:43:28 -05:00
lfutil.py largefiles: fix update from a merge with removed files 2013-01-11 16:30:29 +01:00
localstore.py largefiles: cleanup of warnings on errors getting largefiles 2012-12-13 19:19:06 +01:00
overrides.py largefiles: fix largefiles+subrepo update (issue3752) 2013-01-23 00:51:53 +01:00
proto.py largefiles: don't verify largefile hashes on servers when processing statlfile 2013-01-28 15:19:44 +01:00
remotestore.py largefiles: adapt remotestore._getfile to batched statlfile 2013-01-28 15:19:44 +01:00
reposetup.py largefiles: stop using <> operator in favor of != 2013-01-01 13:04:40 -06:00
uisetup.py largefiles: fix largefiles+subrepo update (issue3752) 2013-01-23 00:51:53 +01:00
wirestore.py largefiles: let wirestore._stat return stats as expected by remotestore verify 2013-01-28 15:19:44 +01:00