Commit Graph

60452 Commits

Author SHA1 Message Date
Xavier Deguillard
601eab97f8 win: remove SerializedFileHandleMap and unlink from Stub.h
Summary: These 2 are unused, remove them.

Reviewed By: chadaustin

Differential Revision: D23693495

fbshipit-source-id: 9835de857d103c7079eda53d7e5f1914ad025fca
2020-09-14 19:25:48 -07:00
Xavier Deguillard
88c748e3b9 win: remove ProcessNameCache from Stub.h
Summary:
The ProcessNameCache code is compiled on Windows now, this definiton could
cause issues with different cpp files compiling different version of the
ProcessNameCache. To avoid this, let's remove it from Stub.h, this also removes
a bunch of #ifdef.

Reviewed By: chadaustin

Differential Revision: D23693490

fbshipit-source-id: 8f3f7b1128235b9a60f850e688b9e98910c202fc
2020-09-14 19:25:48 -07:00
Xavier Deguillard
8498760bf0 win: remove fuse_in_header from Stub.h
Summary: This is not needed, remove it.

Reviewed By: chadaustin

Differential Revision: D23693489

fbshipit-source-id: 0d7674f3001410b2d9ff02ef95049c5391d8528c
2020-09-14 19:25:48 -07:00
svcscm
0b94e6bbd9 Updating submodules
Summary:
GitHub commits:

a84a214ddf
587ad0d62e
02f127e417
25e3fd32e2
efa1624780
64aed325fe
c5b7753876
7d472accdc
ca2dfd0389
abf9c2d768
f7f8a03e9e
05c6c0a084
15b3f0599a
8a98805d70
e70bbceef5

Reviewed By: bigfootjon

fbshipit-source-id: 50b8b9cd03cb30e6696f0448d9306106f22c1c1a
2020-09-14 18:06:26 -07:00
Xavier Deguillard
38bc544f7e win: remove win/service/main.cpp
Summary: This code is the same as the service/oss/main.cpp, no need to keep this one around.

Reviewed By: chadaustin

Differential Revision: D23689607

fbshipit-source-id: bb72a0623dcdb36beca40c3766e8d6817b99dea2
2020-09-14 18:03:07 -07:00
Katie Mancini
9c0be6c7c8 teach eden to parse arrays in configs
Summary:
This stack updates eden to be able to check all of the locations that able
users certificate may reside.

There can be multiple places where a cert may reside (we cant always
definitively choose one place to look based on the platform). Thus we
need to be able to configure multiple locations for certs in our eden
config.

Thus we need to be able to parse a list of options for a key in our config
parsing.

**Disclaimer this is really icky**

Our `FieldConverter` interface takes a string to parse. So this means
that after parsing the config file for each value we have to re-serialize it
into a string to pass it in here. Previously we only supported string and
bool values so this re-serialization was not too terrible. Now that we want
to support arrays this re-serialization is extra gross. To minimize the grossness,
I am reusing cpptoml for serializing / deserializing around the `FieldConverter`
interface.

Long term it would be better if FieldConverter took a cpptoml::base or
something more generic instead of a string so we dont have to do this.
But that will be a big refactor, and I don't currently have bandwidth for it :(

Reviewed By: wez

Differential Revision: D23359928

fbshipit-source-id: 7c89de485706dd13a05adf19df28425d2c1756a8
2020-09-14 17:40:13 -07:00
generatedunixname89002005307016
827498fc82 suppress errors in eden - batch 1
Differential Revision: D23685952

fbshipit-source-id: e545fd2625c36a8f811179091b3043c95281ff7a
2020-09-14 15:56:35 -07:00
Chad Austin
5f8fde4570 remove an irredeemably flaky test
Summary:
This test can't be non-flaky, because it relies on the kernel deciding
when to drop inodes from cache, and we've investigated it multiple
times. Given it tests a rarely-used function that would be better
expressed as a unit test in C++, just remove it for now.

Reviewed By: wez

Differential Revision: D23665455

