phorge/src
epriestley 78d1b62bb8 Streamline handling of Futures and PIDs in daemons
Summary:
Ref T13555. Currently, the daemon future may resolve into a failure state immediately inside "start()", and not have a valid PID when we read it.

Instead, read PIDs from the current active future in all cases, using "hasPID()" to test for the presence of a valid PID.

Since we don't query the PID immediately, we no longer need to explicitly start the future.

Also fix an issue where the same future could be added to the overseer pool more than once if it threw on "resolve()". In general:

  - Before we "resolve()" a future, detach it from the DaemonHandle: we're always done with it.
  - Catch exceptions on resolution and treat them the same way as subprocess resolution errors. These aren't common, but are possible in the general case.
  - Have DaemonHandle add futures to the future pool directly when they're created.

Test Plan:
  - Ran daemons with intentional subprocess creation failures, saw clean recovery.
  - Ran daemons with intentional resolution exceptions, saw clean recovery.

Maniphest Tasks: T13555

Differential Revision: https://secure.phabricator.com/D21425
2020-07-23 11:22:31 -07:00
..
__tests__ Use PhutilClassMapQuery instead of PhutilSymbolLoader 2015-08-14 07:49:01 +10:00
aphront When proxying HTTP repository responses from repository nodes, discard content description headers 2020-04-25 07:51:46 -07:00
applications Fix an issue with destruction of Revision and Diff objects with viewstates 2020-07-22 13:07:11 -07:00
docs Update tab completion doc 2020-06-15 13:27:18 +00:00
extensions
infrastructure Streamline handling of Futures and PIDs in daemons 2020-07-23 11:22:31 -07:00
view Add "View Raw Remarkup" to inline comments 2020-05-13 17:14:20 -07:00
__phutil_library_init__.php
__phutil_library_map__.php Collapse repository URI normalization code into Arcanist 2020-06-30 15:54:33 -07:00