Commit Graph

56606 Commits

Author SHA1 Message Date
Jun Wu
32d3077147 windows: use getfstype from bindings.fs
Summary: A left over of D20313385.

Reviewed By: xavierd

Differential Revision: D20423035

fbshipit-source-id: 0dc5aae3660725ada8e1b311bb82e6429b001289
2020-03-12 10:16:15 -07:00
Arun Kulshreshtha
5c023bb37d treemanifest: add BFS fetching over SSH
Summary:
This diff adds client-side support for the new `designatednodes` mode of the `gettreepack` wireproto command (implemented in D20307442), which allows fetching an exact set of specified tree nodes. This enables the performance benefits of BFS tree fetching over SSH (whereas this sort of fetching was previously only possible over HTTPS via EdenAPI).

To allow us to smoothly control the rollout of this feature, it is gated behind the `treemanifest.ondemandfetch` config option. In theory, this should not be needed since the client will check that the server supports `designatednodes` before attempting to do on-demand fetching, but if users report issues it's nice to have a killswitch.

Reviewed By: quark-zju

Differential Revision: D20382825

fbshipit-source-id: f9aef3fdae08ae84a9720deead3549fe2fba0b9b
2020-03-12 09:59:47 -07:00
Thomas Orozco
86ad431e16 mononoke/fastreplay: add an replay_outcome_permille counter
Summary:
Similarly to D20418610, let's keep track of request failure rates in ODS
counters so they can be health-cheked by SF.

Reviewed By: farnz

Differential Revision: D20418705

fbshipit-source-id: 1d281e06c59414a0610836106370592596b47e39
2020-03-12 08:18:11 -07:00
Thomas Orozco
b60606cf9a mononoke/request_handler: log success permille to its own counter
Summary:
Earlier, I added counters for successes and failures, but unfortunately
canaries do not allow for tracking formulas, so I also need the actual request
success rate logged.

More broadly speaking, it probably does make sense to have a very high level
"success rate" counter to query anyway. This adds it.

Reviewed By: farnz

Differential Revision: D20418610

fbshipit-source-id: 94f115f8201aef4f6498f4da98e170194186f0f8
2020-03-12 08:13:09 -07:00
svcscm
d0f2684946 Updating submodules
Summary:
GitHub commits:

5fa6ff45d5

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: f1fce765904026bf07861a0ec744734fc23432cb
2020-03-12 06:40:41 -07:00
Thomas Orozco
472362fd6c treemanifest: comma-terminate directories list in gettreepack
Summary:
We cannot differentiate an empty list from a list containing the empty path only. This fixes that.

See D20309700 earlier in this stack for the server-side bits.

Reviewed By: quark-zju

Differential Revision: D20309699

fbshipit-source-id: 02efc747c3c5e2774f949ba0a6370169b55f3cf3
2020-03-12 06:35:34 -07:00
Thomas Orozco
06d11938cf mononoke/hgproto: expect comma-terminated list of directories
Summary:
We need to differentiate the empty directory from no directories. Adding a
trailing comma after each directory instead of separating them achieves that.

Reviewed By: StanislavGlebik

Differential Revision: D20309700

fbshipit-source-id: 387ec477560968392de0a9631d67ccb591bd3cab
2020-03-12 06:35:34 -07:00
Thomas Orozco
87491d14a7 mononoke/repo_client: add designated manifest fetching in gettreepack
Summary:
This will allow the hg client to do tree fetching like we do in the API Server,
but through the SSH protocol — i.e. by passing a series a manifest ids and
their paths, without recursion on the server side through gettreepack.

Reviewed By: StanislavGlebik

Differential Revision: D20307442

fbshipit-source-id: a6dca03622becdebf41b264381fdd5837a7d4292
2020-03-12 06:35:34 -07:00
Stanislau Hlebik
ba871d3bdc xdiff: allow rendering diff for large files
Summary:
The goal of the stack is to support "rendering" diffs for large files in scs
server. Note that rendering is in quotes - we are fine with just showing a
placeholder like "Binary file ... differs". This is still better than the
current behaviour which just return an error.

In order to do that I suggest to tweak xdiff library to accept FileContentType
which can be either Normal(...) meaning that we have file content available, or
Omitted, which usually means the file is large and we don't even want to fetch it, and we
just want xdiff to generate a placeholder.

Reviewed By: markbt, krallin

Differential Revision: D20389226