fbshipit-source-id: 522e47113857eff399be4f2bb60e26e801d61e9a
2020-09-14 14:57:44 -07:00
svcscm
5392ec81ea Updating submodules
Summary:
GitHub commits:

b3eb120290
e675c45208
91c6fbeda2
8f60f63386
5529a44fe1
627ddba89a
6b72342a12
9fa11fdfad
09fb719da1
8e9abfac46
98b23a143f
89430b8528
a92dfc18eb
1d710393d5
38a46d3302

Reviewed By: bigfootjon

fbshipit-source-id: 341b1ff882dc4b96dc7b57ee534c6624d2894f9e
2020-09-14 13:56:54 -07:00
Genevieve Helsel
2965c5f74c remove extra printed lines and sort result in prefetch profile finish
Summary: For ease of consumption, remove the descriptive line and the extra newline at the bottom of the generated prefetch profile. Also, sort the files for smaller generated diffs upon iteration.

Reviewed By: kmancini

Differential Revision: D23683153

fbshipit-source-id: e2bd510d5fbd7095f199e70b2556b84e0984a914
2020-09-14 12:59:28 -07:00
Durham Goode
a674b25157 hgcache: add config driven cache nuking
Summary:
We've often had cases where we need to nuke peoples caches for various
reasons. It's a hug pain since we haven't a way to communicate with all hg
clients. Now that we have configerator dynamicconfigs, we can use that to reach
all clients.

This diff adds support for configs like:
```
[hgcache-purge]
foo=2020-08-20
```
The key, 'foo' in this case, is an identifier used to only run this purge once.
The value is a date after which this purge will no longer run. This is useful
for bounding the damager from forgetting about a purge and having it delete caches
over and over in the future for new repos or repos where the run once marker
file is deleted for some reason.

Reviewed By: quark-zju

Differential Revision: D23044205

fbshipit-source-id: 8394fcf9ba6df09f391b5317bad134f369e9b416
2020-09-14 11:01:02 -07:00
Luca Niccolini
b259a5c949 add gtest version 1.8
Summary:
needed by a few projects [wangle, mvfst, proxygen]

it's already in lfs
https://www.internalfb.com/intern/diffusion/FBS/browse/master/fbcode/tools/lfs/.lfs-pointers?lines=41

Reviewed By: mzlee

Differential Revision: D23676343

fbshipit-source-id: 0fa04d4224f27e756f683924af0c21ea63a90647
2020-09-14 10:17:01 -07:00
svcscm
75055110f0 Updating submodules
Summary:
GitHub commits:

3e27ae81b8

Reviewed By: wittgenst

fbshipit-source-id: a727e58e2bed1ba36487f3699e08e8d10d3f736c
2020-09-14 10:17:01 -07:00
svcscm
7a4ea426c4 Updating submodules
Summary:
GitHub commits:

5763a8f730

Reviewed By: wittgenst

fbshipit-source-id: 02d3f73f16f30149786e7c24d4f82a1d27b55434
2020-09-14 03:23:55 -07:00
svcscm
6dda6270a1 Updating submodules
Summary:
GitHub commits:

4c78848f6e
aed460488f
700ca5e928
36cc983c50
0dc4481126
e26d854953
3071547c10
2ead19c9ff
094614e514
23a4418f0f

Reviewed By: wittgenst

fbshipit-source-id: 292c4cf82192e60b99ee55266932cc24738374bd
2020-09-14 03:23:55 -07:00
svcscm
89aae4a7bf Updating submodules
Summary:
GitHub commits:

269c5931d1
007ab0fe3c
368e68bb7c
1011548320
a8580c6bab
edec931a53
6c13933d30
c27436c106
664219226e

Reviewed By: wittgenst

fbshipit-source-id: fe5e049e3581b89fb3a9a057c93fe7dbfa9290c4
2020-09-13 12:38:54 -07:00
Chad Austin
d58f0d9451 prevent spurious configuration reloads when a config file doesn't exist
Summary:
getConfigStat had a bug where it, instead of clearing the bits of
*configStat, cleared the bits of the pointer itself. This caused the
stat struct for missing files to be uninitialized memory, causing
configs to reload. Write a test and fix the bug.

