mirror of https://github.com/borgbackup/borg.git
Merge pull request #5662 from ThomasWaldmann/dump-hints
implement borg debug dump-hints
This commit is contained in:
commit
9c988ee632
|
@ -24,7 +24,7 @@ try:
|
|||
import tarfile
|
||||
import textwrap
|
||||
import time
|
||||
from binascii import unhexlify
|
||||
from binascii import unhexlify, hexlify
|
||||
from contextlib import contextmanager
|
||||
from datetime import datetime, timedelta
|
||||
from io import TextIOWrapper
|
||||
|
@ -2129,6 +2129,24 @@ class Archiver:
|
|||
print("object %s not found [info from chunks cache]." % hex_id)
|
||||
return EXIT_SUCCESS
|
||||
|
||||
@with_repository(manifest=False, exclusive=True)
|
||||
def do_debug_dump_hints(self, args, repository):
|
||||
"""dump repository hints"""
|
||||
if not repository._active_txn:
|
||||
repository.prepare_txn(repository.get_transaction_id())
|
||||
try:
|
||||
hints = dict(
|
||||
segments=repository.segments,
|
||||
compact=repository.compact,
|
||||
storage_quota_use=repository.storage_quota_use,
|
||||
shadow_index={hexlify(k).decode(): v for k, v in repository.shadow_index.items()}
|
||||
)
|
||||
with dash_open(args.path, 'w') as fd:
|
||||
json.dump(hints, fd, indent=4)
|
||||
finally:
|
||||
repository.rollback()
|
||||
return EXIT_SUCCESS
|
||||
|
||||
def do_debug_convert_profile(self, args):
|
||||
"""convert Borg profile to Python profile"""
|
||||
import marshal
|
||||
|
@ -3559,6 +3577,21 @@ class Archiver:
|
|||
subparser.add_argument('ids', metavar='IDs', nargs='+', type=str,
|
||||
help='hex object ID(s) to show refcounts for')
|
||||
|
||||
debug_dump_hints_epilog = process_epilog("""
|
||||
This command dumps the repository hints data.
|
||||
""")
|
||||
subparser = debug_parsers.add_parser('dump-hints', parents=[common_parser], add_help=False,
|
||||
description=self.do_debug_dump_hints.__doc__,
|
||||
epilog=debug_dump_hints_epilog,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
help='dump repo hints (debug)')
|
||||
subparser.set_defaults(func=self.do_debug_dump_hints)
|
||||
subparser.add_argument('location', metavar='REPOSITORY',
|
||||
type=location_validator(archive=False),
|
||||
help='repository to dump')
|
||||
subparser.add_argument('path', metavar='PATH', type=str,
|
||||
help='file to dump data into')
|
||||
|
||||
debug_convert_profile_epilog = process_epilog("""
|
||||
Convert a Borg profile to a Python cProfile compatible profile.
|
||||
""")
|
||||
|
|
Loading…
Reference in New Issue