Commit Graph

56422 Commits

Author SHA1 Message Date
svcscm
3146cbda30 Updating submodules
Summary:
GitHub commits:

aa62b3a7f0
fdc31858cb
87cae43033

Reviewed By: zpao

fbshipit-source-id: 1521d75d96803eb06b9dda5d12dbe3913edecfce
2020-03-17 05:00:52 -07:00
Mark Thomas
5666399fcf mutationstore: switch mutation entry timestamp from f64 to i64
Summary:
The mutation store stores entries with a floating-point timestamp.  This
pattern was copied from obsmarkers.

However, Mercurial uses integer timestamps in the commit metadata (the
parser supports floats for historical reasons, but only stores integer
timestamps).   Mononoke also uses integer timestamps in its `DateTime`
type.

To keep things simple, switch to using integer timestamps for mutation
entries.  Existing entries with floating point timestamps are truncated.

Add a new entry format version that encodes the timestamp as an integer.
For now, continue to generate the old version so that old clients can
read entries created by new clients.

Reviewed By: quark-zju

Differential Revision: D20444366

fbshipit-source-id: 4d6d9851aacb314abea19b87c9d0130c47fdf512
2020-03-17 04:18:44 -07:00
Mark Thomas
ac80212e8f mutationstore: remove mutation entry origins
Summary:
Tracking the origin of mutation entries did not prove useful, and just creates
an un-necessary overhead.  Remove the tracking and repurpose the field as a
version field.

Reviewed By: quark-zju

Differential Revision: D20444365

fbshipit-source-id: 65ff11ee8cfe77d5e67a83d03a510541d58ef69b
2020-03-17 04:18:44 -07:00
Zeyi (Rice) Fan
fff1c76996 make open calls from fuse high priority
Summary: This diff bumps the open call from FUSE to High priority (which is higher than any other blob open request atm). This has shown improvement on the user experience of EdenFS when it's importing many other things from other channels (thrift, etc.)

Reviewed By: chadaustin

Differential Revision: D20287389

fbshipit-source-id: 319bc44ef8be5c904d7cf0db7cc2f8be28b4760a
2020-03-17 02:31:25 -07:00
Zeyi (Rice) Fan
8e8cf7412c eden: enable HgQueuedBackingStore
Summary:
Replacing `HgBackingStore` with `HgQueuedBackingStore`.

This does not really improve anything except that all the caller of `getBlob`/`getTree` on this store is generating a `HgImportRequest` and getting a `SemiFuture` from the Promise associated with the request back.

Reviewed By: chadaustin

Differential Revision: D19184822

fbshipit-source-id: a8aef6b0d7392a6c407d311e8e1982754e736e9f
2020-03-17 02:31:24 -07:00
Zeyi (Rice) Fan
1bcaac2f19 eden: add HgQueuedBackingStore that implements a naive queue & worker
Summary: This diff implements `HgQueuedBackingStore` that uses `HgImportRequestQueue` to provide SCM data importing with priorities. This can allow us to customize how we import things and batch importing.

Reviewed By: chadaustin

Differential Revision: D19184826

fbshipit-source-id: da579b5bbff0b1449e9689e2c0159d4a3a475a83
2020-03-17 02:31:24 -07:00
Zeyi (Rice) Fan
0521a41147 add HgImportRequestQueue
Summary: This diff adds `HgImportRequestQueue` that is responsible for managing incoming requests by their priorities. This queue is later used in the `HgQueuedBackingStore` to prioritize works to the workers of the backing store.

Reviewed By: chadaustin

Differential Revision: D20197069

fbshipit-source-id: 246bbc086054a8021226e9ba6ab26d3bf0cfb7a3
2020-03-17 02:31:24 -07:00
Zeyi (Rice) Fan
7f0b3a77d4 eden: add HgImportRequest to represent an Hg import request
Summary:
This class is used to represent an import request that will be used later in the queue implementation.

When the EdenFS needs to import a blob, it creates an instance of this request and send it to the worker. Then it waits for the promise associated with the request.

In the future, we should be able to change the owned `Promise` into a non-owned `SemiFuture` to a `Promise` somewhere else for merging repetitive import requests.

Reviewed By: chadaustin

Differential Revision: D19184824

fbshipit-source-id: 823aabbed1156acf6306b7aefc76580a540d310d
2020-03-17 02:31:23 -07:00
Zeyi (Rice) Fan
2da686d315 add priority to BackingStore interface
Summary: This diff adds `Priority` added in the previous diff to the `BackingStore` interface with the default value set to `Priority::Normal`.

Reviewed By: chadaustin

Differential Revision: D20197071