Reviewed By: xavierd

Differential Revision: D23645087

fbshipit-source-id: ad42f7ec1b313f668604e3a7f6c8200f6b94b23d
2020-09-13 01:37:14 -07:00
Chad Austin
be7a6b5cb3 introduce an assertZeroBits function to double-check the compiler
Summary:
While hacking on some code, I ran into a situation where some
zero-initialized stat structs weren't actually being zeroed. This was
either a compiler bug or a situation where the build system was not
correctly rebuilding everything after my changes, and I did not have
enough disassembly available to investigate.

Either way, since this code assumes zero bits in some nonobvious ways,
explicitly assert they are.

Reviewed By: xavierd

Differential Revision: D23644819

fbshipit-source-id: eb6bff9ff997379113db1e1bf9d6a0a538f10f0b
2020-09-13 01:37:14 -07:00
svcscm
d0628d0f39 Updating submodules
Summary:
GitHub commits:

c2cdb9b805

Reviewed By: wittgenst

fbshipit-source-id: 10fbb44ddc52ac098050d1ed7d3282d1e2debdf8
2020-09-13 01:37:14 -07:00
svcscm
4e2760f001 Updating submodules
Summary:
GitHub commits:

b404e15981
c33144a817
03e6927e45

Reviewed By: wittgenst

fbshipit-source-id: e3544f652effe3253fdefd715ed1048ba816c710
2020-09-12 21:24:32 -07:00
svcscm
55438142ca Updating submodules
Summary:
GitHub commits:

77f7fbdf15
b004397720
881677eef5

Reviewed By: wittgenst

fbshipit-source-id: bd535f381f81da88bb5dad8e3a2e4a39b1349467
2020-09-11 20:07:27 -07:00
svcscm
86964210e0 Updating submodules
Summary:
GitHub commits:

8c0bd81893
5f813e67c0
205e577694
327af996e2
caaeb874b5
0725301da5

Reviewed By: wittgenst

fbshipit-source-id: 5526e384cade32c48b2b9a92fa75f0c3cbf738fa
2020-09-11 20:07:27 -07:00
svcscm
ee5c83ada8 Updating submodules
Summary:
GitHub commits:

2d8dccaa95
7a818548f1
8d571f23f0

Reviewed By: wittgenst

fbshipit-source-id: 09c6144ac11f908c2dd18ac281e48c1a67397897
2020-09-11 17:35:00 -07:00
Kostia Balytskyi
7f504c741b impl LCAHint for Arc<impl LCAHint>
Summary:
This just makes it more convenient to use in circumstances when fns expects
`impl LCAHint` and we have `Arc<dyn LCAHint`.

Reviewed By: farnz

Differential Revision: D23650380

fbshipit-source-id: dacbfcafe6f3806317a81ed4677af190027f010b
2020-09-11 16:56:13 -07:00
svcscm
1f87ed9a25 Updating submodules
Summary:
GitHub commits:

35ea7a00ed
7c0a56baec
e66c32d29c
423425040c
3afa07d4dd
08292ca2da
50b941a43e
65cb59cd9b
60053cbcd4
d5c8669813
689cdcc943
465262d45e

Reviewed By: wittgenst

fbshipit-source-id: 232dbc697c622a8401ed6c4cde74dc004e8142eb
2020-09-11 16:53:50 -07:00
Chad Austin
e392eca46e log the path that caused configs to be reloaded
Summary:
We noticed spurious config file reloads, so add some logging to help
track that down.

Reviewed By: xavierd

Differential Revision: D23644447

fbshipit-source-id: 9953a17de402660c7f6491fb9abd8d702fa290e8
2020-09-11 16:53:49 -07:00
svcscm
7f4e674481 Updating submodules
Summary:
GitHub commits:

2b51f5edb1
f5744f58a8
796e8a5511
a6c9bce352
cba6d028f0

Reviewed By: wittgenst

