diff --git a/remotefilelog/remotefilectx.py b/remotefilelog/remotefilectx.py --- a/remotefilelog/remotefilectx.py +++ b/remotefilelog/remotefilectx.py @@ -274,7 +274,8 @@ return lnode # If fastlog is not enabled and/or failed, let's try # prefetching - lnode = self._forceprefetch(repo, path, fnode, revs) + lnode = self._forceprefetch(repo, path, fnode, revs, + commonlogkwargs) if lnode: return lnode seenpublic = True @@ -318,7 +319,8 @@ repo.ui.log('linkrevfixup', logmsg, elapsed=elapsed * 1000, **commonlogkwargs) - def _forceprefetch(self, repo, path, fnode, revs): + def _forceprefetch(self, repo, path, fnode, revs, + commonlogkwargs): # This next part is super non-obvious, so big comment block time! # # It is possible to get extremely bad performance here when a fairly @@ -360,6 +362,8 @@ # the slow path is used too much. One promising possibility is using # obsolescence markers to find a more-likely-correct linkrev. + logmsg = '' + start = time.time() try: repo.fileservice.prefetch([(path, hex(fnode))], force=True) @@ -369,16 +373,17 @@ self._ancestormap = None linknode = self.ancestormap()[fnode][2] # 2 is linknode if self._verifylinknode(revs, linknode): + logmsg = 'remotefilelog prefetching succeeded' return linknode + logmsg = 'remotefilelog prefetching not found' return None except Exception as e: - errormsg = ('warning: failed to prefetch filepath %s ' + - 'while adjusting linknode %s (%s)\n(this is ' + - 'generally benign but it may make ' + - 'this operation take longer to calculate ' + - 'things locally)') - repo.ui.warn(_(errormsg) % (path, hex(linknode), e)) + logmsg = 'remotefilelog prefetching failed (%s)' % e return None + finally: + elapsed = time.time() - start + repo.ui.log('linkrevfixup', logmsg, elapsed=elapsed * 1000, + **commonlogkwargs) def _verifylinknode(self, revs, linknode): """ diff --git a/tests/test-remotefilelog-linknodes.t b/tests/test-remotefilelog-linknodes.t --- a/tests/test-remotefilelog-linknodes.t +++ b/tests/test-remotefilelog-linknodes.t @@ -353,3 +353,4 @@ $ hg log -f x -T '{node|short} {desc} {phase} {files}\n' > /dev/null linkrevfixup: adjusting linknode (filepath=x, fnode=d4a3ed9310e5bd9887e3bf779da5077efab28216, reponame=master, revs=a5957b6bf0bdeb9b96368bddd2838004ad966b7d, user=test) linkrevfixup: fastlog failed (error) (elapsed=*, filepath=x, fnode=d4a3ed9310e5bd9887e3bf779da5077efab28216, reponame=master, revs=a5957b6bf0bdeb9b96368bddd2838004ad966b7d, user=test) (glob) + linkrevfixup: remotefilelog prefetching succeeded (elapsed=*, filepath=x, fnode=d4a3ed9310e5bd9887e3bf779da5077efab28216, reponame=master, revs=a5957b6bf0bdeb9b96368bddd2838004ad966b7d, user=test) (glob)