fbshipit-source-id: a92f1b49bb82e3478042e5e3b79b047d834755ea
2020-03-17 02:31:23 -07:00
Zeyi (Rice) Fan
2fad7731c1 introduce ImportPriority
Summary:
This diff introduces a `Priority` type for EdenFS. This type is used to pass along the priority of a request.

The priority class itself contains two parts, `kind` and `offset`. `kind` uses the first 4-bytes and the reset 12-bytes are used to store offset. The idea is that we can roughly assign a priority kind to most of the requests and offset is used to dynamically tweak the priority of some particular requests. For example, when we saw a process is generate millions of requests we can use this to express "normal priority but less important than other process's normal priority".

Reviewed By: chadaustin

Differential Revision: D20287652

fbshipit-source-id: 9a849fb6cc6ba5e443fea978d5b4dc3ab8ca906a
2020-03-17 02:31:22 -07:00
Adam Simpkins
b01b2783ad unbreak the build of eden/mononoke/repo_client
Summary:
D20444137 added a new use of `lfs_threshold`, and D20441264 removed this
variable.  These two diffs landed close to the same time without ever being
tested with both diffs together.

Reviewed By: StanislavGlebik

Differential Revision: D20484843

fbshipit-source-id: fd0f0837142cdb641892005a64fd14272da7d2b7
2020-03-17 00:09:35 -07:00
svcscm
c95353849c Updating submodules
Summary:
GitHub commits:

92695372ff
b6d04411f6

Reviewed By: zpao

fbshipit-source-id: 15643a55f946d20a51e9c8ed916246d5fd6a68b8
2020-03-17 00:09:35 -07:00
svcscm
48f1338955 Updating submodules
Summary:
GitHub commits:

72f1c29352

Reviewed By: zpao

fbshipit-source-id: 1f5e279ab4b38cd19b6bfcf196d0d506978ccea9
2020-03-16 21:06:08 -07:00
Durham Goode
cb2e471763 treestate: make treestate a hard requirement
Summary:
We want to delete all the non-treestate dirstate implementations. Let's
start throwing an exception if treestate is not enabled. We temporarily have a
bypass in case we break an important usecase in the process.

This also sets the standard new repo to be created in treestate mode, but adding
treestate to newreporequirements.