fbshipit-source-id: 9c21ce90a24479688336f5bda132a13bd64ced4e
2020-09-11 13:35:04 -07:00
Chad Austin
2d86a960ad indicate to coreutils that edenfs is a remote filesystem
Summary:
GNU `df` (and any other coreutil that relies on gnulib's ME_REMOTE
flag) detects remote filesystems with some heuristics. One of which is
whether the device type contains a colon. Since edenfs is a remote
filesystem, include a colon, so it's properly detected as such.

Reviewed By: genevievehelsel

Differential Revision: D23520233

fbshipit-source-id: f4816b303e198d4e2a446efdcc5b49a593e09a05
2020-09-11 13:35:03 -07:00
Chad Austin
850999df92 handle mounts with device type starting with edenfs:
Summary:
We intend to rename the edenfs device type to include a colon (and
possibly the backing repo basename). In preparation, update code that
detects edenfs mounts to include anything that starts with "edenfs:".

Reviewed By: genevievehelsel

Differential Revision: D23520008

fbshipit-source-id: 280f7617d5c96e23d548041b3482bca388076a7b
2020-09-11 13:35:03 -07:00
Xavier Deguillard
c957d40ff7 cli: properly pass --edenfsctlPath on Windows
Summary:
For some unknown reason, we weren't setting this on Windows, which meant that
whenever edenfs would need to call edenfsctl (like at mount time when fixing up
redirections), it would always use the binary found in the PATH. While in most
cases this is OK, this is not the intended behavior for tests that are expected
to use the just compiled binary, not the one in the PATH.

Reviewed By: genevievehelsel

Differential Revision: D23653027

fbshipit-source-id: f1cc977e44b10c379d2b90bc7972bfec1fccad23
2020-09-11 11:57:12 -07:00
Stanislau Hlebik
d5cafbb432 mononoke: add catchup delete head subcommand to megarepo
Reviewed By: ikostia

Differential Revision: D23597187

fbshipit-source-id: da4710aabfc161a69d80c361dd593a3e7749e941
2020-09-11 10:39:07 -07:00
Arun Kulshreshtha
4d76a4c241 gotham_ext: don't end SignalStream on error
Summary: Previously, `SignalStream` would assume that an error would always end the `Stream`, and would therefore stop and report the amount of transferred data upon encountering any error. This isn't always the desired behavior, as it is possible for `TryStream`s to return mid-stream errors without immediately ending. `SignalStream` should allow for this kind of usage.

Reviewed By: farnz

Differential Revision: D23643337

fbshipit-source-id: 2c7ffd9d02c05bc09c6ec0e282c0b2cca166e079
2020-09-11 09:51:10 -07:00
svcscm
eb7dc081c3 Updating submodules
Summary:
GitHub commits:

28bc1035c1
be8445eea8
a12f045cc1
36bef91503

Reviewed By: wittgenst

fbshipit-source-id: e5ae68aa7e5cee7aaa44f19a610cafa1c3770073
2020-09-11 09:19:09 -07:00
Xavier Deguillard
f2cd32ea4e win: add PrjfsRequestContext class
Summary:
Similarly to FuseRequestContext, this will be allocated whenever ProjectedFS
calls onto EdenFS to keep track of timing, stats, etc.

For now, this just holds the callback data passed in, we need to copy it as
ProjectedFS will deallocate it when the EdenFS callback returns, but since we
intend to complete these asynchronously, the callback data needs to outlive the
callback, hence the copy. It's likely that this is copying too much, and only
part of it actually needs to be copied, this will be tackled later.

Reviewed By: wez

Differential Revision: D23505511

fbshipit-source-id: ece00183e3194611d3d63465878470d6e53b790c
2020-09-11 09:19:09 -07:00
Xavier Deguillard
e9da08d4d3 win: pass the PrjfsChannel to ProjectedFS callbacks
Summary: A following diff will make use of the channel.

Reviewed By: wez

Differential Revision: D23505510

