Wednesday, April 13, 2016

[anggchml] Network filesystem inspired by git

Network filesystems are awkward beasts, having to deal with many failure modes and often full of bugs in doing so.

Network connectivity down.  Fileserver malfunctioning.  Race conditions of multiple clients editing the same file.

Instead of trying to make life easy for the client by providing the illusion of the "perfect" behavior of a single-user single-threaded local filesystem, expose some of the difficulties to the user/client, and let the client figure out how to proceed.

File was written to local cache.  File was transmitted to server.  Merge conflict happened (inspired by git).  For network filesystems backed by distributed storage, signal to the user that consistency has happened (eventual consistency): all backend servers now have the same copy -- your copy -- of the file.

Prefetch a file into the local cache.  Is the locally cached file out of date?

No comments :