Commit Graph

2189 Commits

Author SHA1 Message Date
Jake Crouch
6760da6baf Changing Journal API from merge to accumulateRange
Summary: Merge was a function on a JournalDelta that created a new JournalDelta and optionally left it connected to old JournalDeltas. AccumulateRange is a new function on the Journal itself (acting on the latest delta) that creates a JournalDeltaSum (which can't be connected to older Deltas)

Reviewed By: chadaustin

Differential Revision: D15881452

fbshipit-source-id: 573505c1171f78d46afc98f1db9b5b9ee2fff60f
2019-06-19 15:18:16 -07:00
Jake Crouch
26a6e91e05 Simplify Journal API for Callers
Summary: Making addDelta private and giving users a more user-friendly way of appending entries to the journal.

Reviewed By: chadaustin, strager

Differential Revision: D15868089

fbshipit-source-id: 00c8a3066f0e4483e3c792651ade5f6a7ea05eed
2019-06-19 15:18:16 -07:00
Jon Maltiel Swenson
938eb990a6 Remove defaulted move constructors/assignment operators that are implicitly deleted
Summary:
Some newer versions of `clang` (such as Apple's version 11) will warn/error out if a constructor or assignment operator
marked `default` is implicitly deleted (e.g., if the object contains a non-moveable/non-copyable member). This diff
removes all such defaulted constructors/assignment operators, which I ran into while building `edenfs` on my Macbook Pro.

Reviewed By: chadaustin, strager

Differential Revision: D15901794

fbshipit-source-id: 794ed8377693a6735bb567635dc919bc678751a4
2019-06-19 14:27:25 -07:00
Jon Maltiel Swenson
df6ac2b2a8 Enable rsocket stream handling in EdenServer
Summary: This diff allows watchman to connect to `EdenServer` over an rsocket stream.

Reviewed By: simpkins, strager

Differential Revision: D15900246

fbshipit-source-id: e4a99fcd7b9c75b6ad2c331c1bbf13d22f78cfd7
2019-06-19 13:51:47 -07:00
Kostia Balytskyi
36f4698c5a entrypoint: introduce buck-buildable hg.rust
Reviewed By: farnz

Differential Revision: D15844921

fbshipit-source-id: 16ef18915b82344a553fec92af9ec9fc445e3ccb
2019-06-17 11:32:16 -07:00
Adam Simpkins
482c2d8dfd change how we compute sizes of the RocksDB column families
Summary:
Update `RocksDbLocalStore::getApproximateSize()` to use `DB::GetIntProperty()`
rather than `DB::GetApproximateSizes()`.

The `GetIntProperty()` call reports properties about the overall column
family, as opposed to `GetApproximateSizes()` which supports querying size
information for specific key ranges.  We always want data about the full
table, so the `GetIntProperty()` call seems to make more sense for us.

Also change the code to include both the SST file size (which we were querying
before) and the memtable size (which was not included before).  The
`GetApproximateSizes()` call allow this to be queried too, but using
`GetIntProperty()` still seems better since we don't care about a specific key
range.

Reviewed By: wez

Differential Revision: D15798506

fbshipit-source-id: 86d087876d838c0ff4ae517ccac2e8b8bf31e304
2019-06-14 18:14:43 -07:00
Adam Simpkins
69dc2be426 add a debug log message reporting how long PeriodicTasks took
Summary:
Add a debug log message at the end of each PeriodicTask iteration, reporting
how long the task took.

Reviewed By: wez

Differential Revision: D15798504

fbshipit-source-id: 3f33877cb4a9ddb8d966877b005e6d4c60d7dbe0
2019-06-14 18:14:43 -07:00
Adam Simpkins
aa45fa2cb7 periodically reload the config files
Summary:
Add a periodic task to reload the configuration file from disk.  By default
this runs once every 5 minutes, but this interval can be controlled from the
config file.

At the moment reloading the config file does not do much other than update the
interval for how frequently the config file is reloaded.  However, I plan to
add additional periodic tasks shortly that are controlled by this config
setting.

This will also make it possible for other parts of the code to
access the config settings in the `ServerState` and use them as-is without
checking to see if they reloaded.  Currently all of the code that accesses
config values performs a check to see if the config needs to be reloaded.  If
we want to switch to Mercurial-style configs in the future that check will be
substantially more expensive.

This diff also includes a new thrift call to force the config file to be
reloaded immediately.  This can be used to restart automatic config reloading
if it is ever disabled in the config file.

Reviewed By: wez

Differential Revision: D15756357

fbshipit-source-id: 1999f4730903633ce838842932a6ae6a65eda4e6
2019-06-14 18:14:43 -07:00
Victor Zverovich
e4575f33be Migrate to optional_field_ref Thrift API
Summary:
Migrate the code from accessing optional Thrift fields directly to a safer
`optional_field_ref` API. See https://fburl.com/safe for more details.

The output of this codemod has been reviewed in D13259011.

To preserve semantics, each unchecked access is replaced with an explicit call
to `value_unchecked()`. If you are sure that accessing a field is safe (the
field is marked as set), you can later replace `value_unchecked()` with
`value()` or dereferencing (`operator *`):

```
  ThriftStruct s = ...
- auto foo = s.foo_ref().value_unchecked();
+ auto foo = *s.foo_ref(); // will throw if s.foo is unset
```

drop-conflicts

Reviewed By: stevegury

Differential Revision: D15786632

fbshipit-source-id: 7c3f089dfa79597b189da6996cb76dcdbd5ed612
2019-06-13 08:54:34 -07:00
Brian Strauch
7a1724b5d5 Get blob size from local store
Summary: The first step towards decoupling size from the metadata object in the local store. This is necessary for the next step, which is to serialize size separately from the combined metadata object.

Reviewed By: chadaustin

Differential Revision: D15719637

fbshipit-source-id: 979555e3e362f2b698b3af3a0b6db1e350e07dcd
2019-06-12 17:48:49 -07:00
Brian Strauch
9090adaaa3 Added missing tests for getBlobSha1
Summary: Wrote tests for retrieving hashes from the object store and refactored existing tests. Includes positive and negative tests.

Reviewed By: strager, pkaush

Differential Revision: D15697488

fbshipit-source-id: 44aa8a36fbc1d1e56dcbbb6bcb665d3784cbb476
2019-06-12 17:48:49 -07:00
Brian Strauch
13796362f5 Renamed functions to refer to blobs
Summary: `getSize` and `getSha1` were misleading function names, since the functions refer to the size and hash of a given blob and not the object store itself. These functions have been renamed to `getBlobSize` and `getBlobSha1`.

Reviewed By: chadaustin

Differential Revision: D15696510

fbshipit-source-id: 4dd31659f60969fa90d8e2b39f43c46a2b7dff7c
2019-06-12 17:48:49 -07:00
Brian Strauch
e9d67b364c Created getSize() function to mirror getSha1()
Summary: I decoupled the getSize() function from the getMetadata() function, using a naive implementation for now. This was necessary because I want to add support for fetching only the size of a blob during a request like `ls -l`. Right now, the size and hash of a blob are coupled in a Metadata object, so if the size is requested, the whole file must be downloaded to calculate the hash, which is expensive for large files.

Reviewed By: chadaustin, strager

Differential Revision: D15678216

fbshipit-source-id: 8f68692768faaae0e65373ffe608d09ae49bbc42
2019-06-12 17:48:48 -07:00
Yedidya Feldblum
84137aebf1 Always define FOLLY_LIBRARY_SANITIZE_ADDRESS to either 0 or 1
Summary: [Folly] Always define `FOLLY_LIBRARY_SANITIZE_ADDRESS` to either 0 or 1.

Reviewed By: simpkins

Differential Revision: D10414836

fbshipit-source-id: d60ef8380c50971858ed282374f1b5973a27cdf4
2019-06-12 15:54:23 -07:00
Adam Simpkins
90f48a3105 fix a few additional python lint issues
Summary: Fix a few more issues raised by our Python lint checks.

Reviewed By: wez

Differential Revision: D15776717

fbshipit-source-id: 621960579c4567c4fb9395ae14cd7a8666726c1c
2019-06-12 14:00:57 -07:00
Adam Simpkins
20f211acb8 remove unused python imports
Summary: Remove a number of unused imports detected by the linter.

Reviewed By: wez

Differential Revision: D15776268

fbshipit-source-id: 221f45d275664d037bbabcac9858b40266b4833e
2019-06-12 14:00:57 -07:00
Matt Glazar
5d8e8a5fcd Improve error message if systemd is not running
Summary:
If the systemd user manager is not running (e.g. it crashed or was manually stopped), 'eden stop' fails with an unhelpful error message:

> pystemd.dbusexc.DBusConnectionRefusedError: [err -111]: Could not open a bus to DBus

or

> pystemd.dbusexc.DBusBaseError: [err -2]: Could not open a bus to DBus

Provide a better experience: tell the user the most likely cause, and suggest a solution:

> error: The systemd user manager is not running. Run the following command to start it, then try again:
> sudo systemctl start user@strager.service

Reviewed By: wez

Differential Revision: D13791023

fbshipit-source-id: 5172df0a52d21c311b27b8a527cad934f9882154
2019-06-12 13:32:54 -07:00
Matt Glazar
077fa9f149 Delete unused HgCommand code
Summary: HgCommand.h and related code isn't used anywhere. Delete it.

Reviewed By: simpkins

Differential Revision: D15773223

fbshipit-source-id: c4c116150bb74e29e4f220d3b0cbf988d4a1b1c5
2019-06-12 11:21:12 -07:00
Yedidya Feldblum
910e6b7e66 Rename FOLLY_ASAN_ENABLED to FOLLY_LIBRARY_SANITIZE_ADDRESS
Summary: [Folly] Rename `FOLLY_ASAN_ENABLED` to `FOLLY_LIBRARY_SANITIZE_ADDRESS`.

Reviewed By: simpkins

Differential Revision: D10414837

fbshipit-source-id: b7ca2a36dd7f91ccab2f8051f78c75909f378d16
2019-06-12 02:12:24 -07:00
Adam Simpkins
232c3b2e2b update the ConfigTest class to run without a repository
Summary:
Summary
Change `ConfigTest` to derive directly from `EdenTestCase` rather than using
the `eden_repo_test` decorator.  The configuration test code doesn't really
need a repository, and so we don't need to run it twice (for both Mercurial
and Git repositories).

Reviewed By: wez

Differential Revision: D15756359

fbshipit-source-id: 90d5011ae1ff7d2a251c9e7bb776045fbe2fdfe1
2019-06-11 18:27:21 -07:00
Adam Simpkins
53a6513e14 clean up arguments to the EdenFS class in the integration tests
Summary:
Clean up the `EdenFS` class construction.

Previously it accepted the `eden_dir`, `etc_eden_dir`, and `home_dir`
arguments as separate parameters.  If `etc_eden_dir` or `home_dir` were not
specified it would not pass these arguments to `edenfs`, allowing the default
values to be used.  This is undesirable for most tests.

Now it accepts a `base_dir` argument.  Explicit values for the `eden_dir`,
`etc_eden_dir`, and `home_dir` parameters can still be specified (this is used
for the snapshot tests), but if they aren't specified, default locations
inside the `base_dir` will be used instead.

This also cleans up some of the code to use `pathlib.Path` values instead of
plain `str` objects in more places.

Reviewed By: strager

Differential Revision: D15756358

fbshipit-source-id: 3e87ddc98d15fcb7f60c6c3116d4fcc8e49432ea
2019-06-11 18:27:21 -07:00
Wez Furlong
3d09657ee1 eden: improve grokability of bind_mount_test
Summary:
Introduce a couple of globals that represent
the different stat results used in the test, and a helper
function to return the most common shape of the mount table.

Reviewed By: strager

Differential Revision: D15753258

fbshipit-source-id: 05d54d6098476464b0319615afb32da25431b2e6
2019-06-11 16:41:01 -07:00
Wez Furlong
5bcff17a7f eden: implement mount parsing for macOS
Summary:
Parse the `mount` command output to understand the mount table on macOS.

This is helpful both for eden doctor and the upcoming redirection feature.

Reviewed By: strager

Differential Revision: D15701554

fbshipit-source-id: 6e17e1682dc609ae6f1e9f82bf7b9c729addea27
2019-06-11 16:41:01 -07:00
Wez Furlong
ac89061656 eden: add a helper function to the cli to tabulate output
Summary:
For the redirect subcommand I wanted to automatically tabulate
some data to display it, so here's a little helper function.

The intent is that we pass a list of dictionaries with the data and let
the tabulate function render it for human consumption.

That same set of dictionaries could also be passed to a json serializer
for machine readable output (out of scope from this diff).

The tabulated data is intentionally limited in this current form:

* We make a run through and compute the max width of each column
* A simple header_labels map can be used to provide more human
  readable versions of the dictionary keys as the column headers
* A missing header lable defaults to the uppercased version of
  the dictionary key for that column
* Cell contents are all left aligned in their respective cell

Reviewed By: strager

Differential Revision: D15700886

fbshipit-source-id: e47a1ebc56edb0fd386bfda83865f946f5e782ce
2019-06-11 16:41:00 -07:00
Adam Simpkins
e8a590e3f1 check the return values from chdir() in PathFuncsTest
Summary: This suppresses some build warnings on Ubuntu 18.04.

Reviewed By: strager

Differential Revision: D15768196

fbshipit-source-id: 436ab5ebe59df627b398fcc8cebd1c945e99771a
2019-06-11 16:30:51 -07:00
Adam Simpkins
b5381ebbbe fix some dependencies in the CMake files
Summary:
The eden/fs/store library depends on eden/fs/config.  The changes in
D15428932 exposed a build failure due to this missing dependency.

Reviewed By: strager

Differential Revision: D15768197

fbshipit-source-id: 4482e3a9027fd49163af39d6887da709be810b0a
2019-06-11 16:30:51 -07:00
Adam Simpkins
e03b440e1c make ConfigSetting<bool>::getStringValue() return true/false
Summary:
The `FieldConverter<bool>` code previously relied on `folly::to<string>()` for
all arithmetic types, including `bool`.  Unfortunately `folly::to<string>()`
returns `"1"` and `"0"` for booleans, which isn't terribly human-friendly.

This updates the code to explicitly return `"true"` and `"false"` as the
output for converting boolean values to strings.

Reviewed By: strager

Differential Revision: D15550014

fbshipit-source-id: 69a3385e529e2940a8be20dbcbeda92e5836d969
2019-06-11 13:08:29 -07:00
Adam Simpkins
0c63605e75 add a config FieldConvertor for parsing nanoseconds
Summary:
Add a `FieldConvertor` implementation allowing a config field to be parsed
into a `std::chrono::nanoseconds` value.

Reviewed By: strager

Differential Revision: D15428932

fbshipit-source-id: d3ace45a2986717c798897534e7b3015eda35fa9
2019-06-11 13:08:29 -07:00
Adam Simpkins
60ef2759fe update FieldConverter API to support converting back to strings
Summary:
The `ConfigSetting` code previously used `folly::to<string>()` to convert
field values back to strings for debugging.  However, this only works for
values that actually are supported by `folly::to()`

This changes the code to use the `FieldConverter` to perform the conversion
back to string.  The `FieldConverter` class now contains the logic for doing
conversion both from strings and back to strings.

Reviewed By: strager

Differential Revision: D15428933

fbshipit-source-id: a37a978d151bf0ba79ca2a2b9107401c847b6591
2019-06-11 13:08:29 -07:00
Adam Simpkins
98f24c34cb add a durationToString() function
Summary:
Add a `durationToString()` function.  This converts a duration value to a
string that can be parsed back with `stringToDuration()`.

Reviewed By: wez, strager

Differential Revision: D15428935

fbshipit-source-id: 2840663385434bc35f04c16d2570fd86e234cb3f
2019-06-11 13:08:29 -07:00
Adam Simpkins
4d10340022 add a function to parse a duration string
Summary:
Add a `stringToDuration()` function to parse a string into a
`std::chrono::nanoseconds` value.

Strings are parsed as a sequence of `[number] [unit]` pairs.
For instance:

  `1m30s` --> 90 seconds
  `5s10ms` --> 5010 milliseconds
  `1d3h10m` --> 1 day, 3 hours, 10 minutes (1630 minutes total)

Reviewed By: strager

Differential Revision: D15428934

fbshipit-source-id: 63f6614595c1aaa08c0d03633c6d1b53ca5bf3d5
2019-06-11 13:08:28 -07:00
Adam Simpkins
7fbe72c368 add config FieldConverter implementations for all arithmetic types
Summary:
Update the `FieldConverter` code to support parsing any arithmetic type
(integers and floating point) using `folly::to<T>()`.  Also change the `bool`
conversion implementation to use the same code.

This does change the `bool` implementation to accept any string accepted by
`folly::to<bool>(string)`.  The old code only allowed `true` and `false`.  The
new code allows other strings: `yes`, `no`, `y`, `n`, `0`, `1`, `on`, `off`

This also makes the implementation more efficient by eliminating some
unnecessary string copies and avoiding throwing exceptions internally on
error.

Reviewed By: wez

Differential Revision: D15428700

fbshipit-source-id: feb73a1f53775fbf3d3acb8585fa689f79c0db81
2019-06-11 13:08:28 -07:00
Adam Simpkins
7309869981 add a thrift call for getting config values
Summary:
Add a thrift call to get the current config settings.

My primary use case for this method at the moment is to make it possible to
build integration tests that check the config behavior.  However in the future
this will probably also be useful for building CLI commands to report the
current config values to allow debugging if there are ever issues.  This API
can also be used to force EdenFS to immediately reload the config from disk.

Reviewed By: strager

Differential Revision: D15572124

fbshipit-source-id: da3bc982f9c419b3314a8b0560c9bd327760d429
2019-06-11 13:08:28 -07:00
Adam Simpkins
bf59ad279f add some new options for controlling if we reload the config
Summary:
Change the `ReloadableConfig::getEdenConfig()` method to accept an enum to
control whether it should reload the configuration, rather than the simpler
bool that it used previously.

The primary motivation for this is to allow us to force a reload to occur in
unit tests and integration tests, even if this operation would otherwise be
within the normal reload throttling time limit.

Reviewed By: strager

Differential Revision: D15572122

fbshipit-source-id: 9c638a415a451f26e7f5923f544724594ed4e0f1
2019-06-11 13:08:27 -07:00
Matt Glazar
fa4e4cf78e Make 'edenfsctl start' fail if already running (systemd)
Summary:
With systemd integration enabled, if edenfs is running, or if edenfs' systemd service is active, `edenfsctl start` does nothing. This behavior differs from `edenfsctl start` with systemd integration disabled, and can cause `edenfsctl restart` to think that it successfully started edenfs.

Make `edenfsctl start` fail if edenfs is running and healthy, or if edenfs' systemd service is active (yet edenfs is unhealthy).

Reviewed By: chadaustin

Differential Revision: D15703310

fbshipit-source-id: ce0a13780ee03de1f896a938d002901023e5bdd3
2019-06-11 11:02:13 -07:00
Matt Glazar
6ceb5973e2 Refactor 'edenfs is already running' check
Summary:
get_edenfs_start_cmd checks if edenfs is already running, and fails if it is. Most of the time, this check is redundant. This function is effectively called in five places:

* `edenfsctl start`
* `edenfsctl clone` if not running
* `edenfsctl restart` (`_graceful_restart`) with takeover=True
* `edenfsctl restart` (`_start`) if not running
* `edenfsctl restart` (`_finish_restart`) after stopping edenfs

The check is only necessary in one of these places (`edenfsctl start`). Move the check.

This refactor will allow us to run the check if systemd is enabled without duplicating code.

This diff should not change behavior (ignoring unimportant race conditions).

Reviewed By: simpkins

Differential Revision: D15703308

fbshipit-source-id: cbd4a70a3e0eb23da0d65d641d89a5ac022cd79f
2019-06-10 20:45:30 -07:00
Matt Glazar
c9b0e09c82 Use pystemd for 'eden start'; improve error messages
Summary:
systemctl has some problems for Eden. For example:

* With Restart=on-failure, 'systemctl start' reports that the job failed when the first failure occurs. 'systemctl start' does not wait for retries to finish. This means 'eden start' can fail despite edenfs starting successfully.
* If the service fails to start, 'systemctl start' prints a suggestion to use journalctl, even though journalctl is broken and is not even used by fb-edenfs@.service.
* If 'systemctl' can't connect to systemd, it prints a generic message such as "Failed to connect to bus: Connection refused" which the Eden CLI can't easily detect and customize.

For 'eden start', instead of using systemctl, talk to systemd using its D-Bus API (via pystemd [1]). This automatically solves the journalctl message problem, makes it trivial to customize certain errors, and will let us solve the Restart=on-failure problem in the future.

Aside from changing some error messages, this diff should not change behavior.

[1] https://github.com/facebookincubator/pystemd

Reviewed By: simpkins

Differential Revision: D13533184

fbshipit-source-id: 7fedc8ad4a094a2d04b14c2f6e82b51a0ed348a6
2019-06-10 14:05:55 -07:00
Kostia Balytskyi
5b4667e061 bring back the hg python entry point
Summary:
Back out "[hg] entrypoint: remove hg python script"

Original commit changeset: f3c8cfe4beb7

Reviewed By: mitrandir77

Differential Revision: D15739595

fbshipit-source-id: d13dd5a8cf7c645de622a2dd18960eba6561d131
2019-06-10 10:44:24 -07:00
Jake Crouch
1f34bd8448 Templatize Path Memory Estimation
Summary: Previously functions were defined per string type but since SSO detection is now templatized so can path memory estimation.

Reviewed By: chadaustin

Differential Revision: D15723098

fbshipit-source-id: df8dcd359a0f4f704eba337ebf5e382d87ca3abe
2019-06-07 18:51:40 -07:00
Jake Crouch
29da6b4730 Generalize SSO Detection
Summary: Previously hard-coded values for how long a string has to be for SSO, now just check if data pointer is inside string stuct

Reviewed By: chadaustin

Differential Revision: D15720268

fbshipit-source-id: 988e45648e8b96332587f8d2f021642407d3dac3
2019-06-07 18:51:40 -07:00
Adam Simpkins
596243f44b fix a use-after-free bug during unmount()
Summary:
Update the EdenServer::unmountAll() code to make sure to keep a shared_ptr
reference to the EdenMount while the EdenMount::unmount() call is running.

Previously this could cause use-after-free errors due to the EdenMount
object being destroyed while the `unmount()` logic was still running.  In
particular, as soon as we call `privhelper->fuseUnmount()` the
fuseCompletionFuture could complete in a different thread.  The
fuseCompletionFuture's callback (normally the lambda inside
`EdenServer::mount()` which triggers the call to
`EdenServer::mountFinished()`) may have the last outstanding shared_ptr
refcount to the `EdenMount` object.  When it finishes in this other thread
it will then destroy the EdenMount, possibly before the
`EdenMount::unmount()` logic has completed.

