##// END OF EJS Templates
fncache: fix a bug that corrupts the fncache after transaction rollback
Arseniy Alekseyev -
r51705:30381812 stable
parent child Browse files
Show More
@@ -1093,12 +1093,13 b' class _fncachevfs(vfsmod.proxyvfs):'
1093 ):
1093 ):
1094 # do not trigger a fncache load when adding a file that already is
1094 # do not trigger a fncache load when adding a file that already is
1095 # known to exist.
1095 # known to exist.
1096 notload = self.fncache.entries is None and self.vfs.exists(encoded)
1096 notload = self.fncache.entries is None and (
1097 if notload and b'r+' in mode and not self.vfs.stat(encoded).st_size:
1097 # if the file has size zero, it should be considered as missing.
1098 # when appending to an existing file, if the file has size zero,
1098 # Such zero-size files are the result of truncation when a
1099 # it should be considered as missing. Such zero-size files are
1099 # transaction is aborted.
1100 # the result of truncation when a transaction is aborted.
1100 self.vfs.exists(encoded)
1101 notload = False
1101 and self.vfs.stat(encoded).st_size
1102 )
1102 if not notload:
1103 if not notload:
1103 self.fncache.add(path)
1104 self.fncache.add(path)
1104 return self.vfs(encoded, mode, *args, **kw)
1105 return self.vfs(encoded, mode, *args, **kw)
@@ -425,14 +425,6 b' The split was rollback'
425 .hg/store/data/file.d: size=267307
425 .hg/store/data/file.d: size=267307
426 .hg/store/data/file.i: size=320
426 .hg/store/data/file.i: size=320
427 $ hg verify -q
427 $ hg verify -q
428 warning: revlog 'data/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/f.d' not in fncache!
429 warning: revlog 'data/Directory_With,Special%Char/Complex_File.babar.d' not in fncache!
430 warning: revlog 'data/file.d' not in fncache!
431 warning: revlog 'data/foo/bar/babar_celeste/foo.d' not in fncache!
432 warning: revlog 'data/some_dir/sub_dir/foo_bar.d' not in fncache!
433 warning: revlog 'data/some_dir/sub_dir/foo_bar.i.s/tutu.d' not in fncache!
434 6 warnings encountered!
435 hint: run "hg debugrebuildfncache" to recover from corrupt fncache
436
428
437 $ cd ..
429 $ cd ..
438
430
General Comments 0
You need to be logged in to leave comments. Login now