fbshipit-source-id: c044fff51c8771b1ead86333317e5c617184075c
2020-09-11 09:19:09 -07:00
Stanislau Hlebik
54d43b7f95 mononoke: add getbundle optimization for fetching commits with low generation
Summary:
Currently getbundle implementation works this way: it accepts two list of
changesets, a list of `heads` and a list of `common`. getbundle needs to return
enough changesets to the client so that client has `heads` and all of its
ancestors. `common` is a hint to the server that tells which nodes client
already has and doesn't need sending.

Current getbundle implementation is inefficient when any of the heads have a low
generation number but also we have a lot excludes which have a high generation
number. Current implementation needs to find ancestors of excludes that are
equal or lower than generation of this head with a low generation number.

This diff is hacky attempt to improve it. It does it by splitting the heads
into heads with high generation numbers and heads with low generation numbers,
sending separate getbundle requests for each of them and then combining the
results.

Example
```
 O <- head 1
 |
 O <- exclude 1
 |
...     O <- head 2 <- low generation number
 |      |
 O      O <- exclude 2
```

If we have a request like  `(heads: [head1, head2], excludes: [exclude1, exclude2])` then this optimization splits it into two requests: `(heads: [head1], excludes: [exclude1, exclude2] )` and `(heads:[head2], excludes:[exclude2])`, and then combines the results. Note that it might result in overfetching i.e. returning much more commits to the client then it requested. This might make a request much slower, and to combat that I suggest to have a tunable getbundle_low_gen_optimization_max_traversal_limit that prevents overfetching.

Reviewed By: krallin

Differential Revision: D23599866

fbshipit-source-id: fcd773eb6a0fb4e8d2128b819f7a13595aca65fa
2020-09-11 07:32:26 -07:00
Pavel Aslanov
463acc581d use derived data infra to derive mercurial changesets
Summary:
This completely converts mercurial changeset to be an instance of derived data:
 - Custom lease logic is removed
 - Custom changeset traversal logic is removed

Naming scheme of keys for leases has been changed to conform with other derived data types. This might cause temporary spike of cpu usage during rollout.

Reviewed By: farnz

Differential Revision: D23575777

fbshipit-source-id: 8eb878b2b0a57312c69f865f4c5395d98df7141c
2020-09-11 07:23:11 -07:00
Aida Getoeva
b92c64af7d shed/sql: make queries! macros work with new Rust mysql client
Summary:
shed/sql library used mainly to communicate with Mysql db and to have a nice abstraction layer around mysql (which is used in production) and sqlite (integration tests). The library provided an interface, that was backed up from Mysql side my raw connections and by MyRouter.
This diff introduces a new backend - new Mysql client for Rust.

New backend is exposed as a third variant for the current model: sqlite, mysql (raw conn and myrouter) and mysql2 (new client). The main reason for that is the fact that the current shed/sql interface for Mysql
(1) heavily depends on mysql_async crate, (2) introduces much more complexity than needed for the new client and (3) it seems like this will be refactored and cleaned up later, old things will be deprecated.
So to not overcomplicate things by trying to implement the given interface for the new Mysql client, I tried to simplify things by adding it as a third backend option.

Reviewed By: farnz

Differential Revision: D22458189

