Commit Graph
21 Commits
Author SHA1 Message Date
Kenneth Skovhede b955822773 Better capture of rethrown exception 2025-07-04 16:14:04 +02:00
Kenneth Skovhede 720062b60b Merge remote-tracking branch 'origin/master' into feature/remove-http-options 2025-05-28 21:40:41 +02:00
Kenneth Skovhede ff141d9456 Improved stop handling during backend retries 2025-05-28 21:39:31 +02:00
Kenneth Skovhede c8b9fb5c73 Websocket subscriptions
This PR adds the ability to subscribe to messages over a websocket.

To prevent polling data, the server can now push messages through the websocket, so the client can instantly update when new data is available.

The change is backwards compatible, still serving the status updates over the socket. If the client is providing the authentication token, it is auto-subscried to the legacy status message.

If the client is using the new authentication message, it needs to subscribe to get the status updates (and any other services it needs).

The event system has been extended to support new, and more accurate, events. This is the first step towards removing the general status update and the long-poll mechanism.

This also re-introduces the blocking marker, so the client can know if the operation is halted due to too many pending transfers.

Some endpoints have been moved to service implementations, to allow serving the exact same data from both endpoints and websocket.

This PR also updates the way the progress is handled, so that all transfers are returned to the client, and the transfer speeds for each transfer is calculated based on a small sample buffer, so the values are more accurate even if the program is paused during transfers.
2025-05-27 12:13:07 +02:00
Kenneth Skovhede 14741a3b43 Removed some checks for WebException that is no longer used.
Changed throwing WebException to throwing HttpRequestException
2025-05-23 14:02:03 +02:00
Kenneth SkovhedeandGitHub 697a0b62d0 Merge pull request #6271 from duplicati/feature/issue6200
Flush messages after backup stop
2025-05-20 17:00:07 +02:00
Kenneth Skovhede 40b2ab4a70 Fixed case where warnings would be emitted during clean shutdown 2025-05-20 15:41:39 +02:00
Kenneth Skovhede e4689431cb Fix after moving namespace 2025-05-20 14:28:46 +02:00
Kenneth Skovhede 04c7ec5287 Flush messages after backup stop
This change now flushes all pending messages from the backendmanager to the database, even if the main operation crashes (or is stopped).

This ensures that the database and remote storage are more in sync.

Also removed a redundant warning from the backendmanager during shutdown, and simplified a check for active operations.

This fixes #6200
2025-05-20 09:23:29 +02:00
Marcelo C. d528ef6278 Fix Resource Leak in BackendManager Connection Handling
While investigating issue [#6103](https://github.com/duplicati/duplicati/issues/6103), found that connections were not disposed due to the backend pool in BackendManager's handler. Set up a FileZilla server to test the issue before and after the change, confirming that connections now close as expected with this fix.
2025-04-08 11:24:14 -03:00
Kenneth Skovhede 58da574130 Moved shutdown logic into separate method so it can be called for both uploads and downloads 2025-03-07 15:19:40 +01:00
Kenneth Skovhede 4e60a7ad49 Merge remote-tracking branch 'origin/master' into feature/improved-failure-resilience 2025-03-06 12:09:42 +01:00
Kenneth Skovhede 4f62a8a413 Fixed off-by-one for retry count 2025-03-05 09:04:46 +01:00
Kenneth Skovhede 1f7415cc8e Simplified backend manager handler code 2025-03-04 15:42:31 +01:00
Carl Johnsen 98e572714d Added a comment about downloaders in the teardown of BackendManager.Handler 2025-02-21 10:08:21 +01:00
Carl Johnsen 7612b5cce3 Ensured proper synchronization of operations in BackendManager.Handler 2025-02-21 10:07:41 +01:00
Carl Johnsen c164181ec2 BackendManager.GetOperation's were unintentionally still synchronized. 2025-02-21 10:07:09 +01:00
Carl Johnsen e2e930b2d7 Reworked BackendManager.Handler to handle multiple downloads in parallel 2025-02-19 15:55:59 +01:00
Carl Johnsen 864ce59c4a Reworded pending uploads to active to better reflect that the uploads are in progress 2025-02-19 15:55:13 +01:00
Kenneth Skovhede b1e23da40c Implemented correct shutdown of backend manager handler 2025-01-29 11:04:13 +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