marmoute created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches.
REVISION SUMMARY This will prevent ambiguous cache entry to be used in racy situation. This fix flakiness in test and some real live misbehavior. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D11800 AFFECTED FILES hgext/largefiles/lfutil.py hgext/largefiles/reposetup.py CHANGE DETAILS diff --git a/hgext/largefiles/reposetup.py b/hgext/largefiles/reposetup.py --- a/hgext/largefiles/reposetup.py +++ b/hgext/largefiles/reposetup.py @@ -228,13 +228,12 @@ s = wctx[lfile].lstat() mode = s.st_mode size = s.st_size - mtime = timestamp.mtime_of(s) - cache_data = (mode, size, mtime) - # We should consider using the mtime_boundary - # logic here, but largefile never actually had - # ambiguity protection before, so this confuse - # the tests and need more thinking. - lfdirstate.set_clean(lfile, cache_data) + mtime = timestamp.reliable_mtime_of( + s, mtime_boundary + ) + if mtime is not None: + cache_data = (mode, size, mtime) + lfdirstate.set_clean(lfile, cache_data) else: tocheck = unsure + modified + added + clean modified, added, clean = [], [], [] diff --git a/hgext/largefiles/lfutil.py b/hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py +++ b/hgext/largefiles/lfutil.py @@ -261,11 +261,10 @@ st = wctx[lfile].lstat() mode = st.st_mode size = st.st_size - mtime = timestamp.mtime_of(st) - cache_data = (mode, size, mtime) - # We should consider using the mtime_boundary logic here, - # but largefile never actually had ambiguity protection before. - lfdirstate.set_clean(lfile, cache_data) + mtime = timestamp.reliable_mtime_of(st, mtime_boundary) + if mtime is not None: + cache_data = (mode, size, mtime) + lfdirstate.set_clean(lfile, cache_data) return s To: marmoute, #hg-reviewers Cc: mercurial-patches, mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel