annotate mercurial/admin_commands.py @ 52049:af54626bf358

dirstate-map: add a missing debug wait point when accessing the v2 docket fc8e37c380d3 added synchronization points to the dirstate to allow for race condition testing without actually requiring a time-based race condition to happen. This changes adds the `pre-read-file` wait point before we read the docket, since callers might ask for the parents before anything else is read, leading to the first read being done before the wait point. This removes some differences in test output which were presumed to be speed related, but weren't.
author Rapha?l Gom?s <rgomes@octobus.net>
date Mon, 14 Oct 2024 14:14:21 +0200
parents 1c5810ce737e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50984
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
1 # admin_commands.py - command processing for admin* commands
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
2 #
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
3 # Copyright 2022 Mercurial Developers
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
4 #
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
5 # This software may be used and distributed according to the terms of the
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
6 # GNU General Public License version 2 or any later version.
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
7
51860
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51612
diff changeset
8 from __future__ import annotations
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51612
diff changeset
9
50986
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
10 from .i18n import _
51500
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50986
diff changeset
11 from .admin import chainsaw, verify
50986
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
12 from . import error, registrar, transaction
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
13
50984
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
14
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
15 table = {}
51500
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50986
diff changeset
16 table.update(chainsaw.command._table)
50984
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
17 command = registrar.command(table)
50986
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
18
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
19
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
20 @command(
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
21 b'admin::verify',
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
22 [
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
23 (b'c', b'check', [], _(b'add a check'), _(b'CHECK')),
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
24 (b'o', b'option', [], _(b'pass an option to a check'), _(b'OPTION')),
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
25 ],
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
26 helpcategory=command.CATEGORY_MAINTENANCE,
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
27 )
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
28 def admin_verify(ui, repo, **opts):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
29 """verify the integrity of the repository
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
30
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
31 Alternative UI to `hg verify` with a lot more control over the
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
32 verification process and better error reporting.
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
33 """
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
34
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
35 if not repo.url().startswith(b'file:'):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
36 raise error.Abort(_(b"cannot verify bundle or remote repos"))
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
37
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
38 if transaction.has_abandoned_transaction(repo):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
39 ui.warn(_(b"abandoned transaction found - run hg recover\n"))
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
40
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
41 checks = opts.get("check", [])
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
42 options = opts.get("option", [])
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
43
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
44 funcs = verify.get_checks(repo, ui, names=checks, options=options)
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
45
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
46 ui.status(_(b"running %d checks\n") % len(funcs))
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
47 # Done in two times so the execution is separated from the resolving step
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
48 for name, func in sorted(funcs.items(), key=lambda x: x[0]):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
49 ui.status(_(b"running %s\n") % name)
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
50 errors = func()
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
51 if errors:
51612
a93e60ebea09 admin-verify: expect a number of errors to be returned
Rapha?l Gom?s <rgomes@octobus.net>
parents: 51500
diff changeset
52 ui.warn(_(b"found %d errors\n") % errors)