fbshipit-source-id: 0b776d4f143e2ac657d664aa9911f6de8ccfea37
2020-03-12 04:27:23 -07:00
Kostia Balytskyi
30e39de418 edenscm: add a separate path type for infinitepush writes
Summary:
In order to support gradual rollout of infinitepush for other backends (e.g. Mononoke), we need the ability to route read vs write requests separately. To achieve this, we need a separate path type: `infinitepush-write` (kind of like `default-push`, the naming inconsistency is a little unfortunate, as I don't want to use `infinitepush-push`).

The desired behavior of the new path type is as follows:
- takes precedence over `infinitepush` path when the user does `hg push -r . --to scratch/bla`
- replaces `infinitepush` path when the user does `hg push infinitepush -r . --to scratch/bla`
- absence of this path means draft pushes will go to `infinitepush` path
- draft pulls always go to `infinitepush` path, and *there's no fallback to `infinitepush-write`*
- commit cloud always talks to `infinitepush-write`, if it is present (meaning that commit cloud pulls do go to `infinitepush-write` path
  - this is done, as commitcloud uses infinitepush paths to also check whether something is backed up
  - and also, commitcloud may need to pull very soon after something has been pushed

Reviewed By: quark-zju

Differential Revision: D20368158

fbshipit-source-id: 59db174cebbf2b48765dff37bc93aad176c2d7c1
2020-03-12 03:22:12 -07:00
svcscm
7fcd49242c Updating submodules
Summary:
GitHub commits:

31c8155517
47651305b1

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: e42381f1706e8c4ba665fc4f509465ab939c8faa
2020-03-12 01:33:25 -07:00
Yedidya Feldblum
a55282e5fd Require callers to pass NetworkSocket to TAsyncSocket
Summary: [Thrift] Require callers to pass `NetworkSocket` to `TAsyncSocket` instead of relying on `TAsyncSocket` doing the conversion.

Reviewed By: vitaut

Differential Revision: D19800150

fbshipit-source-id: f2b8e76fb16e187810844d8d98654e975cf8dd13
2020-03-11 23:45:16 -07:00
Ratnadeep Joshi
8e4b04107c Add an option to mount a checkout read-only
Summary: Added option to mount command

Reviewed By: chadaustin

Differential Revision: D20256352

fbshipit-source-id: e52fbd10f318221777b7e2d21ed9ba0a17ce1687
2020-03-11 21:38:48 -07:00
svcscm
1beb826aae Updating submodules
Summary:
GitHub commits:

069e1dfd48
7ec76e3870
723f2001e8
51fef66e70
2aaaa8b743
858e8b11ba
e56b53951d
a2c8a21b8f

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: d4bf034a0244c2c8d26e1b947a72c6ad387db15e
2020-03-11 21:21:12 -07:00
Jun Wu
5fd51a48d2 changelog: extract some logic to methods
Summary: Those functions are reused in in a future diff.

Reviewed By: sfilipco

Differential Revision: D20367838

fbshipit-source-id: 944babf8c02f0560f8ac8ca5d7c4263432032715
2020-03-11 20:37:30 -07:00
Jun Wu
ffacd3a857 pydag: add new APIs
Summary: Expose the newly added APIs to Python.

Reviewed By: sfilipco

Differential Revision: D20367839

fbshipit-source-id: 856365513e0ff2010a8776c64ce6198d02953dc8
2020-03-11 20:37:30 -07:00
Jun Wu
194b38385a nameset: add a way to convert between NameSet and SpanSet
Summary:
This will be used in the Python world for legacy reasons. It shouldn't be used
in new Rust node.

To use it, the name `LegacyCodeNeedIdAccess` has to be used so we can do a code
search to find all users of it.

Reviewed By: sfilipco

Differential Revision: D20367834

fbshipit-source-id: 9b93a29f1461ce24bba6f31a2bbb1f327e216c6d
2020-03-11 20:37:30 -07:00
Jun Wu
eef56d9c5b namedag: add a sort API
Summary: This will be useful to actually sort commits.

Reviewed By: sfilipco

Differential Revision: D20367835

fbshipit-source-id: 43bc7835277af3a14ef323ce34247e0c03878dc8
2020-03-11 20:37:29 -07:00
Jun Wu
2ecc0bb757 namedag: move "all" concept to DagSet
Summary:
The old "AllSet" implementation is not very practical - it does not support
iteration. Practically, the "all()" set comes from the DAG. Change the "all"
concept to a hint similar to "is_topo_sorted", and update the fast path
(intersection) accordingly.

Reviewed By: sfilipco

Differential Revision: D20367837

fbshipit-source-id: fdbf370897c93058bfcab0571c1f6fa4b99b0f6b
2020-03-11 20:37:29 -07:00
Jun Wu
ef1696b4db namedag: rename arc_map to snapshot_map
Summary: The word "snapshot" more accurately describes its purpose.

Reviewed By: sfilipco

Differential Revision: D20367836

fbshipit-source-id: c91a0bd402fa1718b5d805beedc0e062824c53d3
2020-03-11 20:37:29 -07:00
Wez Furlong
36d2d45ea7 eden: fix LFS cache size reported by eden du
Summary: Looks like an honest typo/copypasta

Reviewed By: xavierd

Differential Revision: D20401180

fbshipit-source-id: 544d96afc5b3e6365430641f73d1d2acc115b8d5
2020-03-11 20:06:31 -07:00
svcscm
a33fb3f0fe Updating submodules
Summary:
GitHub commits:

79a81c9baa
8c1bf36804
67a4344606
fbb0c170af
2eb0be9f68
2d9efc9ab2
a4fad3a468
0d6464b601
a5f69715d1
a7f1cb2e11

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: ecfac74344c501b83bb5cc51df87fc9183e7a369
2020-03-11 19:58:48 -07:00
Yixian Jiang
a72245ef36 clean sigar build dependency
Summary:
Clean the sigar build dependency completely under:
- fbcode/fbzmq/public_tld/build/...
- fbcode/openr/public_tld/build/...

Delete files:
- fbcode/opensource/fbcode_builder/manifests/sigar
- fbcode/opensource/fbcode_builder/specs/sigar.py

Reviewed By: steven1327

Differential Revision: D20376067

fbshipit-source-id: 3321a14df2551525acee605028ef06a04cda7c6a
2020-03-11 19:13:20 -07:00
Adam Simpkins
03873d9870 suppress exceptions that occur in sparse telemetry tracking
Summary:
The `sparse` extension's dirstate tracking code attempts to read dirstate data
after the command has executed.  For commands that didn't require accessing
the dirstate, this can end up reading it for the first time, and can this fail
in some circumstances.  Ignore all errors that occur when trying to compute
this telemetry, so they don't break the main command functionality.

In particular, we see reproducible scenarios where `hg` crashes due to this
error when invoked by watchman to compute the list of files changed between
two commits.  Watchman currently always invokes Mercurial with `HG_PENDING`
enabled, and this can cause dirstate loading to fail when there is pending
data.

Reviewed By: quark-zju

Differential Revision: D20402221

fbshipit-source-id: 782d9b6eff26d50ef20f080c0cbcbc852e425146
2020-03-11 18:34:09 -07:00
svcscm
d8a9b8067c Updating submodules
Summary:
GitHub commits:

23db137688
f4c6d8e6f6
331e6199df
372f2f41d0

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: e44bad3c3388883c0992e633d4458cb6ebeadc23
2020-03-11 17:47:05 -07:00
Jun Wu
a7dedfdfd6 fsinfo: remove old getfstype implementation
Summary: Remove the old Python, C implementation of getfstype.

Reviewed By: xavierd

Differential Revision: D20313385

fbshipit-source-id: 475c73343aae2fa2f5ad898c7b0879bfa2c80e93
2020-03-11 17:35:41 -07:00
Jun Wu
c5c75c9f59 fsinfo: autocorrect "" to "."
Summary:
Without this:

  In [3]: util.getfstype('')
  IOError: [Errno 2] No such file or directory (os error 2)

And there is a code path hitting this:

  File "edenscm/mercurial/util.py", line 1483, in checknlink
    fstype = getfstype(os.path.dirname(testfile))
		# testfile = '.'
	  # os.path.dirname(".") = ""

The old implementation works fine for an empty path:

	In [2]: m.util.getfstype('')
  Out[2]: 'eden'

So let's make the new Rust implementation consistent.

Reviewed By: xavierd

Differential Revision: D20313387

fbshipit-source-id: 258c424a3e8a796d983e20b0d4656e8e3f413706
2020-03-11 17:35:40 -07:00
Jun Wu
ea59a506f1 fsinfo: expose fstype via bindings.fs.fstype
Summary: Expose the Rust fstype implementation so we can remove C and Python code.

Reviewed By: xavierd

Differential Revision: D20313390

fbshipit-source-id: 931b4f6bc8c4b81f30bfea06d055fae3c677eedd
2020-03-11 17:35:40 -07:00
Jun Wu
61bebcaacc fsinfo: try harder to get fuse fs type
Summary: Similar to D13982877. Try to get names like "fuse.ntfs".

Reviewed By: farnz

Differential Revision: D20313392

fbshipit-source-id: 8363d3d92843e6afb53a0003950be083034bd841
2020-03-11 17:35:39 -07:00
Jun Wu
13374f9d74 fsinfo: drop most type parameters
Summary:
Only keep type parameters at the top-level function.
This reduces the binary size and speeds up rustc.

Reviewed By: xavierd

Differential Revision: D20313388

fbshipit-source-id: 29d77731ff462fee1f1bb9f234601e3430198ae7
2020-03-11 17:35:39 -07:00
Jun Wu
c83006002c fsinfo: return unknown on unsupported platforms
Summary: This makes the code a bit more portable.

Reviewed By: xavierd

Differential Revision: D20313389

fbshipit-source-id: 080538939fa4d2d72e5905f23ad9be987d952748
2020-03-11 17:35:38 -07:00
Jun Wu
9cdc818915 fsinfo: drop "repo" from method names
Summary:
Rename the main method to "fstype". The API has no relation with repo.
So let's rename it.

Reviewed By: xavierd

Differential Revision: D20313386

fbshipit-source-id: 80dd1231ccccfe945150b117b151bce773f0dfeb
2020-03-11 17:35:38 -07:00
Jun Wu
951c8ab082 fsinfo: backport from telemetry
Summary: The fsinfo crate provides the "filesystem type" information.

Reviewed By: xavierd

Differential Revision: D20313391

fbshipit-source-id: f717f5edb32957d59d03090117cfdb8123f03933
2020-03-11 17:35:37 -07:00
Xavier Deguillard
dafc8a15f6 pyworker: reduce flakiness of the quickcheck tests
Summary:
Thes test proved to be a bit flaky due to some invalid input from quickeck,
let's filter these cases and ask quickcheck for different input.

Reviewed By: quark-zju

Differential Revision: D20397604

fbshipit-source-id: cc97bef0e286009f1394c7aa2c0429d1e1b1c8c2
2020-03-11 17:17:21 -07:00
Adam Simpkins
55a2324219 skip automigration if the repository has an abandoned transaction
Summary:
A common cause for automigration failure is if the repository has an abandoned
transaction.  Just ignore the error and skip migration if this happens.
Otherwise important read-only commands (like `hg debugedenimporthelper`)
refuse to even start in this situation.

Reviewed By: farnz

Differential Revision: D20394546

fbshipit-source-id: abb75fe455e9ee815032431705df7f38ee50283a
2020-03-11 16:25:50 -07:00
Adam Simpkins
8e78254e55 fix a ProgrammingError bug in visibility migration
Summary:
The code to disable visibility was writing to files without a transaction,
which causes a `ProgrammingError` to be thrown when using metalog.

Reviewed By: farnz

Differential Revision: D20394547

fbshipit-source-id: c529de84ed7b127df18e7f60572cece2169dc520
2020-03-11 16:25:50 -07:00
Adam Simpkins
983a26875d update debugedenimporthelper's debug utilities to use ui.write()
Summary:
Print output using `repo.ui.write()` rather than directly using `print()` or
`sys.stdout`.  This is needed to make the output visible during the
Mercurial `.t` tests.

Reviewed By: farnz

Differential Revision: D20394549

fbshipit-source-id: 7ee50fe26e98c1c34b74ce054d2187050c42b2f3
2020-03-11 16:25:50 -07:00
Adam Simpkins
1c6360fe73 add more annotations for edenscmnative.parsers
Summary:
Add type annotations for the `edenscmnative.parsers` methods that handle
serializing and deserializing the dirstate data.

Reviewed By: quark-zju

Differential Revision: D19958218

fbshipit-source-id: 6e20efbc1b0a6ba15b297e47a1e6eec8ed47ee52
2020-03-11 16:21:30 -07:00
svcscm
1b6e3601f6 Updating submodules
Summary:
GitHub commits:

b2556c147e
efc26b88de
ab3ad1a32d
66f8db8b98
37a635cfe6
c1936d9cf0
0326d901cb
9727434d08
c2bf46a72c

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: f11a81df663a41e7a66cce9915979cbb2abac2ec
2020-03-11 16:07:54 -07:00
Xavier Deguillard
f466037b4b revisionstore: fix memcache test flakiness
Summary:
Since the mocked memcache is shared between the tests, we need to make sure the
keys used by the tests are different, otherwise they are just caching each
others data.

Reviewed By: ikostia

Differential Revision: D20388783

fbshipit-source-id: 0f2f926e0ffe0e52e55291e46142808ce0921288
2020-03-11 15:58:03 -07:00
Jun Wu
97e9b81ba5 indexedlog: remove compiler warnings on Windows
Summary:
Some `use`s are not used on Windows. The code was also formatted using the
latest rustfmt.

Reviewed By: xavierd

Differential Revision: D20379704

fbshipit-source-id: ffadcd68e4e0440dcbd2a4e1ad8532b47a9d83e2
2020-03-11 15:54:19 -07:00
Xavier Deguillard
c98b9cfff9 revisionstore: remove Arc from MetadataStore
Summary: Similarly to the ContentStore, remove the Arc from MetadataStore.

Reviewed By: quark-zju

Differential Revision: D20376838

fbshipit-source-id: 4321600b752c919b6d9fa7bdee6f6cb7ae083b10
2020-03-11 13:39:06 -07:00
Xavier Deguillard
7e704ec7fb revisionstore: remove the Arc from ContentStore
Summary:
The clients should use an Rc/Arc if they need the ability to clone it. This
makes it more obvious and reduces the number of pointer indirection.

Reviewed By: quark-zju

Differential Revision: D20376839

fbshipit-source-id: c56e7e8f89ab17727be621894c329e344a7f3adb
2020-03-11 13:39:05 -07:00
Pádraig Brady
79be195769 hg: make osutil.c PY_SSIZE_T_CLEAN
Summary:
From https://phab.mercurial-scm.org/D6198
Otherwise platform009 spits lots of dprecation warnings
breaking tests

Reviewed By: simpkins

Differential Revision: D20390703

fbshipit-source-id: c508176a39bdf80580aa2ba29d8c8b0834350815
2020-03-11 13:39:05 -07:00
Jun Wu
6a015a82fc add GitHub workflow for testing scm/lib crates
Summary:
Similar to the Mononoke CI, run tests on the open-source version of the Rust crates.
Crates that do not build are commented out with reasons.

`target-dir` is explicitly set so all crates share a single build cache.

This helps us capture issues with wrong versions specified in `Cargo.toml`, since
internally we use vendored crates, while externally `crates.io` is used.

Reviewed By: sfilipco

Differential Revision: D20376183

fbshipit-source-id: 8cf4df0c893c1119e07f950eaf398313e2efcc25
2020-03-11 12:00:16 -07:00
Mark Thomas
02cb819b35 debugnetwork: prevent 'hostname' output when quiet is set
Summary:
If `ui.quiet` is set, debugnetwork still ends up outputting the output from the
remote `hostname` command.  Prevent this from happening by redirecting the
output to a buffer and logging it separately through `ui.status`.

Reviewed By: quark-zju

Differential Revision: D20384651

fbshipit-source-id: 375687a8e75187a27ef30b441b2ac3a5c0823d00
2020-03-11 11:27:00 -07:00
Mark Thomas
036ab864c2 debugnetwork add --connection and --speed options to limit which tests are run
Summary:
Allow selective running of a subset of the tests by passing options.

* `--connection` runs only the tests for determining connectivity
* `--speed` runs only the speed tests.

Not specifying any option runs all tests.

Reviewed By: quark-zju

Differential Revision: D20384652

fbshipit-source-id: 197e07809bec28ab2ce3fa73cfef6be0fb0fd5b7
2020-03-11 11:26:59 -07:00
Jun Wu
4960709aa3 dag: do not depend on types
Summary:
The dag crate is designed to work with any kind of binary commit hashes (ex. bonsai,
git or hg). The only use of `types` is to convert from binary to hex. Since dag
already has its own `to_hex` logic in `VertexName`. Let's use that instead.

Reviewed By: sfilipco

Differential Revision: D20378447

fbshipit-source-id: 00ecb551ea927fdb60dd91e5e645064f23139bcd
2020-03-11 10:49:31 -07:00
Jun Wu
9bff661020 commands: add debugdifftree
Summary:
This command can be used to diff two trees and only print changed paths,
without changed file contents.

With a customized template it can also print changed flags, which can be useful
for watchman use-cases.

Reviewed By: sfilipco

Differential Revision: D20377436

fbshipit-source-id: dad79f1b891182fa612c446114f9daceb4ec5881
2020-03-11 10:42:21 -07:00
Jun Wu
48a3a695df revset: remove _destupdate and _destmerge
Summary: Those experimental revsets are not used in the past month. Remove them.

Reviewed By: sfilipco

Differential Revision: D20355671

fbshipit-source-id: 22d6053af01a56f23b7227b86ebe271aa2b42f41
2020-03-11 10:42:21 -07:00