Commit Graph

7595 Commits

Author SHA1 Message Date
Thomas Waldmann 3e33656238
add comment about how to provoke more collisions 2023-02-08 02:13:14 +01:00
Thomas Waldmann 9697f55534
add hashtable stress tests
Using NSIndex (repo index) HashIndex, but they all are very similar.
2023-02-08 01:53:30 +01:00
TW 653c051851
Merge pull request #7323 from ThomasWaldmann/coala-updates
coala: remove PEP8Bear
2023-02-06 23:40:52 +01:00
Thomas Waldmann de275fc8db
coala: remove PEP8Bear
it's not always happy with what black does.
2023-02-05 20:59:43 +01:00
TW a3bdae65ac
Merge pull request #7322 from ThomasWaldmann/update-changes
update CHANGES
2023-02-05 00:06:11 +01:00
Thomas Waldmann 55af2933fb
update CHANGES 2023-02-04 20:43:50 +01:00
TW 7ffd87739b
Merge pull request #7320 from ThomasWaldmann/transfer-progress
Transfer progress
2023-02-03 03:06:32 +01:00
Thomas Waldmann 7ad25ba9e2
transfer: support --progress 2023-02-03 02:10:29 +01:00
TW 63a0b3bed4
Merge pull request #7310 from ThomasWaldmann/avoid-orphan-content-chunks2
avoid orphan content chunks on BackupOSErrors
2023-02-03 02:08:49 +01:00
TW c96c5652b0
Merge pull request #7317 from pgerber/hanging-test
Fix test hanging reading FIFO when `borg create` failed
2023-02-03 01:59:15 +01:00
Thomas Waldmann ffe32316a5
avoid orphan content chunks on BackupOSError, fixes #6709
if we run into some issue reading an input file, e.g. an I/O error,
the BackupOSError exception raised due to that will skip the current
file and no archive item will be created for this file.

But we maybe have already added some of its content chunks to the repo,
we have either written them as new chunks or incref'd some identical chunk
in the repo.

Added an exception handler that decrefs (and deletes if refcount reaches 0)
these chunks again before re-raising the exception, so the repo is in a
consistent state again and we do not have orphaned content chunks in the repo.
2023-02-03 01:35:12 +01:00
TW 9b7647c89d
Merge pull request #7309 from ThomasWaldmann/no-part-files-in-final-archive
remove part files from final archive
2023-02-03 01:33:47 +01:00
Peter Gerber 8ce3d22358 Fix test hanging reading FIFO when `borg create` failed 2023-02-02 00:44:08 +01:00
TW f25f6a8e33
Merge pull request #7315 from ThomasWaldmann/pythonioencoding
document another way to get UTF-8 encoding on stdin/stdout/stderr, fixes #2273
2023-02-02 00:35:21 +01:00
TW 6d53cd0365
Merge pull request #7316 from ThomasWaldmann/gh-fixed-black-version
fix black versions be 23.x
2023-02-02 00:34:08 +01:00
Thomas Waldmann f65a6b197a
fix black versions be 23.x
https://black.readthedocs.io/en/stable/integrations/github_actions.html
2023-02-01 16:04:39 +01:00
Thomas Waldmann 856d98c72f
document another way to get UTF-8 encoding on stdin/stdout/stderr, fixes #2273 2023-02-01 15:32:29 +01:00
Thomas Waldmann d2cc167afd
borg transfer: drop part files 2023-02-01 13:04:19 +01:00
Thomas Waldmann b92f4aa487
remove --consider-part-files, related stats code, update docs
we now just treat that one .borg_part file we might have inside
checkpoint archives as a normal file.

people can recognize via the file name it is a partial file.

nobody cares for statistics of checkpoint files and the final
archive now does not contain any partial files any more, thus
no needs to maintain statistics about count and size of part
files.
2023-02-01 13:04:18 +01:00
Thomas Waldmann 0fed44110a
remove part files from final archive
checkpoint archives might have a single, incomplete part file as last item.
part files are always a prefix of the full file, growing in size from
checkpoint to checkpoint.

we now manage the archive items metadata stream in a special way:
- checkpoint archive A(n) might end with a partial item PI(n)
- checkpoint archive A(n+1) does not contain PI(n)
- checkpoint archive A(n+1) contains a new partial item PI(n+1)
- the final archive does not contain any partial items
2023-02-01 13:04:12 +01:00
TW 4515884af5
Merge pull request #7314 from ThomasWaldmann/newer-black
use latest "black"
2023-02-01 13:02:41 +01:00
Thomas Waldmann a0330d578e
run black 23.1.0 on the code 2023-02-01 12:30:37 +01:00
Thomas Waldmann 96862787db
upgrade black to 23.1.0
work around the current github actions issue by just using the latest version:

https://github.com/psf/black/issues/3538
2023-02-01 12:29:54 +01:00
Michael Deyaso 8af9eb47c2
Added date-matching support for list_considering (#7306)
added date-matching support for list_considering, fixes #7296

Co-authored-by: Michael Deyaso <mdeyaso@fusioniq.io>
2023-02-01 11:32:53 +01:00
TW 8046d6f575
Merge pull request #7311 from ThomasWaldmann/fix-mac-birthtime-test-fail
tests: relax birthtime assertion, fixes #7308
2023-02-01 11:25:55 +01:00
Thomas Waldmann e019487166
tests: relax birthtime assertion, fixes #7308 2023-02-01 01:59:41 +01:00
TW d0344cb8f8
Merge pull request #7305 from ThomasWaldmann/volume-based-checkpointing
volume based checkpointing, fix item_ptrs orphaned chunks
2023-01-31 16:48:49 +01:00
TW 2472b1c63f
Merge pull request #7303 from ThomasWaldmann/fix-pyi
mypy inspired fixes / updates
2023-01-31 15:46:20 +01:00
Thomas Waldmann 15d1bc0c49
fix checkpointing: add item_ptrs chunks cleanup
not having this had created orphaned item_ptrs chunks for checkpoint archives.

also:
- borg check: show id of orphaned chunks
- borg check: archive list with explicit consider_checkpoints=True (this is the default, but better make sure).
2023-01-31 14:40:41 +01:00
Thomas Waldmann 7e31fab754
cleanup: remove Archive.checkpoint_interval (not used)
checkpoint_interval and checkpoint_volume are only needed for
the ChunksProcessor.
2023-01-31 04:01:39 +01:00
Thomas Waldmann 56b6f1d2e0
create/recreate/import-tar: add --checkpoint-volume option
volume based checkpointing is easier to test than its time based cousin.

also added first checkpointing test.
2023-01-31 04:01:37 +01:00
Thomas Waldmann 2705ccb59b
key storage: type hints / cleanup 2023-01-30 18:08:05 +01:00
Thomas Waldmann 360cd8488f
micro-opt: construct borg1_header_fmt Struct only once 2023-01-30 17:56:05 +01:00
Thomas Waldmann e772d70e05
cleaner FileLikeWrapper with own __init__ 2023-01-30 15:54:56 +01:00
Thomas Waldmann 9740767449
fix bug in obfuscated data upgrade code 2023-01-30 15:54:54 +01:00
Thomas Waldmann f9078ebfa9
FlexiKey: define STORAGE in base class
avoids some mypy warnings.
2023-01-30 15:54:52 +01:00
Thomas Waldmann a863249394
fs.py: fix bug in f-string - thanks mypy! 2023-01-30 15:54:50 +01:00
Thomas Waldmann 90a9a124d4
*.pyi: fix types, add missing attrs 2023-01-30 15:54:48 +01:00
TW 77977d988a
Merge pull request #7295 from ThomasWaldmann/refactor
refactor / cosmetic changes / help improved
2023-01-23 15:58:56 +01:00
Thomas Waldmann 5b28674a99
--newer/older/newest/oldest: rephrase help a bit 2023-01-23 15:27:27 +01:00
Thomas Waldmann 61904dd683
ArchiveChecker.check: reorder args, make most kwargs-only 2023-01-23 15:18:11 +01:00
Thomas Waldmann 60ebd1d2b0
Archives.list: reorder args 2023-01-23 15:11:53 +01:00
Michael Deyaso b2654bc17d
Support for date-based matching during archive listing (#7272)
check --archives: add --newer/--older/--newest/--oldest, fixes #7062

Options accept a timespan, like Nd for N days or Nm for N months.

Use these to do date-based matching on archives and only check some of them,
like: borg check --archives --newer=1m --newest=7d

Author: Michael Deyaso <mdeyaso@fusioniq.io>
2023-01-23 15:00:05 +01:00
TW 73e0f8b6b8
Merge pull request #7289 from ThomasWaldmann/command_line-one-str
ArchiveItem.cmdline list-of-str -> .command_line str, fixes #7246
2023-01-22 14:12:21 +01:00
Thomas Waldmann bf667170a7
ArchiveItem.cmdline list-of-str -> .command_line str, fixes #7246
Same change for .recreate_cmdline -> .recreate_command_line .

JSON output key "command_line":
borg 1.x: sys.argv [list of str]
borg 2: shlex.join(sys.argv) [str]
2023-01-20 00:19:00 +01:00
TW ccbfc4ee95
Merge pull request #7287 from ThomasWaldmann/fix-get-item-uid-gid-win32
fix some uid/gid lookup code / tests for win32
2023-01-19 21:48:47 +01:00
TW 4a94097193
Merge pull request #7288 from ThomasWaldmann/host-user-group-names-encoding
hostname / username encoding
2023-01-19 21:48:28 +01:00
Thomas Waldmann 249189e04e
refactor: reuse code from remove_surrogates 2023-01-19 20:58:58 +01:00
Thomas Waldmann b3da7d0e72
make sure hostname and username have no surrogate escapes
if they are present, process them through json_text().
this replaces s-e by "?" for the key and puts the binary
representation into key_b64, if needed.

likely this is rarely needed.
2023-01-19 20:46:40 +01:00
Thomas Waldmann 7ab39f9d42
make the user2uid/group2gid win32 hack behave more like the real code (e.g. posix)
The code relies on them returning the default value (usually
None), if we call user2uid(None) or group2gid(None) (same for
empty string).
2023-01-19 20:07:38 +01:00