summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-08-09refactor: split long func into twoLars Wirzenius2-28/+69
Sponsored-by: author
2021-08-09refactor: use async for "obnam backup"Lars Wirzenius3-229/+89
This changes things so that "obnam backup" uses async for everything. The old non-async BackupClient and ChunkClient are dropped. This does NOT move the chunking, and checksum computation, to its own function. This will happen later. Sponsored-by: author
2021-08-09refactor: drop NascentGeneration::insert_iterLars Wirzenius1-31/+12
It was only used by a test function, which is now changed to not use it. Add comment to the test function that it's too complicated and things need refactoring. However, that probably needs to wait for new abstractions. Sponsored-by: author
2021-08-09refactor: use for loop over an iterator instead of .insert_iterLars Wirzenius2-56/+66
This makes the code more explicit, which is good for now, and is a step towards making it all use async. There will be a need to refactor this further with better abstractions, once async works. Sponsored-by: author
2021-08-09refactor: call NascentGeneration::insert from ::insert_iterLars Wirzenius1-4/+1
This is a step towards getting rid of insert_iter entirely, which would make it easier to make `obnam backup` use async. I originally split insert_iter so I could use a single transaction for inserting many rows, but it seems to not be needed for speed after all. I've benchmarked backing up a large file with and without this change, and there's no real difference. I've not benchmarked with a large number of files. Even if there's a performance hit from using multiple transactions, my hope is that by being able to use more CPUs/threads for backing up will outweigh that by far. Sponsored-by: author
2021-08-09Merge branch 'fix-macos' into 'main'Lars Wirzenius2-2/+7
Fix compilation on MacOS See merge request obnam/obnam!173
2021-08-09Fix compilation on MacOSOssi Herrala2-2/+7
For chmod() we need to cast mode parameter from u32 to u16 because MacOS has 16 bit mode_t while Linux is using 32 bits.
2021-08-04Merge branch 'bugfix/overlapping-progress-bars' into 'main'Lars Wirzenius1-8/+17
fix: do not overlap "download" and "incremental" progress bars See merge request obnam/obnam!172
2021-08-03fix: do not overlap "download" and "incremental" progress barsAlexander Batischev1-8/+17
The problem is the same as #101, except this time it affected a different set of progress bars. It was introduced in e6147a3b7b58b151fb7ad9b1f748e0a666f271de. This commit postpones the creation of "incremental" progress bar until after we've fetched the previous generation. This avoids showing both progress bars at once.
2021-08-02Merge branch 'feature/117-obnam_server_log' into 'main'Lars Wirzenius4-4/+63
feat: configure log verbosity with OBNAM_SERVER_LOG envvar Closes #117 See merge request obnam/obnam!170
2021-08-02Merge branch 'resolve' into 'main'Lars Wirzenius12-26/+92
add "obnam resolve" Closes #118 and #135 See merge request obnam/obnam!171
2021-08-01refactor: use a struct for GenIdLars Wirzenius5-13/+36
This means a ChunkId can't be used instead. Sponsored-by: author
2021-08-01refactor: add a type alias for generation idsLars Wirzenius8-19/+23
This will make it harder to accidentally use a string. Can still be confused with a chunk id. Sponsored-by: author
2021-08-01feat: add command to resolve a generation ref into a chunk idLars Wirzenius4-0/+39
Sponsored-by: author
2021-07-31feat: configure log verbosity with OBNAM_SERVER_LOG envvarAlexander Batischev4-4/+63
Fixes #117.
2021-07-31Merge branch 'cleanups' into 'main'Lars Wirzenius9-19/+19
cleanup: fix things rustc/clipppy now complain about See merge request obnam/obnam!169
2021-07-30cleanup: fix things rustc/clipppy now complain aboutLars Wirzenius9-19/+19
Mostly https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow. Sponsored-by: author
2021-07-30Merge branch 'feature/112-cachedir-protection' into 'main'Lars Wirzenius6-58/+259
Backup: exit non-zero if new CACHEDIR.TAGs are found (unless `exclude_cache_tag_directories` is disabled) Closes #112 See merge request obnam/obnam!168
2021-07-28Add subplot to verify new mitigationAlexander Batischev1-5/+50
2021-07-28Backup: exit non-zero if new tags are foundAlexander Batischev2-2/+11
2021-07-28Store backup_roots() outcome in a structAlexander Batischev2-12/+30
2021-07-28After the backup, print out a list of new CACHEDIR.TAGsAlexander Batischev2-7/+26
2021-07-28FsIter: annotate entries belonging to CACHEDIR.TAGsAlexander Batischev2-23/+31
2021-07-28Mark CACHEDIR.TAGs in the databaseAlexander Batischev2-24/+126
In the following commits, we'll use this to check if a tag existed before.
2021-07-26Merge branch 'async-get-chunk' into 'main'Lars Wirzenius7-34/+226
use async for read-only access to chunk server See merge request obnam/obnam!167
2021-07-23refactor: async for "obnam show-generation"Lars Wirzenius1-5/+10
Sponsored-by: author
2021-07-23refactor: use async for "obnam restore"Lars Wirzenius1-18/+27
Sponsored-by: author
2021-07-23refactor: use async for "obnam list-files"Lars Wirzenius2-4/+39
Sponsored-by: author
2021-07-23refactor: use async for "obnam list"Lars Wirzenius2-3/+26
Sponsored-by: author
2021-07-23refactor: use async for "obnam get-chunk"Lars Wirzenius2-4/+123
Sponsored-by: author
2021-07-22chore: add rustfmt.tomlLars Wirzenius1-0/+1
For some reason my new Emacs config that uses rust-analyzer requires edition to be set in rustfmt.toml, not just Cargo.toml. Sponsored-by: author
2021-07-22Merge branch 'feature/114-replace-string-with-chunkid' into 'main'Lars Wirzenius2-4/+6
In errors, store chunk ids as `ChunkId`, not `String` Closes #114 See merge request obnam/obnam!165
2021-07-22Merge branch 'feature/115-no-custom-results' into 'main'Lars Wirzenius12-133/+136
Replace custom result types with standard `Result` Closes #115 See merge request obnam/obnam!166
2021-07-21Replace StoreResult with plain ResultAlexander Batischev1-6/+3
2021-07-21Replace IndexedResult with plain ResultAlexander Batischev1-11/+8
2021-07-21Replace IndexResult with plain ResultAlexander Batischev1-19/+16
2021-07-21Replace LocalGenerationResult with plain ResultAlexander Batischev1-24/+32
I do not plan to simplify the `T` in the return type of `get_file_and_fileno` because that function is only ever called from inside the module; it doesn't seem worthwhile to introduce a new type there.
2021-07-21Replace NascentResult with plain ResultAlexander Batischev1-5/+3
2021-07-21Replace FsIterResult with plain ResultAlexander Batischev2-8/+6
2021-07-21Replace FsEntryResult with plain ResultAlexander Batischev1-4/+2
2021-07-21Replace ClientConfigResult with plain ResultAlexander Batischev1-3/+1
2021-07-21Replace RestoreResult with plain ResultAlexander Batischev1-11/+9
2021-07-21Replace ClientResult with plain ResultAlexander Batischev1-20/+22
2021-07-21Replace ChunkerResult with plain ResultAlexander Batischev1-5/+3
2021-07-21Replace GenerationChunkResult with plain ResultAlexander Batischev1-5/+2
2021-07-21backup_run: replace tuple with a structAlexander Batischev2-9/+25
2021-07-21Replace BackupResult with plain ResultAlexander Batischev2-7/+8
2021-07-21In errors, store chunk ids as `ChunkId`, not `String`Alexander Batischev2-4/+6
Fixes #114.
2021-07-19Merge branch 'pywrite' into 'main'Lars Wirzenius2-4/+8
test: use better way to write files in Python See merge request obnam/obnam!164
2021-07-19test: use better way to write files in PythonLars Wirzenius2-4/+8
"open(...).write(...)" does not necessarily close the file, and thus flush buffered writes to disk. "with open(...)" does. Sponsored-by: author