From eafe319549474e657f178e163c06a95e984e6672 Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Wed, 20 Jul 2016 10:13:23 -0700 Subject: [PATCH] Dive deeper into the opener to try and find the base. Summary: Sometimes opener.vfs is an _fncachevfs, which has a .vfs member, not a .base member. When you get one of these, go deeper. Test Plan: Run testrunner.py flib/intern/sandcastle/vcs/ without this change, see it traceback. Rerun testrunner.py flib/intern/sandcastle/vcs/ with this change, see it fail in the same way as the current released version. Reviewers: durham, lcharignon, ttung, rmcelroy Reviewed By: rmcelroy Subscribers: rmcelroy, mjpieters, #sourcecontrol Differential Revision: https://phabricator.intern.facebook.com/D3593097 Tasks: 12305684 Signature: t1:3593097:1469033487:aec4c4a5de6f92a64f4730f03e9780e02f086819 --- fastmanifest/cachemanager.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fastmanifest/cachemanager.py b/fastmanifest/cachemanager.py index 2083e259c0..ebd65bbc1a 100644 --- a/fastmanifest/cachemanager.py +++ b/fastmanifest/cachemanager.py @@ -121,7 +121,11 @@ class _systemawarecachelimit(object): st = os.statvfs(repo.root) else: if util.safehasattr(opener, "vfs"): - st = os.statvfs(opener.vfs.base) + if (not util.safehasattr(opener.vfs, "base") and + util.safehasattr(opener.vfs, "vfs")): + st = os.statvfs(opener.vfs.vfs.base) + else: + st = os.statvfs(opener.vfs.base) else: st = os.statvfs(opener.base) except (OSError, IOError) as ex: