Commit Graph
34 Commits
Author SHA1 Message Date
Carl Johnsen cd4e23efc4 Moved instantiation of the volume wrapper to the volume decryptor 2025-10-03 08:25:46 +02:00
Carl Johnsen 0c1643568e Volume cache now counts the size of the volumes, not just the count of the volumes 2025-10-03 08:11:04 +02:00
Carl Johnsen 48e5a57654 Adapted volume cache eviction to only evict on a download response 2025-10-03 07:51:24 +02:00
Carl Johnsen 42cba24bd9 Removed old decompress in flight code 2025-10-03 07:50:48 +02:00
Carl Johnsen d03259d687 Redacted the ack channel in the restore process network in favor of a referenced counted volume wrapper that'll dispose the reader and tempfile once safe. 2025-10-02 21:40:40 +02:00
Carl Johnsen 36ce099e6d Added additional toggle-able debug prints to the restore flow 2025-09-30 21:18:28 +02:00
Carl Johnsen 3e10b8446a Changed the wording of the new volume cache parameter 2025-08-14 17:20:58 +02:00
Carl Johnsen 1a7321556e Changed the decompression ack channel type to long 2025-08-10 20:59:33 +02:00
Carl Johnsen 0fd3e515da Ensured that an actively read volume in the volumemanager cannot be disposed 2025-08-10 20:55:02 +02:00
Carl Johnsen dfc92c71b1 Added more rendevouz points to allow for aborting during deadlocks 2025-08-10 20:54:13 +02:00
Carl Johnsen f85727bf3a Added explicit debug printing 2025-08-10 20:34:26 +02:00
Carl Johnsen fd94ae9f08 Added additional explicit logging 2025-08-10 07:41:29 +02:00
Carl Johnsen 537ee9c4cb Final eviction should always happen, and some caching is always needed in the new restore flow 2025-08-10 07:39:22 +02:00
Carl Johnsen e8f7244ac2 A log message was a warning, when it shouldn't be. 2025-08-08 15:45:17 +02:00
Carl Johnsen 8087823ee5 Moved internal VolumeManager functionality to functions 2025-08-08 15:45:00 +02:00
Carl Johnsen f54ccbcca6 Made VolumeManager nullable 2025-08-08 15:44:23 +02:00
Carl Johnsen 9d9dd95003 Made some of the debug logging more differentiable 2025-08-08 14:11:21 +02:00
Carl Johnsen 2ad6a9e730 Reverted ReadFromEither back to two channels alongside an explicit flushing of the ack channel to prevent deadlock. 2025-08-08 14:08:41 +02:00
Carl Johnsen 8dfe328ea8 Updated the ReadFromEither workaround to include another channel, and to be prioritized based on the order of the channels. 2025-08-08 12:42:50 +02:00
Carl Johnsen 0f950b2102 Updated BlockManager.VolumeConsumer and VolumeManager to ack the decompression requests.
Also made VolumeManager keep track of which volumes are safe to dispose.
2025-08-08 12:41:17 +02:00
Kenneth Skovhede f592029c3d Fixed rare deadlock on restore failure 2025-05-28 14:35:00 +02:00
Carl Johnsen 1650399fe6 Added explicit logging to trace a block request through the new restore network 2025-03-03 17:33:20 +01:00
Carl Johnsen ef2c7e5187 Keeping a reference to the temp file ensures it is not caught by the garbage collector, which in turn disposes the temp file, in turn in turn deleting it. 2025-03-03 17:18:12 +01:00
Carl Johnsen d7b8d13bc0 VolumeDecryptor and VolumeManager were unnecessarily sending around and keeping track of disposed encrypted volumes 2025-02-25 16:39:28 +01:00
Carl Johnsen a0d5096ebc Reworked the "Volume loop" of the restore network to handle Backends themselves, rather than using the BackendManager.
This allows for tighter control over which process performs which action, allowing them more easily to run in parallel.
2025-02-18 09:25:20 +01:00
Carl Johnsen 17e2c0b9cf Added ConfigureAwait(false) 2025-02-18 09:20:28 +01:00
Carl Johnsen 93756cd74b Whitespace fixes 2025-02-18 09:17:08 +01:00
Kenneth SkovhedeandGitHub d99f74ed94 Rewrite the backend manager. (#5896)
* Rewrite the backend manager.

This creates a new more logic backend manager that handles all backend operations.

For each top-level operation, there is now a single backend manager instance that is passed to sub-commands.

The internals of the backend manager are now rewritten to use async logic instead of threading.

The design uses a single task runner that dispatches operations and honors concurrent settings and limits from one place.

The logic for each operation has been moved into a separate files/classes to make it easier to understand each operation.

This fixes #5804

* Fixed a few issues with not awaiting tasks

* Fixed not creating empty databases

* Fixed an issue with hashes not being recorded on download

* Reworked the download logic to avoid attempting to decrypt the file if it has been modified.

* Review fixes

* Renamed db collector to better reflect the purpose.

* Review fixes
2025-01-28 08:54:50 +01:00
Kenneth SkovhedeandGitHub 9464caf622 Feature/update license 2025 (#5851)
* Fixed some minor whitespace issues

* Updated all copyright to 2025
2025-01-07 09:40:39 +01:00
Carl Johnsen 7f37c49292 Changed the VolumeManager to use a single input channel of type object, and then switching on the message received, rather than ReadFromAny().
Because it seems like the amount of readers in queue for one of the channels became much higher (70) than the actual number of readers (1).
2024-12-10 04:12:33 +01:00
Carl Johnsen 6ba956dfcd Moved all database operations to the LocalRestoreDatabase.
Also changed the old changes, so that the functions related to the legacy restore remains untouched.
2024-12-03 08:35:14 +01:00
Carl Johnsen 6413014c7d Added internal profiling of VolumeManager alongside proper exception handling. 2024-12-02 20:58:46 +01:00
Carl Johnsen 99adcdd17c Added license, docstrings and logging to VolumeManager 2024-12-02 20:41:56 +01:00
Carl Johnsen e7b2338214 Renamed VolumeCache to VolumeManager for consistency 2024-12-02 15:43:52 +01:00