fbshipit-source-id: 4a484b5201a38cc017023c4086e9f57544de68b8
2020-09-11 06:33:37 -07:00
Lukas Piatkowski
e7ac59eae4 mononoke/integration runner: add flag to choose which tests to run (#56)
Summary:
Pull Request resolved: https://github.com/facebookexperimental/eden/pull/56

Additionally to adding a flag as in the commit title the "test-scs*" tests are being excluded via pattern rather than listed out. This will help in future when more tests using scs_server will be added as the author won't have to list it in exclusion list.

Reviewed By: farnz

Differential Revision: D23647298

fbshipit-source-id: f5c263b9f68c59f4abf9f672c7fe73b63fa74102
2020-09-11 06:03:16 -07:00
svcscm
51a8c13b9d Updating submodules
Summary:
GitHub commits:

49b8d0ec42

Reviewed By: wittgenst

fbshipit-source-id: fcc74fd7f51da2e43bc3a5a82f29f0e3067faa96
2020-09-11 06:03:16 -07:00
svcscm
89479666cc Updating submodules
Summary:
GitHub commits:

ba3db8b9e7

Reviewed By: wittgenst

fbshipit-source-id: fc0349c795520bae08777584082652ac6f1fad31
2020-09-11 04:54:56 -07:00
Stanislau Hlebik
d402b5880c mononoke: support _gitlookup lookup calls
Summary:
lookup has special support for requests that start with _gitlookup. It remaps
hg commit to git commit and vice versa. Let's support that in mononoke as well.

Reviewed By: krallin

Differential Revision: D23646778

fbshipit-source-id: fcde58500b5956201e718b0a609fc3fee1bbdd28
2020-09-11 04:30:24 -07:00
Liubov Dmitrieva
a37a294fda improve fbclone experience
Summary:
`hg cloud rejoin` is used in fbclone

By providing a bit more information about the workspaces available we can improve user
experience and try to eliminate the confusion multiple workspaces cause.

Reviewed By: mitrandir77

Differential Revision: D23623063

fbshipit-source-id: 7598c1b58597032c9cfcef0b44b0ec1b00510ffa
2020-09-11 03:45:55 -07:00
svcscm
476ffc105b Updating submodules
Summary:
GitHub commits:

ddb1c3756c

Reviewed By: wittgenst

fbshipit-source-id: 22e7c9c3ea7b6775d1f498af9c73586f5f2c0154
2020-09-11 03:18:30 -07:00
Viet Hung Nguyen
700a9ae974 mononoke/repo_import: replace bonsai_changesets with their ids
Summary: This diff refactors the tool to use changeset_ids instead of changesets, since the functionalities of the tool always use the ids over the changesets. For process recovery (next steps) it's more ideal to save the changeset_ids, since they are simpler to store. However, if we used changesets in the tool, we would need to load them with the saved ids just to only use the ids throughout the process. Therefore, this loading step becomes redundant and we should simply use the ids.

Reviewed By: krallin

Differential Revision: D23624639

fbshipit-source-id: d9b558ebb46c0670bd09556783060f12d3a279ed
2020-09-11 03:10:27 -07:00
svcscm
3918e697fd Updating submodules
Summary:
GitHub commits:

06bfc524d6
94a7cf75ab

Reviewed By: wittgenst

fbshipit-source-id: 73b61fbcd783e796e39e3bf9772aa259f0e1bdce
2020-09-11 03:10:27 -07:00
svcscm
ebfc15dbdd Updating submodules
Summary:
GitHub commits:

0804110bdd

Reviewed By: wittgenst

fbshipit-source-id: 3d67609800a0f6e57b4a7a49923d7d164330f97c
2020-09-10 21:37:13 -07:00
Arun Kulshreshtha
a43444d481 lfs_server: remove mutable borrow from ODS middleware
Summary: `RequestContext` doesn't need to be mutable anymore.

Reviewed By: krallin

Differential Revision: D23631630

fbshipit-source-id: 0080aa3d5c25bafd784251adc34e98f9d04908de
2020-09-10 20:57:12 -07:00
Arun Kulshreshtha
7904099f13 edenapi_server: Add EdenAPI-specific columns to Scuba samples
Summary: Add a Scuba handler for the EdenAPI server, which will allow the server to log custom columns to Scuba via `ScubaMiddleware`. For now, the only application specific columns are `repo` and `method`.

Reviewed By: krallin

Differential Revision: D23619437

fbshipit-source-id: f08aaf9c84657b4d92f1a1cfe5f0cb5ccd408e5e
2020-09-10 20:57:12 -07:00
Arun Kulshreshtha
cec871cc9f edenapi_server: log stats to ODS
Summary: Add `OdsMiddleware` to the EdenAPI server to log various aggregate request stats to ODS. This middleware is directly based on the `OdsMiddleware` from the LFS server (which unfortunately can't be easily generalized due to the way in which the `stats` crate works).

Reviewed By: krallin

Differential Revision: D23619075

fbshipit-source-id: d361c73d18e0d1cb57347fd24c43bdb68fb7819d
2020-09-10 20:57:12 -07:00