Tue, 28 Feb 2023 23:35:52 +0100 dirstate: deal with read-race for python code using rust object stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 28 Feb 2023 23:35:52 +0100] rev 50238
dirstate: deal with read-race for python code using rust object If we cannot read the dirstate data, this is probably because a writing process wrote it under our feet. So refresh the docket and try again a handful of time.
Tue, 28 Feb 2023 19:01:20 +0100 dirstate: deal with read-race for pure python code stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 28 Feb 2023 19:01:20 +0100] rev 50237
dirstate: deal with read-race for pure python code If we cannot read the dirstate data, this is probably because a writing process wrote it under our feet. So refresh the docket and try again a handful of time.
Wed, 01 Mar 2023 16:05:28 +0100 dirstate: abstract the reading of the data file in v2 in a method stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Mar 2023 16:05:28 +0100] rev 50236
dirstate: abstract the reading of the data file in v2 in a method We will need more changes to avoid some race conditions during read, so we first isolate the simple logic before making it more complicated.
Mon, 27 Feb 2023 03:14:30 +0100 dirstate: add append/new-file variants in the dirstate's read race tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 27 Feb 2023 03:14:30 +0100] rev 50235
dirstate: add append/new-file variants in the dirstate's read race tests This covers more ground and finds more bugs. At that point I gave up on making things as `known-bad-output` / `missing-correct-output` as this gets too messy.
Tue, 13 Dec 2022 14:51:36 +0100 dirstate: add a synchronisation point in the middle of the read stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 13 Dec 2022 14:51:36 +0100] rev 50234
dirstate: add a synchronisation point in the middle of the read This will be useful to test some more race conditions around dirstate.
Sun, 26 Feb 2023 16:27:50 +0100 dirstate: add v1-v2 variants to the dirstate's read race tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 16:27:50 +0100] rev 50233
dirstate: add v1-v2 variants to the dirstate's read race tests More cases mean different issues.
Sun, 26 Feb 2023 08:17:23 +0100 dirstate: check dirstate race condition around status stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 08:17:23 +0100] rev 50232
dirstate: check dirstate race condition around status More problems to solve.
Sun, 26 Feb 2023 07:08:16 +0100 dirstate: check dirstate race condition around update stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 07:08:16 +0100] rev 50231
dirstate: check dirstate race condition around update More problems to solve.
Sun, 26 Feb 2023 07:02:13 +0100 dirstate: check dirstate race condition around commit stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 07:02:13 +0100] rev 50230
dirstate: check dirstate race condition around commit Once in a while, rhg is the only one to behave right here.
Sat, 25 Feb 2023 00:54:30 +0100 dirstate: initial creation of a test file to check dirstate race read stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 25 Feb 2023 00:54:30 +0100] rev 50229
dirstate: initial creation of a test file to check dirstate race read More problems to solve… yeah ! (I guess)
Sat, 25 Feb 2023 01:07:44 +0100 dirstate: add a synchronisation point before doing a full dirstate read stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 25 Feb 2023 01:07:44 +0100] rev 50228
dirstate: add a synchronisation point before doing a full dirstate read This will be useful to test some race conditions around the dirstate.
Tue, 28 Feb 2023 12:15:19 +0100 rust-repo: move dirstate-v2 opening to a separate method stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 12:15:19 +0100] rev 50227
rust-repo: move dirstate-v2 opening to a separate method The next changeset will make changes to this logic, it helps to have it in order first.
Tue, 28 Feb 2023 16:19:21 +0100 rhg: fix race when an ambiguous file is deleted on disk stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 16:19:21 +0100] rev 50226
rhg: fix race when an ambiguous file is deleted on disk There are two places in the status code where we handle files whose status we are unsure of based off of metadata alone: this one is the first one to actually disambiguate, and the second one is later in the code (but updated in the previous commit) for files that are actually clean to update the dirstate. Since there is a chance that the contents have changed between those two moments, we need to stat the files again, since re-using the old stat could lie about the clean state of the file.
Mon, 27 Feb 2023 15:18:50 +0100 rhg: fix race when a fixup file is deleted on disk stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 27 Feb 2023 15:18:50 +0100] rev 50225
rhg: fix race when a fixup file is deleted on disk See next changeset for the other race in the same kind of logic and why there are two different places.
Sat, 25 Feb 2023 06:11:14 +0100 dirstate: test a `hg status` raced by a `hg remove` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 25 Feb 2023 06:11:14 +0100] rev 50224
dirstate: test a `hg status` raced by a `hg remove` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 01:19:37 +0100 dirstate: tests racing status with both dirstate-v2 append and rewrite stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:19:37 +0100] rev 50223
dirstate: tests racing status with both dirstate-v2 append and rewrite The way the racing process touches the dirstate results in different challenges for the raced process. We now test each variant in the `test-dirstate-status-race.t` tests.
Tue, 28 Feb 2023 15:49:53 +0100 dirstate-v2: add devel config option to control write behavior stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 15:49:53 +0100] rev 50222
dirstate-v2: add devel config option to control write behavior This will help us to write predictable tests checking behavior in each case.
Fri, 24 Feb 2023 18:21:54 +0100 dirstate: use more than a bool to control append behavior stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 18:21:54 +0100] rev 50221
dirstate: use more than a bool to control append behavior When writing dirstate-v2, we might either append to the existing file, or create a new file. We are about to introduce some configuration to control this behavior. As a prelude, we change the current way the behavior was automatically controlled to make the change smaller/clearer.
Fri, 24 Feb 2023 01:15:45 +0100 dirstate: cover each dirstate version when testing for status race stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:15:45 +0100] rev 50220
dirstate: cover each dirstate version when testing for status race Previously we were only testing it with the default (dirstate-v1 currently). Now we explicitly test each variant.
Fri, 24 Feb 2023 01:09:11 +0100 dirstate: test a `hg status` raced by another `hg status` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:09:11 +0100] rev 50219
dirstate: test a `hg status` raced by another `hg status` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 01:01:04 +0100 dirstate: test a `hg status` raced by a `hg update` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:01:04 +0100] rev 50218
dirstate: test a `hg status` raced by a `hg update` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 00:55:13 +0100 dirstate: test a `hg status` raced by a `hg commit` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 00:55:13 +0100] rev 50217
dirstate: test a `hg status` raced by a `hg commit` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 16:12:01 +0100 dirstate: test a `hg status` raced by a `hg add` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 16:12:01 +0100] rev 50216
dirstate: test a `hg status` raced by a `hg add` This shows that `rhg` is misbehaving here.
Tue, 28 Feb 2023 15:25:47 +0100 dirstate: add a way to test races happening during status stable
Raphaël Gomès <rgomes@octobus.net>, Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 28 Feb 2023 15:25:47 +0100] rev 50215
dirstate: add a way to test races happening during status We add the `devel.sync.status.pre-dirstate-write-file` config option to easily test what happens when other operations happen during the window where `hg status` is done working but has not updated the cache on disk yet. We introduce the framework for testing such races too, actual tests will be added in the next changesets. For now the test is only checking dirstate-v1. We will extend the test coverage later too. Check test documentation for details. Code change from Raphaël Gomès <rgomes@octobus.net> Test change from Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 28 Feb 2023 00:01:41 +0100 testing: introduce util function to synchronize concurrent commands on files stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 00:01:41 +0100] rev 50214
testing: introduce util function to synchronize concurrent commands on files This is an extension of mechanisms that the tests have been using for a while. To be able to also control the execution in Rust, we introduce utility to perform such `wait_on_file` logic based on some configuration value. This will be used in the tests introduced in the next changesets.
Tue, 28 Feb 2023 11:44:52 -0500 hghave: drop py27 and py35 support
Matt Harbison <matt_harbison@yahoo.com> [Tue, 28 Feb 2023 11:44:52 -0500] rev 50213
hghave: drop py27 and py35 support These versions of python are no longer supported by Mercurial.
Tue, 28 Feb 2023 11:41:50 -0500 hghave: byteify a path passed to a core API
Matt Harbison <matt_harbison@yahoo.com> [Tue, 28 Feb 2023 11:41:50 -0500] rev 50212
hghave: byteify a path passed to a core API It looks like this predicate isn't used at all(?)
Tue, 28 Feb 2023 00:04:32 +0100 dirstate: add some debug output when writing the dirstate stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 00:04:32 +0100] rev 50211
dirstate: add some debug output when writing the dirstate This helps debugging Mercurial behavior in the dirstate-v2 case.
Tue, 31 Jan 2023 13:16:39 +0100 run-tests: make it possible to nest conditionals stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 31 Jan 2023 13:16:39 +0100] rev 50210
run-tests: make it possible to nest conditionals This is not that hard to implement and makes our life easier on a regular basis.
Mon, 27 Feb 2023 18:24:29 +0000 rust: box ConfigValueParseError to avoid large result types
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 27 Feb 2023 18:24:29 +0000] rev 50209
rust: box ConfigValueParseError to avoid large result types clippy emits a warning that all the Result types are way too large because of HgError includes ConfigValueParseError as one of the variants, so its size is 136 bytes. By boxing ConfigValueParseError we're hopefully making everything faster "for free".
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 tip