Skip to content
Snippets Groups Projects
Commit 157f0e29eaa3 authored by Martin von Zweigbergk's avatar Martin von Zweigbergk
Browse files

remotefilelog: avoid accessing repo instance after dispatch

Upstream commit c5e6c1ba1c79 (hg: don't reuse repo instance after
unshare(), 2018-09-12) poisoned the repo instance after
unshare(). That made `hg unshare` fail with remotefilelog because we
tried to close the fileserverclient after dispatch by accessing it via
the repo. This patch fixes that by storing the reference to the
fileserverclient at the beginning of dispatch.

An analogous patch was sent for remotefilelog version in FB's
hg-experimental as D5246.

Differential Revision: https://phab.mercurial-scm.org/D5253
parent 85bf93def065
No related branches found
No related tags found
No related merge requests found
......@@ -542,6 +542,12 @@
# close cache miss server connection after the command has finished
def runcommand(orig, lui, repo, *args, **kwargs):
fileservice = None
# repo can be None when running in chg:
# - at startup, reposetup was called because serve is not norepo
# - a norepo command like "help" is called
if repo and isenabled(repo):
fileservice = repo.fileservice
try:
return orig(lui, repo, *args, **kwargs)
finally:
......@@ -545,11 +551,8 @@
try:
return orig(lui, repo, *args, **kwargs)
finally:
# repo can be None when running in chg:
# - at startup, reposetup was called because serve is not norepo
# - a norepo command like "help" is called
if repo and isenabled(repo):
repo.fileservice.close()
if fileservice:
fileservice.close()
extensions.wrapfunction(dispatch, 'runcommand', runcommand)
# disappointing hacks below
......
......@@ -22,3 +22,4 @@
$ hg share source dest
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R dest unshare
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment