Commit Graph
1925 Commits
Author SHA1 Message Date
Kenneth Hsu da4dabe838 Fix typo in async property name. 2019-03-28 20:53:55 -07:00
Kenneth SkovhedeandGitHub 57b28182cb Merge pull request #3684 from seantempleton/parallelupload
Implement parallel uploads to a single backend
2019-03-19 08:41:33 +01:00
Sean Templeton b02b19e683 Change Put method name to PutAsync 2019-03-17 18:28:45 -05:00
Sean Templeton 19c1c908df Check upload throttle speed every 2 seconds
The upload throttle speed was being checked on average once every
5 milliseconds.

Changed a few variable names.
2019-03-13 21:51:06 -05:00
Sean Templeton cc3e94fece Fix code review comments and other minor changes
- Rename indexVolume to indexVolumeWriter in DataBlockProcessor to reduce
confusion.

- When flushing the remaining uploads, check the tasks for exceptions in
completion order rather than waiting for them all at once. If there is an
exception all other uploads are cancelled anyway.

- Remove setting the operation progress as Backup_WaitForUpload in the
BackendUploader since the BackupHandler sets it.

- Use an exception filter in BackendUploader.

- Use Options property MaxUploadPrSecond instead of getting the raw value.
2019-03-13 21:51:06 -05:00
Sean Templeton 8bd4b825c8 Fix several Codacy issues 2019-03-13 21:51:05 -05:00
Sean Templeton 61f511c087 Properly catch exceptions from an upload and cancel all other uploads
If a backend throws an exception while uploading, cancel other uploads and
throw an exception from the BackendUploader. Exceptions from cancelled
uploads are caught and not thrown so as to not spam the user with useless
information.
2019-03-13 21:51:02 -05:00
Kenneth Hsu a1d8637c3a Fix typo in comment. 2019-03-11 21:37:42 -07:00
Kenneth Hsu e57c714ee8 Dispose of manually enumerated enumerator.
The IEnumerator<T> interface implements IDisposable, so the enumerator
should be disposed of after its use.
2019-03-11 21:15:00 -07:00
Sean Templeton ac08aa2fb1 Dynamically throttle and track the progress of concurrent uploads
Changed AddBackendEvent() in ResultClasses to allow the option to not update
the backend progress. This allows the  BackendUploader to log the act of starting
an upload without changing the backend progress. The backend progress is now
handled by a new class, FileProgressThrottler, which will determine the transfer
rate of all uploads currently in progress.

This class also handles throttling the upload streams. The algorithm will try
to decrease or increase the streams throttle rates as appropriate by changing
the value based on the over/under amount or based on a percentage to prevent
throttling one stream directly to zero.
2019-03-05 21:25:35 -06:00
Sean Templeton 12b15c09c8 Add asynchronous-concurrent-upload-limit option
This new option limits the number of concurrent uploads allowed when
performing asynchronous uploads. The default value is 4.
2019-03-05 21:25:35 -06:00
Sean Templeton 0c122ff550 Change IBackend and IStreamingBackend to return Task for Put() 2019-03-03 21:43:10 -06:00
Sean Templeton 3de04da39e Run each upload on a separate thread
Added a small Worker class, private to the BackendUploader, to track the
upload tasks and the backend for each task.
2019-03-03 21:43:00 -06:00
Sean Templeton 1029d99e10 Simplify BackendUploader and remove unnecessary code 2019-03-03 21:42:58 -06:00
Sean Templeton 05c3f4808c Move encrypting, hashing, and creating index volumes out of BackendUploader
Encrypting, hashing, and creating index volumes are now done
in the DataBlockProcessor and the SpillCollectorProcess. This allows
uploads to always be transferring data and not have to stop to create
a file, encrypt data, etc.
2019-03-03 21:41:09 -06:00
Sean Templeton 4f4529a88a Move upload related code from BackendHandler to BackendUploader
As the BackendUploader is in charge of uploads the code has been moved
there to centralize the responsibility and prepare for parallel uploads.
2019-03-03 21:35:09 -06:00
Kenneth SkovhedeandGitHub 356ca81d8b Merge pull request #3662 from warwickmm/remove_temporary_files
Remove temporary files from backup and compact operations
2019-02-26 14:22:18 +01:00
Rune HenriksenandGitHub 0c49d375b2 Merge pull request #3667 from warwickmm/fix_log_message_id
Fix spelling error in log message identifier
2019-02-20 17:28:36 +01:00
Rune HenriksenandGitHub 777876556e Merge pull request #3666 from warwickmm/avoid_null_reference
Avoid potential null reference exception
2019-02-20 17:28:08 +01:00
Kenneth Hsu 224a895975 Fix spelling error in log message id. 2019-02-19 20:23:07 -08:00
Rune HenriksenandGitHub 59732d5f49 Merge pull request #3663 from warwickmm/remove_unused_option_collections
Remove unused Options properties
2019-02-19 23:54:32 +01:00
Kenneth Hsu 8a31eac5c0 Avoid potential null reference exception. 2019-02-18 12:50:46 -08:00
Kenneth Hsu 1dc7d70b6e Fix spelling error in log message. 2019-02-18 12:12:32 -08:00
Kenneth Hsu ffc2997b0f Remove unused Options properties.
These collection of options are not being used, and have not been
maintained.
2019-02-17 18:43:31 -08:00
Kenneth Hsu e82c11b39b Avoid possible null reference exception. 2019-02-16 20:43:05 -08:00
Kenneth Hsu daf0311bf8 Allow removal of VolumeWriterBase temp files.
This reverts a change made in revision 31ac40083a ("Prevent temp files
in VolumeWriterBase from being deleted prematurely" in pull request #2637).
It's unclear what issue was being worked around by preventing the
removal of the temporary files (based on comments in pull request #2637,
it appears to be related to tests that failed only on Travis).  However,
this workaround prevented the removal of temporary files created during
compact operations, which caused several users' temporary directories to
be filled up with files that should have been removed.

This concerns issue #3652.
2019-02-16 19:53:06 -08:00
Kenneth Hsu 3fc9276cdd Remove temp files when compact operation is not performed.
This concerns issue #3652.
2019-02-16 19:53:06 -08:00
Kenneth Hsu c27ea24826 Ensure that FilesetVolumeWriter removes temp file upon disposal.
This ensures the removal of the temporary file containing the
filelist.json that remained regardless if files needed to be uploaded or
not.

This concerns issue #3652.
2019-02-16 19:53:06 -08:00
Kenneth Skovhede c01ab02712 Added support for "splitting" a root path.
This is a potential fix for #3637
2019-02-04 17:32:56 +01:00
Kenneth Skovhede 8b3dfcace8 Fixed the database upgrade script to copy over file IDs to avoid breaking databases on upgrade 2019-01-30 11:03:44 +01:00
Rune HenriksenandGitHub c1578c6c0e Merge pull request #3631 from warwickmm/remove_optional_parameters
Make parameters to Controller.ListControlFiles method required
2019-01-26 09:11:36 +01:00
Kenneth Hsu df32525a47 Make parameters to Controller.ListControlFiles method required.
There is only one usage of this method, and it provides both parameters.
2019-01-25 20:19:33 -08:00
Rune HenriksenandGitHub f5f353fe19 Merge branch 'master' into feature/fix_path_storage2 2019-01-25 23:37:57 +01:00
Rune HenriksenandGitHub 11ab3f5bc5 Merge pull request #3623 from warwickmm/remove_optional_parameters
Remove optional parameters from Controller.List overloads
2019-01-25 23:30:11 +01:00
Kenneth Hsu 5e0b44b32c Remove unused method. 2019-01-22 21:13:07 -08:00
Kenneth Hsu b75b439772 Make optional parameter required.
There is only one usage of this method that did not provide value for
the filter parameter.  By making this parameter required, we can avoid
the many issues that arise with optional parameters (default values
being embedded at the call sites, ambiguous overload resolution, etc.).
2019-01-22 17:53:25 -08:00
Kenneth Hsu 8abce38215 Remove unnecessary optional parameter.
No current usages of this method provide an argument for this parameter.
2019-01-22 17:44:55 -08:00
Kenneth Hsu b5d9451b33 Remove redundant casts. 2019-01-21 19:30:52 -08:00
Kenneth SkovhedeandGitHub b961fbd744 Merge pull request #3584 from Pectojin/remove_build_lookup_table_method
Remove unsed method and call
2019-01-13 10:31:24 +01:00
MaxandRune Henriksen 65e79a276b fix for unc paths in prefixes (#3599) 2019-01-12 01:12:51 +01:00
Rune Henriksen 639edc1e36 removed reference to deleted method 2019-01-11 20:16:59 +01:00
Rune Henriksen f43d094a23 set argument as disabled and remove flag toggle method 2019-01-11 20:11:30 +01:00
Kenneth Hsu 02e1a02100 Further clarify that remote files are used for verification. 2019-01-05 10:22:58 -08:00
Kenneth Hsu 8bf9c73dbc Clarify help text for verification options.
This will hopefully make it clearer that the files being selected for
verification are those on the remote backend, and not user files that
are being backed up.
2019-01-05 10:00:39 -08:00
HendrikandGitHub c34c66bd34 Merge pull request #3582 from warwickmm/backup_test_percentage
Add option to specify percentage of samples for verification
2019-01-05 18:52:27 +01:00
Rune Henriksen f696842877 remove unsed method and call 2019-01-05 00:30:43 +01:00
Rune HenriksenandGitHub a951987dcd Merge pull request #3577 from warwickmm/remove_unused_local_variables
Remove unused local variables
2019-01-05 00:13:55 +01:00
Kenneth Hsu b4232ce1bf Provide more meaningful exception message. 2019-01-04 13:02:58 -08:00
Kenneth Hsu 52790cc7a9 Throw exception if backup-test-percentage is out of range. 2019-01-04 12:21:37 -08:00
Kenneth Hsu edfa7096f6 Add option to specify percentage of samples for verification.
This addresses issue #3296.
2019-01-02 15:51:19 -08:00