sapling/eden
Chad Austin 75bd0c08ea remove future.get() call from FileInode::ensureDataLoaded
Summary:
With the subsequent diff that enables multiple concurrent
hg importers, I was seeing this deadlock during rebase; each of
the worker threads was being blocked until it saturated the various
thread pools and locked up the server.

This removes the blocking call and replaces it with a SharedPromise
to allow multiple callers to wait for the load.

Note that this changes the semantics of ensureDataLoaded slightly:
previously the blob load was synchronous while the write lock was
held.  Now we release the write lock until the load completes.

I've added some post-condition checks to validate that we don't
break any state.  I believe that our usage is such that we don't
do anything that might mess things up.  Am I missing anything?

Reviewed By: simpkins

Differential Revision: D6264900

fbshipit-source-id: 4aa2870d95f0f0ec48d87299978cb87af99e3969
2017-11-10 13:24:33 -08:00
..
cli Handle SIGINT properly in eden health's lockfile reading 2017-11-07 12:37:08 -08:00
docs update logging statements to use folly logging APIs 2017-06-22 13:50:13 -07:00
facebook Create a utility for enumerating and parsing Buck build traces. 2017-09-08 00:09:04 -07:00
fs remove future.get() call from FileInode::ensureDataLoaded 2017-11-10 13:24:33 -08:00
hooks Store Hg dirstate data in Hg instead of Eden. 2017-11-06 19:56:49 -08:00
integration add type annotations to some more integration test functions 2017-11-09 19:05:52 -08:00
py support reading the old .hg/dirstate format 2017-11-07 14:17:37 -08:00
DEFS move eden/fs/cli to eden/cli 2017-04-14 11:39:01 -07:00