summary of my last hacking streak
Antoine Beaupré
anarcat at debian.org
Sat Oct 17 02:47:09 EDT 2015
Hi,
This week, I took my laptop out to the countryside, without internet
(but with a HAM radio ;), to focus on peace and quiet and maybe work on
borg.
First off, I must apologise for the mess I created on the master
branch. I attempted to create a master branch in my own fork with all
the branches merged in and I mistakenly pushed that to the main repo,
which closed all the pull requests and put all my code live at once. I
have reverted the change and now only the --version pull request is
there.
I am at a loss at words at how to handle this... I guess I could rebase
those branches on top of the new messed up master, or we could reset the
master branch again. I am not sure what is the best way to proceed, but
I can't fix this cleanly myself, as I cannot force-push to master. :(
Again, apologies. Here is the rest of the mail i was hoping to send
happily an hour ago...
Pull requests
=============
I ended up with 6 feature branchs which i submitted as pull requests:
* i18n: translation support for borg
https://github.com/borgbackup/borg/pull/287
* man-builder: failed attempt at writing a manpage formatter for
argparse - the latter is such a tangled mess that i can't make head
or tails of it, and i gave up: let's wait for click
https://github.com/borgbackup/borg/issues/208
* no-inplace: operate on a "copy" during upgrades, the previous
"inplace" mode is still available through `--inplace`
https://github.com/borgbackup/borg/pull/280
* upgrader-index-fixes: fixes for the upgrader index problems, not
sure how to create a unit test for this one, as repository.check()
doesn't find the error (only create does)
https://github.com/borgbackup/borg/pull/281
* verbosity: lots of tweaks to verbosity levels, --progress and
--stats
https://github.com/borgbackup/borg/pull/288
* version-arg: a --version flag! (this was mistakenly pushed directly to
master, sorry, let me know if i need to revert)
* x-option, add -x to --do-not-cross-mountpoints setting
https://github.com/borgbackup/borg/pull/282
Some of those conflict with each other: i18n and verbosity touch similar
areas, but the merge is fairly trivial. I have merged all the above (but
man-builder) into my master branch:
https://github.com/anarcat/borg/commits/master
(Update: this was mistakenly pushed to the main master branch, and then
reverted.)
Bug reports
===========
* tox seems to run the Attic test suite:
https://github.com/borgbackup/borg/issues/283
* can't run tests offline: https://github.com/borgbackup/borg/issues/284
* lock.exclusive left behind:
https://github.com/borgbackup/borg/issues/285
Other notes
===========
Upgrade notes
-------------
I ran a new conversion from Attic, this time on a fresh backup of my
laptop (i usually work on my workstation). The backup looked like:
# attic create --exclude-caches -e /home/anarcat/mp3/ -e /home/pbuilder/ -e /home/anarcat/video/ -e /home/anarcat/iso/ -e /home/anarcat/books -e /home/anarcat/books-incoming -e .cache --stats --do-not-cross-mountpoints /media/anarcat/calyx/attic-angela::2015-10-15-first /
Initializing cache...
------------------------------------------------------------------------------
Archive name: 2015-10-15-first
Archive fingerprint: 5626925d54fae692e7ca5cb852e6629661d4ac5de00ad6b6494979980ec7822c
Start time: Thu Oct 15 12:03:34 2015
End time: Thu Oct 15 15:28:44 2015
Duration: 3 hours 25 minutes 10.06 seconds
Number of files: 847008
Original size Compressed size Deduplicated size
This archive: 56.78 GB 38.82 GB 35.55 GB
All archives: 56.78 GB 38.82 GB 35.55 GB
------------------------------------------------------------------------------
First borg run after upgrade was fast enough:
------------------------------------------------------------------------------
Archive name: 2015-10-15-post-attic
Archive fingerprint: 44812971c502a25dcad61a7664eab3559405c6f1fd8b38bc50118f4619dbca72
Start time: Thu Oct 15 18:36:02 2015
End time: Thu Oct 15 18:49:15 2015
Duration: 13 minutes 13.69 seconds
Number of files: 847084
Original size Compressed size Deduplicated size
This archive: 56.78 GB 38.85 GB 41.12 MB
All archives: 113.57 GB 77.67 GB 35.59 GB
Unique chunks Total chunks
Chunk index: 1430830 3255749
------------------------------------------------------------------------------
So it seems the chunks cache got reused properly this time, maybe
because the dataset is smaller.
weird integrity failure
-----------------------
When running tests with `-s`, we see some exceptions show up in the
log. It's a little confusing because we have the feeling that tests
fail because of the exception, while it seems the error is normal.
Failing test sample:
borg/testsuite/archiver.py::ArchiverCheckTestCase::test_missing_archive_item_chunk Exception ignored in: <bound method Repository.__del__ of <Repository /tmp/tmpq8mq3loc/repository>>
Traceback (most recent call last):
File "/home/anarcat/src/borg/borg/repository.py", line 69, in __del__
self.close()
File "/home/anarcat/src/borg/borg/repository.py", line 155, in close
self.lock.release()
File "/home/anarcat/src/borg/borg/locking.py", line 281, in release
self._roster.modify(EXCLUSIVE, REMOVE)
File "/home/anarcat/src/borg/borg/locking.py", line 203, in modify
elements.remove(self.id)
KeyError: (('angela', 28267, 2564556544),)
PASSED
Another:
borg/testsuite/archiver.py::RemoteArchiverTestCase::test_corrupted_repository Segment entry checksum mismatch [segment 2, offset 8]
Index object count mismatch. 147 != 0
PASSED
Maybe those warnings are unimportant and should be ignored, but they
certainly make tests more confusing, and if those errors are expected,
maybe they shouldn't output those errors?
argv
----
It would be nice if borg would show up as "borg" instead of "python
borg" or whatever. bup does this through unpythonize_argv() which does
some pretty heavy memset() stuff to clear it up. there has to be a
better way (tm).
See: https://github.com/borgbackup/borg/issues/286
verbosity and logging
---------------------
it's harder to censor the unchanged files with stderr output: we
basically need to shove it back to stdout to grep it. that is
annoying.
basically, -v is way too verbose - it's unusable. also, as it is,
--progress doesn't show *any* progress until the file cache is loaded,
which is confusing, as we don't know if borg is waiting for a lock,
blocked or what.
the basic problem could be that --progress conflicts with the per-file
output. to resolve that, i have pushed the file listing down to the
DEBUG level for now, but the question of how to handle different
verbosity levels still stands
but i do feel confident now that the logging-refactor branch can be
merged in, and in fact most branches i have been working on have been
based on it...
oh, and --progress now knows about the terminal width, so it makes good
use of all the space to show file paths. it also shows the number of
files found so far.
--stats could similarly be improved as well...
format_file_sizes
-----------------
This could be reimplemented to cover more than terabytes, there's some
neat code from stackexchange for this...
http://stackoverflow.com/a/1094933/1174784
StableDict
----------
Why is that thing necessary, when we have OrderedDict?
More information about the Borgbackup
mailing list