Commit Graph
182 Commits
Author SHA1 Message Date
Carl-Johannes JohnsenandGitHub 476774640a Merge pull request #5991 from carljohnsen/performance/restoreopt2 2025-02-28 13:03:25 +01:00
Kenneth Skovhede f77e529eb6 Merge commit '2339aeff28adba15442d0be60c56568ae642ad0b' into feature/make-backends-async 2025-02-26 15:23:48 +01:00
Carl Johnsen c5ebf4fa71 Added the restore channel depth option 2025-02-25 16:19:04 +01:00
Carl Johnsen 9919d86e9b Updated VolumeDownloader to use the new BackendManager.GetDirectAsync() method 2025-02-19 16:12:42 +01:00
Carl Johnsen 2c06820281 Made the BackendManager.GetOperations' decryption methods static and public so the restores VolumeDecryptor can use the same code. 2025-02-19 16:09:32 +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 ce60b807c8 Added additional profiling logging 2025-02-18 09:18:46 +01:00
Kenneth Skovhede 7031bc57b6 Adding ConfigureAwait(false) to all async enumerations 2025-02-18 09:18:36 +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 88846251b1 Restoring a symlink that already exists triggers an overwrite of the file, which should count towards number of files restored. 2025-01-06 08:14:32 +01:00
Kenneth SkovhedeandGitHub ff1b2b7990 Simplified task control (#5753)
* Simplified task control by having all logic in a single class and using async control mechanism
* Fixed the tests
* Made the marking of a backup partial explicitly communicated if the enumeration process is stopped.
* Added support for pausing active transfers
* Introduced transfer token to abort operations.
* Updated the way LiveControl is emitting events.
* Retains the paused state of the server across reboots, this fixes #5760.
* Reworked the way throttle speeds are propagated through LiveControls.
* Added option to pause transfers in the UI.
* Removed throttle settings from the LiveControls class so it is exclusively handled by the ApplicationSettings.
* Removed `thread-priority` as it does not work at all when tasks are used.
* Fixed the stop dialog and API to only support stop and abort.
* Removed unused variables
2024-12-18 08:27:59 +01:00
Carl Johnsen c13482cf4c Removed unnecessary CoCoL channel scope 2024-12-10 10:28:44 +01:00
Carl Johnsen 5bc12e3d46 Changed the reporting of broken local and remote files during restore to only report the first 10 filenames. 2024-12-10 06:57:56 +01:00
Carl Johnsen ce9a85c3ff Reintroduced comment and version fix, which shouldn't have been removed. 2024-12-10 06:43:51 +01:00
Carl Johnsen 2d6e1d7ff7 Changed the new restore version to use explicit CoCoL channels 2024-12-10 04:10:34 +01:00
Carl Johnsen 7b12eb8a67 When deleting a symlink, we should check whether it is a file or a directory, as each have their own function call 2024-12-05 16:39:01 +01:00
Carl Johnsen 5680fa3e15 If the restore operation threw an exception, the database wouldn't be closed properly, leading to subsequent tests failing due to the file being locked. 2024-12-05 08:49:36 +01:00
Carl Johnsen 0e36c4393a Added progress printing during restore 2024-12-03 10:35:33 +01:00
Carl Johnsen 2b0dc0613f Added handling of existing symlinks 2024-12-03 10:04:08 +01:00
Carl Johnsen c2e7275e1e Removed unused metadatastorage in the new restore flow 2024-12-03 09:39:46 +01:00
Carl Johnsen f0c3fddfa2 Found runaway TODO 2024-12-03 09:11:42 +01:00
Carl Johnsen 1e3e67c053 Update the construction of the processes within RestoreHandler 2024-12-02 20:48:20 +01:00
Carl Johnsen 6c66fee921 Cleanup FileProcessor and rework docstrings 2024-12-02 20:27:21 +01:00
Carl Johnsen e7b2338214 Renamed VolumeCache to VolumeManager for consistency 2024-12-02 15:43:52 +01:00
Carl Johnsen 7aa19f851e Add configurable volume downloaders for restore process 2024-12-02 15:16:21 +01:00
Carl Johnsen 533088684b Consistent naming of decryptors 2024-12-02 15:12:50 +01:00
Carl Johnsen b6ed72bd6c Reworked the restore CSP network 2024-12-02 15:09:23 +01:00
Carl Johnsen cdf0c28fd8 Added internal profiling as an option. Currently only implemented in the restore process. 2024-11-29 05:49:03 +01:00
Carl Johnsen 7aa9db533e Added preliminary metadata restoration 2024-11-26 20:01:19 +01:00
Carl Johnsen 823b896da1 Removed redundant TODOs 2024-11-25 15:23:59 +01:00
Carl Johnsen 5625c4c1ce Add configurable options for scaling the number of restore file processors, decryptors, and decompressors 2024-11-22 16:53:16 +01:00
Carl Johnsen fe6f91dc9a Add option for using legacy restore method 2024-11-22 16:40:54 +01:00
Carl Johnsen de24a9f15a Added the option to control the size of the data block cache during restore 2024-11-22 16:24:27 +01:00
Carl Johnsen 0cd9374bed Added comments and docstrings 2024-11-22 15:26:04 +01:00
Carl Johnsen 890fa2ce52 Add copyright notices 2024-11-22 11:47:07 +01:00
Carl Johnsen c79793dbe2 Using the field result rather than passing it as an argument 2024-11-22 11:09:47 +01:00
Carl Johnsen 1fc3212144 Added logging of the local and remote files thay may fail during restoration 2024-11-22 11:09:17 +01:00
Carl Johnsen b18504864f Changed to simple using statement on metadatastorage 2024-11-21 20:56:12 +01:00
Carl Johnsen 7717f32e77 Added tracking of errors on remote files during restoration 2024-11-21 20:55:20 +01:00
Carl Johnsen 0d7b9403c9 The SleepableDictionary now keeps track of which blocks to restore, so that it only caches the blocks that needs to be cached. 2024-11-19 10:35:57 +01:00
Carl Johnsen 878780dfe4 Added Database.ExecuteReaderEnumerable for prepared statements 2024-11-19 10:32:54 +01:00
Carl Johnsen c1751879b2 Started restructuring to return to the original structure and filelister shouldn't be doing the prepatory database work. 2024-11-15 20:32:46 +01:00
Carl Johnsen effd50985f The real deadlock on process network initialization was found: the volume downloader did not write asynchronously, which would result it waiting on writing to a process that would never be created. 2024-11-15 12:57:55 +01:00
Carl Johnsen d65937bab7 Restructuring process network generation to allow for easier debugging. 2024-11-15 08:53:54 +01:00
Carl Johnsen dc73380fe8 To minimize database requests (or at least where they emerge), query the database once per block per file, once per newly downloaded volume, and once to build the file list. The results are then "shipped" around the network along with the previous messages. 2024-11-13 16:55:47 +01:00
Carl Johnsen 569e927e13 Added an explicit wait for backend to complete after running the restore 2024-11-13 14:27:46 +01:00
Carl Johnsen c5eaf409c9 Added preliminary scaling parameters 2024-11-13 14:27:19 +01:00
Carl Johnsen afa2e9bf07 Added more progress keeping and running the original verification step. 2024-11-08 16:05:57 +01:00