Commit Graph

60696 Commits

Author SHA1 Message Date
Jun Wu
6d3f17bb16 codemod: signal.signal -> util.signal
Summary:
See the previous diff for context. This allows the code to run from non-main
thread.

Reviewed By: singhsrb

Differential Revision: D23759712

fbshipit-source-id: 044193a9d7193488c700d769da9ad68987356d69
2020-09-18 13:28:34 -07:00
Jun Wu
be51116cf4 util: add util.signal that works for non-main threads
Summary:
The idea is to extend D22703916 (61712e381c)'s way of calling functions from just edenapi to
the entire command for better Ctrl+C handling. Some code paths (ex. pager,
crecord) use `signal.signal` and `signal.signal` does not work from non-main
thread.

To workaround the `signal.signal` limitation, we pre-register all signals we care
about in the main thread to a special handler. The special handler reads a
global variable to decide what to do. Other threads can modify that global
variable to affect what the special signal handler does, therefore indirectly
"register" their handles.

Reviewed By: kulshrax

Differential Revision: D23759711

fbshipit-source-id: 8ba389072433e68a36360db6a1b17638e40faefa
2020-09-18 13:28:34 -07:00
Jun Wu
b5a01b9c05 util: improve interruption handling for 'threaded'
Summary:
Before this change, for a long-running function wrapped by 'threaded',
it might:

  background thread> start
  main thread> receive SIGINT, raise KeyboardInterrupt
  main thread> raise at 'thread.join(1)'
  main thread> exiting, but wait for threads to complete (Py_Finalize)
  background thread> did not receive KeyboardInterrupt, continue running
  main thread> continue waiting for background thread

Teach `thread.join(1)` to forward the `KeyboardInterrupt` (or its subclass
`error.SignalInterrupt`) to the background thread, so the background thread
_might_ stop. Besides, label the background thread as daemon so it won't
be waited upon exit.

Reviewed By: kulshrax

Differential Revision: D23759713

fbshipit-source-id: 91893d034f1ad256007ab09b7a8b974325157ea5
2020-09-18 13:28:34 -07:00
Jun Wu
51a9d37730 edenapi: edenapi._spawnthread -> util.threaded
Summary:
Move the wrapper to util.py. It'll be used in dispatch.py to make the entire
command Ctrl+C friendly.

Reviewed By: singhsrb

Differential Revision: D23759715

fbshipit-source-id: fa2098362413dcfd0b68e05455aad543a6980907
2020-09-18 13:28:33 -07:00
Jun Wu
c4e2f5cb0f bindings: add sleep for testing blocking Rust functions
Summary: This will be used to test Ctrl+C handling with native code.

Reviewed By: kulshrax

Differential Revision: D23759714

fbshipit-source-id: 50da40d475b80da26b7dbc654e010d77cb0ad2d1
2020-09-18 13:28:33 -07:00
Jun Wu
6cb78fa90c pyedenapi: expose API querying hg commit data
Summary: This makes it easier to test the API via debugshell.

Reviewed By: kulshrax

Differential Revision: D23750677

fbshipit-source-id: e29284395f03c9848cf90dd2df187e437890c56e
2020-09-18 13:28:33 -07:00
Jun Wu
80bf264e24 debugshell: add "api" object
Summary: It is handy to test edenapi methods directly.

Reviewed By: kulshrax

Differential Revision: D23750709

fbshipit-source-id: 33c15cecaa0372ba9e4688502e7d8f3fdda7c3b8
2020-09-18 13:28:33 -07:00
Jun Wu
478e1fe524 commands: add debugrebuildchangelog
Summary:
Add a command to rebuild the changelog without recloning other parts of the
repo. This can be used as a way to recover from corrupted changelog. It
currently uses revlog because revlog is still the only supported format during
streamclone.

In the future this can be used for defragmentation.

Reviewed By: DurhamG

Differential Revision: D23720215

fbshipit-source-id: 6db0453d18dbf553660d55d528f990a4029d9da4
2020-09-18 13:28:33 -07:00
svcscm
82816e3d0e Updating submodules
Summary:
GitHub commits:

b31e86abd9
c5d1c45f6c
e22f6c517f
6b3b8ea5ae
6efae4b00d
06107930ce

Reviewed By: yns88

fbshipit-source-id: 2827738dc68c3e247710aadd0ea68c32da559412
2020-09-18 13:28:33 -07:00
svcscm
edef61a31e Updating submodules
Summary:
GitHub commits:

468fe875a7
b22f02988b
605ff6edde

Reviewed By: yns88

fbshipit-source-id: f44e20e36ec415de7385bdeb81bddda6fb7e837b
2020-09-18 10:04:36 -07:00
Wez Furlong
0f2f5b9330 edenfs: change PathMap CaseSensitivity to runtime option
Summary:
This commit moves a compile-time template parameter
to be a runtime boolean parameter.

There's a bit of fan-out that, while I don't think it is
super awesome, isn't super terrible either.

The case sensitivity value is read from the checkout config
added in the prior diff in this stack.

Reviewed By: xavierd

Differential Revision: D23751192

fbshipit-source-id: 46f6fe25bfa6666305096ad9c416b510cd3aac8f
2020-09-18 08:43:14 -07:00
Wez Furlong
7b6868f452 edenfs: add per-checkout case sensitivity setting
Summary:
This diff teaches the CheckoutConfig how to determine
whether a given checkout should be case-sensitive (the default)
or case-insensitive-case-preserving.

This option is passed through to the fuse channel initialization,
so that the kernel will respect it, however, our DirEntry layer
doesn't yet know that it should respect this.

There's currently no UI to set this option.  My game plan
is to suggest the following steps to folks that want to try
this out:

```
$ eden stop
$ vim ~/local/.eden/clients/ovrsource/config.toml
```

and then add this line to the `[repository]` section:

```
case-sensitive = false
```

and finally:

```
$ eden start
```

Reviewed By: xavierd

Differential Revision: D23751184

fbshipit-source-id: 6facb23c460cfff6e37d0091b51b97ab06f62c91
2020-09-18 08:43:14 -07:00
Liubov Dmitrieva
70dc57f48b improve help
Summary:
Improve help to reflect that the system is also meant for managing backups

add missing commands
reshuffle a bit

Reviewed By: markbt

Differential Revision: D23782794

fbshipit-source-id: d7fd3fa06ca7acd649cef557f3fe020295259e3d
2020-09-18 07:03:25 -07:00
svcscm
10c8dc4937 Updating submodules
Summary:
GitHub commits:

d32b89177e

Reviewed By: yns88

fbshipit-source-id: ff09525072fddaaf53019bc3f05ce8844279c8c7
2020-09-18 07:03:25 -07:00
svcscm
5ced09da1c Updating submodules
Summary:
GitHub commits:

ebfa6e1cee
5756ca77a9
21f2eeb498
8f6646bcdc
d903c2fb84
89afbe5278
651342bf02
3a9cae470e
1209b8da8b
d5e0de68d2
f05a16ac2f

Reviewed By: yns88

fbshipit-source-id: 84bbb6008f28618a3adbc701a9d46aa177c33135
2020-09-18 06:03:20 -07:00
Thomas Orozco
f93426a8c8 mononoke/gotham_ext: force compressed streams to send data every so often
Summary:
Compressed responses from LFS are slower than they should right now. Normally,
we'd expect something along the lines of normal response time + compression
time, but right now it's a lot more than this.

The reason for this is that our compressed streams are eager, i.e. they will
consume and compress as much of the underlying stream as possible before
sending off the data. This is problematic for LFS, because we try very hard to
serve everything out of RAM directly (and very often succeed), so that means
we compress the whole stream before sending it off.

This means we might spend e.g. 500ms compressing (this is how long it takes
zstd to compress the object I was testing on, which is a ~80MiB binary that
compresses down to 33% of that), and _then_ we'll spend some time transferring
the compressed data, when we could have started transferring immediately while
we were compressing.

To achieve this, let's simply tell our compressed stream to stop waiting for
more data once in a while (every 4 MiB, which seems very frequent but actually
really isn't).

Reviewed By: StanislavGlebik

Differential Revision: D23782756

fbshipit-source-id: a0d523d84f92e215eb366f551063383fc835fdd6
2020-09-18 05:39:38 -07:00
Thomas Orozco
05e9fa3a29 mononoke/gotham_ext: remove Brotli support
Summary:
I saw this throw the LFS server into an infinite loop when I tested it. We're
not using this right now, so I'm not investing time into root-causing the
issue, and instead let's just take this out.

Reviewed By: StanislavGlebik

Differential Revision: D23782757

fbshipit-source-id: f320fc72c3ff279042c2fe9fcb9c4904e9e1bfdf
2020-09-18 05:39:38 -07:00
svcscm
755a37ab46 Updating submodules
Summary:
GitHub commits:

82c95581c8
b0e7bef6f3
e193e55c87
5c7de7b4be
8ecccf04e3
6b25560774
c4b3de1fb3
0bfa39a53e
8513a99561
76c040e8fa
54ad8f05fc
01551be8a7

Reviewed By: yns88

fbshipit-source-id: 59332a8bec8ada9eedea2952e845e1399e13ff70
2020-09-18 04:58:43 -07:00
Lukas Piatkowski
78d30ad17f eden/edenapi and mononoke integration tests: add edenapi/tools to getdeps and use them in tests (#51)
Summary:
Pull Request resolved: https://github.com/facebookexperimental/eden/pull/51

This diff extends capabilities of CargoBuilder in getdeps so that individual manifests can be build even without workspaces. Thanks to that a build for edenapi/tools can be made and its artifacts can be used in mononoke integration tests.

Reviewed By: StanislavGlebik

Differential Revision: D23574887

fbshipit-source-id: 8a974a6b5235d36a44fe082aad55cd380d84dd09
2020-09-18 04:20:56 -07:00
Liubov Dmitrieva
d94f354708 implement a command to reclaim workspaces
Summary: The command will be provided as hint if username changes has been detected in configuration.

Reviewed By: markbt

Differential Revision: D23769942

fbshipit-source-id: 3e84ecef6dd68267022b92bf10f5e68dfc07f270
2020-09-18 04:18:11 -07:00
Stanislau Hlebik
2848d92b48 mononoke: sort paths in premerge delete
Summary:
This makes deletion commits a bit less confusing, but it also have another
benefit.
Without the sort some directories might have been changed multiple times in
deletion commits e.g. if a directory had 5 files, and these files were deleted
in 5 different deletion commits then the directory would be changed 5 times.
This was not good, because it made some data derivation slower (in particular,
fastlog), because it had to regenerate the same data over and over again.

Reviewed By: ikostia

Differential Revision: D23780066

fbshipit-source-id: d5c52b13f58dcaf2012d9c12bf77398561cf10ef
2020-09-18 04:04:51 -07:00
Alex Hornby
753c986a93 mononoke: remove get_fsnode_id
Summary:
Spotted a TODO in fsnode get_fsnode_id.  There was only one user of the function, which didn't really need to call it as it had the blob already.

As well as being a bit tidier this also saves a clone of the fsnode.

Reviewed By: StanislavGlebik

Differential Revision: D23758689

fbshipit-source-id: e0a8c124c929fda3af4c96a76d441a79e5bfbd5b
2020-09-18 02:52:47 -07:00
Alex Hornby
0f5809ad16 mononoke: save memory in walker state by not memoing hash
Summary:
Save memory in walker state tracking by not memoing hash values. For large repos this is significant.

I was expecting a small slowdown from this, but so far looks pretty much the same walk rate. Speculation: this may be due to the num cpus lock sharding fix in dashmap 3.11.10 which means there are many more shards than when the memo was tested with 3.11.9, so saving time inside locks is less significant.

Reviewed By: StanislavGlebik

Differential Revision: D23680550

fbshipit-source-id: 351b5ec39885fc30996207c7dccc22c749e30321
2020-09-18 02:52:47 -07:00
svcscm
c5664fb1d4 Updating submodules
Summary:
GitHub commits:

a3076a7337

Reviewed By: yns88

fbshipit-source-id: 0ff9a6b17c0e4adb432493b2223e57688b999dc7
2020-09-18 02:17:14 -07:00
Arun Kulshreshtha
6e5f95067a gotham_ext: move content streams into separate module
Summary:
The `gotham_ext::response` module was getting a bit large, so this diff moves `ContentMeta`, `ContentStream`, and `CompressedContentStream` into a new submodule, alongside the contents of the old `content_encoding` module. This way, the `response` module remains entirely centered around the `TryIntoResponse` trait (and the various body structs that implement that trait).

Later diffs in this stack will be adding an additional layer between the content streams and the body structs, at which point it probably doesn't make sense to have these right next to each other. Splitting them out now will allow for better code organization going forward.

Reviewed By: krallin

Differential Revision: D23777492

fbshipit-source-id: 86e598dcb37578d3b22217a2a65f1bde84d72215
2020-09-18 01:34:04 -07:00
svcscm
12b0140d9c Updating submodules
Summary:
GitHub commits:

97792904df
c268628c25

Reviewed By: yns88

fbshipit-source-id: 1e09131dd3e1e97da5dd5d8a2d91098be5eddffa
2020-09-18 01:34:03 -07:00
svcscm
85ec767ed5 Updating submodules
Summary:
GitHub commits:

42ae513566
50e8c130cd
ff4d0c6cea
1a29c3d8da

Reviewed By: yns88

fbshipit-source-id: d2ab01d4d48a7dd03647042f45e542e546e7fe0d
2020-09-17 18:37:56 -07:00
Saurabh Singh
a703572183 fb-scratch: stop building the package
Summary:
`scratch` provided by `fb-scratch` was replaced by `mkscratch` provided by
the Mercurial package. See linked task for details.

Reviewed By: quark-zju

Differential Revision: D23773840

fbshipit-source-id: de0582069ce1a09c3cd9fc6b02d2d149f70d0d78
2020-09-17 18:32:19 -07:00
Durham Goode
41b0cf71e8 mutation: remove exponential algorithm from obsoletenodes
Summary:
Computing all successorsets is exponential with the number of splits
that have happened. This can slow things down tremendously.

The obsoletenodes path only needs to know "is there a visible successor" in
order to determine if a draft commit is obsolete. Let's use allsuccessors
instead of successorset.

Reviewed By: quark-zju

Differential Revision: D23771025

fbshipit-source-id: 666875e681c2e3306fc301357c95f1ab5bb40a87
2020-09-17 18:29:40 -07:00
Zeyi (Rice) Fan
923bac59b2 allow disabling kerberos check via configuration
Reviewed By: wez

Differential Revision: D23717373

fbshipit-source-id: a65106852d995974b557f058bec9ef4774ee01ea
2020-09-17 18:04:48 -07:00
svcscm
5665c202e9 Updating submodules
Summary:
GitHub commits:

6e015653e9
525612795a
9b8eb600c7

Reviewed By: yns88

fbshipit-source-id: 4e56763549f5938c89fab3803ee62c506aaf5344
2020-09-17 17:59:33 -07:00
Liubov Dmitrieva
57e4688aa4 introduce commands for renaming workspaces and rehost workspace
Summary:
`hg cloud join --merge` doesn't really solve rename problem because it doesn't
preserve:

1. old heads
2. history

I added a proper API in Commit Cloud Service for renaming workspaces and now we
can use it to provide a rename command and 'rehost' command which is a version
of renaming to bind the current workspace to the current devserver.
Rehost command is meant to be used after dev server migration. I am plannig to
add this to the dev server migration wiki.

Next diff will cover how we can use the rename command to fix a username in workspaces names after username has been changed.

Reviewed By: markbt

Differential Revision: D23757722

fbshipit-source-id: dc11cb226eb76d347cdab70b3c72566448dcd098
2020-09-17 17:45:05 -07:00
Durham Goode
f68177a983 treemanifest: flush shared stores when flushing local stores
Summary:
The Rust contentstore has no way to flush the shared stores, except
when the object is destructed. In treemanifest, the lifetime of the shared store
seems to be different from with files and we're not seeing them flushes
appropriately during certain commands. Let's make the flush api also flush the
shared stores.

Reviewed By: quark-zju

Differential Revision: D23662976

fbshipit-source-id: a542c3e45d5b489fcb5faf2726854cb49df16f4c
2020-09-17 14:27:50 -07:00
Durham Goode
84f72950ad treemanifest: make Python repack work with Rust treemanifest stores
Summary:
Now that treemanifests can use Rust stores, we need to update the
Python repack code to support that.

Reviewed By: quark-zju

Differential Revision: D23662361

fbshipit-source-id: c802852c476425eef74181ead04f70b11ff9a27c
2020-09-17 14:27:50 -07:00
Durham Goode
7aca64d8f9 treemanifest: integrate treemanifest prefetch with Rust store prefetch
Summary:
This makes Rust contentstore prefetch route through the remotetreestore
prefetch logic to reach the lower level tree fetching, and makes the higher
level Python fetching route through the Rust contentstore to do prefetching. The
consequence of this is that there's a relatively unified code path for both
Python and Rust, and hopefully we can delete the janky Python bits once we're
completely migrated to Rust.

The way this diff works is pretty hacky. The code comment explains it, but the
tl;dr is that Rust prefetch works by providing references to the mutable stores,
while Python prefetch assumes they are stored and accessible on the repository.
Inorder for the old python tree fetching logic to work with both models, we
monkey patch the Rust mutable store references we receive into the function that
will later be called to request the repositories mutable stores. This is awful.

A cleaner fix might be to thread the mutable stores all the way through the
python fetching logic, then move the Python accessing of the repositories
mutable stores to the higher layer, near where Rust would provide it. That's a
lot of code churn though, so I'd like to do that in a later diff once we stop
using the non-rust logic entirely.

Reviewed By: quark-zju

Differential Revision: D23662351

fbshipit-source-id: 76007b6089ddf0e558581cd179a112311f8b58e3
2020-09-17 14:27:49 -07:00
Durham Goode
c268c02298 treemanifest: refactor remotetreestore prefetching
Summary:
As part of moving treemanifest to use the Rust tree store, we need to
move prefetch to be able to be initiated from Rust. Rust requires a certain
signature for the prefetch function which accepts multiple keys.

In preparation for this requirement, let's refactor the current remotetreestore
fetching path to have a separate function. In a later diff we'll route Rust
prefetch requests through this function so the python and rust code shares the
same base tree discovery logic.

Reviewed By: quark-zju

Differential Revision: D23662196

fbshipit-source-id: 127045c279dc22914f7e1f3a619f6620586010ba
2020-09-17 14:27:49 -07:00
Durham Goode
a88287fd45 rebase: move inmemory fallback outside of except
Summary:
Python 3 reports exceptions in except clauses by showing the original
exception, then saying another exception happened during the original exception
and hiding the second exception stack trace.

To make update exceptions more debuggable, let's move the handling outside the
except clause.

Reviewed By: quark-zju

Differential Revision: D23761667

fbshipit-source-id: bec758a3c7c0b88a5a569f794730058bf6f1eaad
2020-09-17 14:21:49 -07:00
svcscm
77442dd570 Updating submodules
Summary:
GitHub commits:

aa5b306ce4
0d92fd0313
096536b137
b8c09f2c3b

Reviewed By: yns88

fbshipit-source-id: ff714210316e7ab1e177731d91c18cd6466c438c
2020-09-17 13:53:30 -07:00
Chad Austin
fdc83eaa75 rename EdenInstance.get_thrift_client to get_thrift_client_legacy
Summary:
Rather than switch all of Eden at once to the thrift-py3 client,
rename get_thrift_client to get_thrift_client_legacy so uses of the
new client can be introduced piecemeal.

(I did try migrating everything at once but it's been quite painful.)

Reviewed By: fanzeyi

Differential Revision: D22423399

fbshipit-source-id: 9e6d938b90fff9fc3266ba20bc77e880e7f5b1aa
2020-09-17 13:25:00 -07:00
svcscm
c64ee4c314 Updating submodules
Summary:
GitHub commits:

2cc39c81a4
d0ee2d31a4
7690bf6b0e
829f75ded8
d5c788f4c1
b9750c7c3c
1cf06f76dd
49c01fccf2
612fc34d70
c2c96af540
8e217fa90c
df966d4ffc
e45cb21726
f2b05dc5e8

Reviewed By: yns88

fbshipit-source-id: 765c8b0fce704a6d3503392df73714b3054b1392
2020-09-17 12:17:32 -07:00
Liubov Dmitrieva
94761154da reduce repetitions in the http client code
Summary: Better engineering: reduce repetitions in the http client code

Reviewed By: markbt

Differential Revision: D23731119

fbshipit-source-id: cf1cb939231fa38ae23f4a2d86a867c3881d16b4
2020-09-17 11:07:07 -07:00
Liubov Dmitrieva
62c2bd52c9 detect changed usernames in configs
Summary:
This is the initial step to track username when the workspace has been created and provide users an appropriate advice how to fix their workspace names if the username in configuration has been changed

in another diff I will provide the advice itself

I will build rename workspace command based on D23703790

Reviewed By: markbt

Differential Revision: D23730312

fbshipit-source-id: a49dabba7ec4acf35f6ff99ed23cff5d6f46e2e4
2020-09-17 11:07:06 -07:00
Jun Wu
813647f917 template: remove rev:node legacy template
Summary:
`experimental.template-new-builtin = true` has been rolled out to 100%
and seems to work fine. Therefore, remove code that supports
`template-new-builtin = false`.

Reviewed By: singhsrb

Differential Revision: D23745353

fbshipit-source-id: 178af269381c9d3e20522ba4484d63051589342b
2020-09-17 10:58:39 -07:00
Durham Goode
7c8f9167e1 tests: avoid turning $TESTTMP into a repo
Summary:
Some tests run `hg init` right inside the test directory, turning the
entire $TESTTMP into a repo. In future diffs we'll start to rely more on hgcache
being present during tests, which creates a directory in $TESTTMP. Let's make
sure all repos are created as sub-directories of $TESTTMP.

Reviewed By: kulshrax

Differential Revision: D23662077

fbshipit-source-id: 2b2b974ebfd1bd19ad6acd1ebe3e68dd03a09869
2020-09-17 10:16:03 -07:00
Durham Goode
cbe4499da8 treemanifest: add option for instantiating a Rust treemanifest store
Summary:
Adds the initial condition and creation logic for creating a Rust
treemanifest store. Fetching and some other code paths don't work just yet, but
subsequent diffs enable more and more functionality.

Reviewed By: quark-zju

Differential Revision: D23662052

fbshipit-source-id: a0e7090c9a3bf27a7738bf093f2d4eb6098b1ed6
2020-09-17 10:16:03 -07:00
Durham Goode
556ae539fa repack: prevent Rust repack from repacking an entry twice
Summary: The old logic would just double pack some bits. Let's prevent that.

Reviewed By: xavierd

Differential Revision: D23661933

fbshipit-source-id: 155291fa08ec2c060619329bd1cb6040769feb63
2020-09-17 10:16:03 -07:00
Durham Goode
6ae1cf9619 revisionstore: add refresh function
Summary:
The rust pack stores currently have logic to refresh their list of
packs if there's a key miss and if it's been a while since we last loaded the
list of packs. In some cases we want to manually trigger this refresh, like if
we're in the middle of a histedit and it invokes an external command that
produces pack files that the histedit should later consume (like an external
amend, that histedit then needs to work on top of).

Python pack stores solve this by allowing callers to mark the store for a
refresh. Let's add the same logic for rust stores. Once pack files are gone we
can delete this.

This will be useful for the upcoming migration of treemanifest to Rust
contentstore. Filelog usage of the Rust contentstore avoided this issue by
recreating the entire contentstore object in certain situations, but refresh
seems useful and less expensive.

Reviewed By: quark-zju

Differential Revision: D23657036

fbshipit-source-id: 7c6438024c3d642bd22256a8e58961a6ee4bc867
2020-09-17 10:16:03 -07:00
Durham Goode
055fc0d20b packstore: avoid substracting from an Instant
Summary:
Instants do not represent actual time and can only be compared against
each other. When we subtracted arbitrary Durations from them, we run the risk of
overflowing the underlying storage, since the Instant may be represented by a
low number (such as the age of the process).

This caused crashes in test_refresh (in the next diff) on Windows.

Let's instead represent the "must rescan" state as a None last_scanned time, and avoid any arbitrary subtraction. It's generally much cleaner too.

Reviewed By: quark-zju

Differential Revision: D23752511

fbshipit-source-id: db89b14a701f238e1c549e497a5d751447115fb2
2020-09-17 10:16:03 -07:00
Viet Hung Nguyen
dae0b4aadc mononoke/repo_import: include small repo call sign in SmallRepoBackSyncVars struct
Summary: Previously, we used the call sign of the repo we import when checking any of the if the commits are parsed by Phabricator. However, we also use this callsign for other repos when checking Phabricator, which is an incorrect implementation. E.g. if fbsource back-syncs to ovsource, we would have used FBS callsign when checking Phabricator for both fbsource and ovrsource, but we should use OVRSOURCE callsign for repo ovrsource. This diff corrects this implementation by saving the callsigns of the small repos in their SmallRepoBackSyncVars.

Reviewed By: StanislavGlebik

Differential Revision: D23758355

fbshipit-source-id: b322acb2ec589eabed5362bfd6b963e2dd1d6ea9
2020-09-17 09:23:27 -07:00
Wez Furlong
ec25f05c6d eden: allow ECHILD to be non-fatal in SpawnedProcess
Summary:
I had originally make the logic around ECHILD very strict,
thinking it impossible to have a situation where it may arise,
but it turns out that our daemonization makes this happen all
the time.

This commit treats an ECHILD return from waitpid as equivalent
to a success waitpid result and success child process termination.

Reviewed By: chadaustin

Differential Revision: D23683107

fbshipit-source-id: 7867d636afd8ee79b9f100454f84e7ef480109d8
2020-09-17 09:08:58 -07:00