sapling/eden/fs/config
Xavier Deguillard 34edb7b618 win: re-use guid for the lifetime of the checkout
Summary:
On Windows, the GUID of the mount point identifies the virtualization instance,
that GUID is then propagated automatically to the created placeholders when
these are created as a response to a getPlaceholderInfo callback.

When the placeholders are created by EdenFS when invalidating directories we
have to pass GUID. The documentation isn't clear about whether that GUID needs
to be identical to the mount point GUID, but for a very long time these have
been mismatching due to the mount point GUID being generated at startup time
and not re-used.

One of the most common issue that users have reported is that sometimes
operations on the repository start failing with the error "The provider that
supports file system virtualization is temporarily unavailable". Looking at the
output of `fsutil reparsepoint query` for all the directories from the file
that triggers the error to the root of the repositories, shows that one of the
folder and its descendant don't share the same GUID, removing it solves the
issue.

It's not clear to me why this issue doesn't always reproduce when restarting
EdenFS, but a simple step that we can take to solve this is to always re-use
the GUID, and that hopefully will lead to the GUID always being the same and
the error to go away.

Reviewed By: fanzeyi

Differential Revision: D25513122

fbshipit-source-id: 0058dedbd7fd8ccae1c9527612ac220bc6775c69
2020-12-15 08:07:49 -08:00
..
test config test: use AbsolutePath instead of folly::fs::path 2020-11-18 14:39:17 -08:00
CachedParsedFileMonitor.h utils: move win/utils/Stub.h to utils/NotImplemented.h 2020-09-16 12:31:46 -07:00
CheckoutConfig.cpp win: re-use guid for the lifetime of the checkout 2020-12-15 08:07:49 -08:00
CheckoutConfig.h win: re-use guid for the lifetime of the checkout 2020-12-15 08:07:49 -08:00
CMakeLists.txt allow multiple prefixes for paths to be logged 2020-09-02 22:54:23 -07:00
ConfigSetting.h refactor EdenConfig to use private inheritance 2019-10-11 11:01:49 -07:00
eden_config.thrift enable py3 thrift language 2020-06-10 19:29:17 -07:00
EdenConfig.cpp path: verify that composed paths are comprised of valid PathComponent 2020-10-22 16:24:17 -07:00
EdenConfig.h eden: add config and awareness for our edenfs.kext 2020-12-07 11:18:09 -08:00
FieldConverter.cpp check multiple locations for x509 certs 2020-09-23 19:58:52 -07:00
FieldConverter.h teach eden to parse arrays in configs 2020-09-14 17:40:13 -07:00
FileChangeMonitor.cpp utils: move win/utils/Stub.h to utils/NotImplemented.h 2020-09-16 12:31:46 -07:00
FileChangeMonitor.h utils: move win/utils/Stub.h to utils/NotImplemented.h 2020-09-16 12:31:46 -07:00
ReloadableConfig.cpp log the path that caused configs to be reloaded 2020-09-11 16:53:49 -07:00
ReloadableConfig.h optimize and simplify ReloadableConfig 2019-10-11 10:42:36 -07:00
TomlConfig.h remove dependency on glog 2020-11-10 16:31:15 -08:00