Reviewed By: strager

Differential Revision: D15688674

fbshipit-source-id: 47b8b4fe022d2bca112558f9ef32bcdd169fefb0
2019-06-07 18:33:18 -07:00
Jake Crouch
9704627b62 Make Journal Stats O(1)
Summary: JournalStats is currently O(# of deltas), updating it to be O(1)

Reviewed By: chadaustin

Differential Revision: D15718255

fbshipit-source-id: 1fb3f0b76d736bfa22195231c21d5f8b742fa1f7
2019-06-07 13:37:02 -07:00
Jake Crouch
dd0b96dcfd Journal Stats to ODS
Summary: Setting up structure to get the stats from Eden's Journal to ODS

Reviewed By: chadaustin

Differential Revision: D15684380

fbshipit-source-id: 90debc3f2a09d497201e5e73f85400a994b7afba
2019-06-07 13:37:02 -07:00
Jake Crouch
0dc6812f33 Print out Journal Info with edenfsctl
Summary: Print out memory usage and entry counts with edenfsctl stats

Reviewed By: chadaustin

Differential Revision: D15607015

fbshipit-source-id: 866960ea1d3b5e9fdbe24df3b57fba419795ec76
2019-06-07 13:37:02 -07:00
Sinan Cepel
c281b44695 upgrade Pyre version for eden
Reviewed By: shannonzhu

Differential Revision: D15718331

fbshipit-source-id: 3c3df62e8feb058766bc639482deb8dc3b6d4ec7
2019-06-07 12:27:23 -07:00
Wez Furlong
00343575cd eden: avoid starting buck to kill buck
Summary:
Look for the .buckd/pid file before we try to `buck kill`
a project, and test whether that pid is still a real pid.  This
reduces latency of shutdown/restart a little, and de-clutters the
output in repos with several buck cells.

Reviewed By: chadaustin

Differential Revision: D15715133

fbshipit-source-id: 033549eae308ae8773bf270f55e215586b406ca9
2019-06-07 11:56:25 -07:00
Kostia Balytskyi
2e89766403 entrypoint: remove hg python script
Summary: We want to have just one entry point to Mercurial, namely the Rust binary. Getting rid of the `hg` Python script means that we finally can do things that only exist in Rust and not in Python.

Reviewed By: simpkins

Differential Revision: D13186374

fbshipit-source-id: f3c8cfe4beb7bf764172a8af04fd25202eca9af2
2019-06-06 14:26:21 -07:00
Yedidya Feldblum
c1f6f20511 Replace inclusions of folly/futures/helpers.h with folly/futures/Future.h
Summary: Replace inclusions of `folly/futures/helpers.h` with `folly/futures/Future.h` to avoid the cyclic include trap.

Differential Revision: D15600549

fbshipit-source-id: 19950be24a7437fb1fbec293e24058adf17343ca
2019-06-06 11:09:10 -07:00
Adam Simpkins
8e564e05b9 attempt to avoid server start-up delay in the PeriodicTask tests
Summary:
The `testSplayOn()` and `testSplayOff()` tests have been failing occasionally
in continuous integration tests.  In every test failure I have looked at, the
only reported failures were for iteration 0: the very first time the task was
scheduled after the server started.  I believe the server start is simply
taking a non-zero amount of time, delaying how long it takes for the first
iteration of the tasks to be run.

This updates the tests to wait for 3 iterations of the main event base loop
before recording the test start time and scheduling the tasks.

Reviewed By: strager

Differential Revision: D15618328

fbshipit-source-id: 2b119700662457c0fcdf38cc231c6c7d26ade248
2019-06-05 20:25:19 -07:00
Wez Furlong
eb008a261c eden: fix mount table listing in the cli
Summary:
sys.platform can be `linux` or `linux2` depending on the
python version and system.  I broke this when adding stub
support for macos :-/

Reviewed By: simpkins

Differential Revision: D15669330

fbshipit-source-id: 390ca13a912ce4b787f548f18d889b1f7156619d
2019-06-05 13:09:43 -07:00