This was landed once as D19204621 but was backed out because eden backing repos
were using the odl formats and hadn't been upgraded. We fixed that, and now the
data shows ~10 people still using repos in this condition
(https://fburl.com/scuba/dev_command_timers/zxb5hsg2). Some of them are broken
repos, some are ancient eden repos and a simple eden rm and eden clone should
fix them, some are simply old non-eden repos that no one has run commands in in a while.

Reviewed By: xavierd

Differential Revision: D20472234

fbshipit-source-id: 509b4f22b6ac4741b205ef69decfb26e56aebaf8
2020-03-16 18:39:52 -07:00
Chad Austin
b2a8809a8b fix hg revert on conflicted file during conflict resolution
Summary: Fix a ValueError when reverting conflicted files during conflict resolution.

Reviewed By: simpkins

Differential Revision: D20254088

fbshipit-source-id: 0c121e8b4b7a3d97ce138a824a44e0d258019d0d
2020-03-16 18:35:20 -07:00
svcscm
d8ba478ec5 Updating submodules
Summary:
GitHub commits:

26839dd158
9df64974e0
e7b80db93a
488b1e6739
577fa41e8e
402e44eb88
655a3fc9b6

Reviewed By: zpao

fbshipit-source-id: 10edb45b32613976069c31a89a35a1bebcddcb20
2020-03-16 15:53:29 -07:00
Xavier Deguillard
deffd9a477 minibytes: address clippy warnings
Summary: Using ptr.add is shorter and preferred to ptr.offset.

Reviewed By: quark-zju

Differential Revision: D20452752

fbshipit-source-id: 1dc2fdbc392267d2d690673c10dcc161ecd00dfa
2020-03-16 14:58:22 -07:00
Xavier Deguillard
67c8cf22a3 hgtime: address clippy warnings
Summary:
These warnings are fairly trivial, as it recommends using single quote (char)
for single characters search instead of a double quote (str).

Reviewed By: quark-zju

Differential Revision: D20452408

fbshipit-source-id: b2951e133e57633a8e766536e22969fa9ac0ecee
2020-03-16 14:58:22 -07:00
Xavier Deguillard
bb30c40375 types: address clippy warnings
Summary:
Clippy had 3 sources of warnings in this crate:
 - from_str method not in impl FromStr. We still have 2 of them in path.rs, but
   this is documented as not supported by the FromStr trait due to returning a
   reference. Maybe we can find a different name?
 - Use of mem::transmute while casts are sufficient. I find the cast to be
   ugly, but they are simply safer as the compiler can do some type checking on
   them.
 - Unecessary lifetime parameters

Reviewed By: quark-zju

Differential Revision: D20452257

fbshipit-source-id: 94abd8d8cd76ff7af5e0bbfc97c1e106cdd142b0
2020-03-16 14:58:21 -07:00
Xavier Deguillard
82d3c7f544 configparser: address clippy warnings
Summary:
Clippy complains about 3 things:
 - Using raw pointers in a public function that is not declared as unsafe. This
   happens for C exported ones, this feels like a warning, so I haven't changed
   it.
 - Using .map(...).unwrap_or(<default value constructed>). The recommendation
   is to use .unwrap_or_default().
 - Single match instead of if let, the latter makes code much shorter.

Reviewed By: quark-zju

Differential Revision: D20452751

fbshipit-source-id: 8eeff7581c119c651ca41d8117f1f70f15774833
2020-03-16 14:53:45 -07:00
Stefan Filip
1fb5acf242 dag: use IdDagStore in IdDag with type parameter
Summary: Make IdDag storage generic by depending on IdDagStore.

Reviewed By: quark-zju

Differential Revision: D20471712

fbshipit-source-id: 3a2668f301758a3c880db35c9f0db6887ef1dd38
2020-03-16 14:41:41 -07:00
Stefan Filip
236292c0fd dag: add the GetLock trait
Summary: Used to generalize `get_lock` functionality.

Reviewed By: quark-zju

Differential Revision: D20471710

fbshipit-source-id: e44d5b22ecacdb653170ef83914354f521f82dfc
2020-03-16 14:41:40 -07:00
Stefan Filip
66436b4a3c dag: add the IdDagStore trait
Summary: Abstract the storage functionality required by IdDag.

Reviewed By: quark-zju

Differential Revision: D20449122

fbshipit-source-id: fc3c7d7b88d74f7a93670d310be2e680f35e8ce7
2020-03-16 14:41:40 -07:00
Stefan Filip
1239628ef8 dag: move IdDag storage details to the iddagstore module
Summary:
Right now the module has one implementation IndexedLogStore. The name could
be more specific in the context of the crate.

The goal will be to add a trait for storage requirements of IdDag and
make IndexedLogStorage one implementation of that trait.

Reviewed By: quark-zju

Differential Revision: D20446042

fbshipit-source-id: 7576e1cc4ad757c1a2c00322936cc884838ff710
2020-03-16 14:41:40 -07:00
Harvey Hunt
d1b4f83bf5 mononoke: Log number of possible LFS fetches for a getpack request.
Summary:
Update the `getpack` code to calculate how many files (and their total
size) would be served over LFS.

NOTE: The columns have `Possible` in their names as we might not have LFS
enabled, in which case we aren't actually fetching this many blobs from an LFS
server.

Reviewed By: farnz

Differential Revision: D20444137

fbshipit-source-id: 85506d8c468cfdc470684dd216567f1848c43d08
2020-03-16 14:11:49 -07:00
Chad Austin
97f2921deb fix an assertion violation in GlobBenchmark
Summary:
In dev mode, the glob benchmark failed inside of
folly::Range::operator[] because asserting null termination
technically violates the bounds check.

Reviewed By: simpkins

Differential Revision: D20268416

fbshipit-source-id: ee9b16a6eb9882e850631aa9d83fffe7b6fb67c3
2020-03-16 13:28:24 -07:00
svcscm
5f7a50bdb4 Updating submodules
Summary:
GitHub commits:

b0f50dfd3f
db0e476dad
d66908091d
e1bd93ccd4
002ac44046

Reviewed By: zpao

fbshipit-source-id: f32ab73a49485237d281b3b89c8ac30dcae00ae1
2020-03-16 13:23:18 -07:00
Jun Wu
1f64b4ec50 nameset: fix LazySet iteration
Summary:
The `next` method forgot to increase the iteration index, causing infinite
iteration.

Reviewed By: ikostia

Differential Revision: D20473206

fbshipit-source-id: 82a95de1b1c12ac4e9e4d328a0adba7145d7b24c
2020-03-16 13:00:35 -07:00
Xavier Deguillard
181981452d build: have make local run on Centos8
Summary:
On Centos8, `python` no longer exist, instead `python2` or `python3` must be
used.

The onetime-setup.py will have to be re-worked a bit too for Centos8
differences.

Reviewed By: quark-zju

Differential Revision: D20284986

fbshipit-source-id: bb1d9c8b211f1e50ce379fcb6bd92d677323935b
2020-03-16 12:54:01 -07:00
Stanislau Hlebik
72f788f808 mononoke: add is_chunked method
Reviewed By: ikostia

Differential Revision: D20470896

fbshipit-source-id: 91949dd6e77e17ef06d3144fb9ade89d10423151
2020-03-16 12:33:08 -07:00
svcscm
bbd969c3ec Updating submodules
Summary:
GitHub commits:

5f7b4076ff
ed2e12f885

Reviewed By: zpao

fbshipit-source-id: 767412bda9e005a12eec1b8808dc157681f38f51
2020-03-16 10:52:53 -07:00
Jun Wu
1734cfe169 metalog: allow overridding root using HGFORCEMETALOGROOT
Summary:
Together with `debugmetalogroots`, this allows some kind of "time travel" to
investigate repo states in the past.

Reviewed By: sfilipco

Differential Revision: D20449409

fbshipit-source-id: ed5c134f9e9ee235b24f45c1aa35867a55a71fe5
2020-03-16 10:21:48 -07:00
Jun Wu
d7fd7c15d6 metalog: add debugmetalogroots
Summary: The command lists all metalog roots. It's useful for debugging purpose.

Reviewed By: sfilipco

Differential Revision: D20449408

fbshipit-source-id: 206573b20c7740b6e536bf5d97276175c684959a
2020-03-16 10:21:47 -07:00
Jun Wu
3bf265bcd2 bookmarks: sort bookmarks before writing
Summary:
This makes the content of `bookmarks` stable.
It will make the metalog root IDs stable in tests.

Reviewed By: sfilipco

Differential Revision: D20449410

fbshipit-source-id: 969be63ab231f5865ec62e99398b5318d4257093
2020-03-16 10:21:47 -07:00
Jun Wu
8115053c00 indexedlog: implement xxd-like fmt::Debug for Log
Summary: This makes `hg debugindexedlog dump` more useful.

Reviewed By: sfilipco

Differential Revision: D20448863

fbshipit-source-id: c5cc24449ae00ee329ce02bf0adf947ff57e72ed
2020-03-16 10:21:46 -07:00
Durham Goode
a13fcd4910 workingcopy: support returning directories from the walker
Summary:
Purge needs to be able to see what directories the walker traversed, so
it can delete them if they are empty. Instead of having the walker call
match.traversedir (which it seems like a bizarre pattern to use the matcher as a
holder for a non-matching related function), let's have the walker return an
enum and have an option to return directories.

At the python layer we then translate this into match.traversedir calls, but we
can clean that up later.

Reviewed By: quark-zju

Differential Revision: D19543795

fbshipit-source-id: cc51c86c91799d3df2c65d25a7b6cfe810206d0a
2020-03-16 10:15:26 -07:00
Durham Goode
fc7739fa26 workingcopy: rename walker results
Summary:
In preparation for supporting returning directories from the walker (to
support purge), let's rename the result structure to be more generic.

Reviewed By: kulshrax

Differential Revision: D19543791

fbshipit-source-id: 9b71452c879cf397ae92533a4ef4727140ac7369
2020-03-16 10:15:26 -07:00
Durham Goode
01285a9d4a workingcopy: handle file normalization for rust walker
Summary:
On case insensitive systems we need to normalize file case. I've made a
rust case normalizer, but it requires some more tweaks. In the mean time, let's
handle this at the matching and output stages of the rust walk.

This is probably the pattern we want to follow later anyway, so the walk is
completely decoupled from normalization.

Reviewed By: kulshrax

Differential Revision: D19543797

fbshipit-source-id: 2ef8bdcecb2611a08680441fc030c64c2f4097d1
2020-03-16 10:15:25 -07:00
Durham Goode
27d1ebe9ba workingcopy: support ignore files from rust walker
Summary:
Previously it didn't handle ignoring ignored files. Let's support this
via simple matcher composition.

Reviewed By: kulshrax

Differential Revision: D19543792

fbshipit-source-id: 0c807f3c1ffc10894f13373cbe9deb2b824f1ac9
2020-03-16 10:15:25 -07:00
Durham Goode
05e09b2b89 workingcopy: report invalid file types from rust walker
Summary:
The mercurial tests print errors when they encounter 'fifo' files.
Let's handle that case.

Differential Revision: D19543796

fbshipit-source-id: f87d4b9c3f0ad8b8d8ebe2e6d18e325fc93d0ae9
2020-03-16 10:15:25 -07:00
Durham Goode
1b892e1d50 tests: don't test \1 character in hgsql tests
Summary:
\1 is not a valid character in our new RepoPath's, so let's remove it
from the tests.

Reviewed By: quark-zju

Differential Revision: D19543793

fbshipit-source-id: 383a4b3f5c54b47180fe667f234a43eda22f91b6
2020-03-16 10:15:24 -07:00
James Crooks
20afa84689 Move fbcode/eden/mononoke/cmds/populate_healer.rs to async diff2
Summary:
Another small change moving toward using the new futures. This time we
make get_resume_state() async. This pushes the implicit .compat() we would otherwise have down to where we call ThriftManifoldBlob::get() which still returns an old-style BoxFuture.

Reviewed By: farnz

Differential Revision: D20444381

fbshipit-source-id: a5aab448c5b25e71e4ce5ea031302280d586066f
2020-03-16 09:23:46 -07:00
James Crooks
1b941f3d76 Move fbcode/eden/mononoke/cmds/populate_healer.rs main to async
Summary:
Pushes the `compat` call in main() down one level into
populate_healer_queue(). This ended up being straightforward, just a fn
signature change and a couple of callsite changes.

This only affects main(), going to follow-up with future diffs to push it down
a little farther.

Remaining line deltas are just due to rustfmt.

Reviewed By: farnz

Differential Revision: D20432676

fbshipit-source-id: 98100f1b651648d6e3509fa56e94b80ee075843f
2020-03-16 09:23:46 -07:00
svcscm
61c97d8799 Updating submodules
Summary:
GitHub commits:

bddff1975b

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: d245e5caf604c0860c5f6cea1b300361a651f359
2020-03-16 08:58:04 -07:00
Stanislau Hlebik
5790f7e176 mononoke: add lfs rollout percentage
Summary:
Allow to gradually rollout lfs. A lot of the details are covered in D20441254
I won't repeat them here. I'd only mention that in order for fastreplay to
correctly calculate percentages this diff starts to log client_hostname for
fastreplay.

Reviewed By: ikostia

Differential Revision: D20441264

fbshipit-source-id: e272176f68879f6c545784609799d21daedec5eb
2020-03-16 08:18:41 -07:00
svcscm
cb933c03c4 Updating submodules
Summary:
GitHub commits:

3697fb0572
e58cb42f11

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: b871b9ca4aa01a776e9a1c4e4bd931c5c84b4204
2020-03-16 08:18:41 -07:00
svcscm
14f8fb8a7a Updating submodules
Summary:
GitHub commits:

ca3e3a7e40
8ba0a5dd52
c3e69d7a9a

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: 5fcb28478c9fd4819f88eb9de7257362e3ed0980
2020-03-16 05:56:07 -07:00
Harvey Hunt
0146026587 mononoke: lfs_server: Use Identity::FromStr when parsing identities
Summary:
D20139308 added a FromStr implementation for Identity. The LFS
server uses the same code when reading identities from the command line.

Update `idents_from_values` to use the `FromStr` implementation.

Reviewed By: krallin

Differential Revision: D20441439

fbshipit-source-id: 5809ed54d1971fd778b82cc726739a382312747a
2020-03-16 05:41:49 -07:00
Thomas Orozco
89cbb08a09 mononoke: move ContextConcurrencyBlobstore to RepoBlobstore
Summary:
Right now, ContextConcurrencyBlobstore is instantiated in make_blobstore, which
makes it a lot more effective (3 times more effective, in fact) than we want it
to be, since a ticket is acquired by 3 blobstores in the chain in order to
complete a put:

- The multiplex
- The two underlying blobstores

This also has the potential to deadlock if all tickets are held by the
multiplex, which results in an eventual timeout after 600s of waiting in the
multiplex (this looks like it might be happening at least once or twice per
hour right now on the experimental tier).

In any case, the intention had always been to have one of those per repo, not
one per sub-blobstore, so let's do that. The more natural place to put this
seems to be the RepoBlobstore instantiation.

Since I anticipate I might not be the only one who gets tripped up by this at
some point, I also added a comment about this. I also updated the blobsync
tests to stop re-implementing `RepoBlobstoreArgs::new()` so that adding new
blobstores in RepoBlobstoreArgs will have minimal friction.

Reviewed By: HarveyHunt

Differential Revision: D20467346

fbshipit-source-id: a6ad2d8f04bff1c6fcaa151e947cb8af919eec07
2020-03-16 05:30:11 -07:00
svcscm
f794c682dc Updating submodules
Summary:
GitHub commits:

561425e0b1
9a0fca4e92
f9cacabd86
6163f1747b

Reviewed By: 2d2d2d2d2d

fbshipit-source-id: 6dd4bb48875c329d1f2cbfc22439b04676d8cd9a
2020-03-16 04:26:36 -07:00