sapling/eden
Adam Simpkins 1a9f74b940 fix a race between FuseChannel::startWorkerThreads() and the destructor
Summary:
Update FuseChannel::startWorkerThreads() to return without doing anything if
runState_ indicates that the FuseChannel is currently stopping.

This addresses a race betwen startWorkerThreads() and the destructor.  If the
destructor is invoked in parallel with startWorkerThreads() the destructor can
grab the state_ lock and clear out the workerThreads list first.  This then
causes problems when startWorkerThreads() runs and adds new threads to the
workerThreads list, which then never get joined.

Reviewed By: wez

Differential Revision: D7253574

fbshipit-source-id: f2cac11f1e71e1a14e3f020368152e0f2948c625
2018-03-13 18:30:49 -07:00
..
cli Remove TARGETS files 2018-02-20 19:57:45 -08:00
docs add an overview doc for our threading strategy 2017-12-12 12:51:23 -08:00
fs fix a race between FuseChannel::startWorkerThreads() and the destructor 2018-03-13 18:30:49 -07:00
hooks Remove TARGETS files 2018-02-20 19:57:45 -08:00
integration add a test for persisting timestamps across runs 2018-03-07 20:00:35 -08:00
py Remove TARGETS files 2018-02-20 19:57:45 -08:00
scripts unmount stale edenfs mounts in eden doctor 2018-01-19 11:06:51 -08:00
third-party Remove TARGETS files 2018-02-20 19:57:45 -08:00
AUTODEPS Set up arc lint to run autodeps automatically for Eden. 2017-11-21 18:23:41 -08:00
DEFS have hg_import_helper.py use the local mercurial code during tests 2018-02-15 22:11:38 -08:00