Commit Graph
3969 Commits
Author SHA1 Message Date
Joris c93e0eed4d Processed code review findings 2019-03-21 10:14:57 +01:00
Joris eeab3ced58 Removed unnecessary GetResponse calls 2019-03-20 09:12:19 +01:00
JorisandGitHub 38968d03eb Removing Codacy recommendation 2019-03-19 21:44:22 +01:00
JorisandGitHub 719360a899 Merge branch 'master' into master 2019-03-19 21:40:46 +01:00
Joris c46e07b1e5 Implemented Jottacloud multithreaded downloading support 2019-03-19 19:32:00 +01: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 1f388f4d03 Fix MegaBackend null reference exception
null was being passed to UploadAsync instead of an instance of an IProgress class.
MegaApiClient does not check if IProgress is null before using it.
2019-03-17 22:14:00 -05: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 c05f304fd7 Update S3, Sharepoint, Tahoe, and WEBDAV backends for async Put 2019-03-05 21:25:35 -06:00
Sean Templeton 13f83a22a1 Update Mega, OneDrive, and Rclone backends for async Put 2019-03-05 21:25:29 -06:00
Sean Templeton c3472823de Update HubiC and OpenStack backends for async Put 2019-03-05 21:08:26 -06:00
Sean Templeton 7843f837a4 Update Google Cloud and Drive backends for async Put 2019-03-05 21:08:25 -06:00
Sean Templeton 9a42eca1d6 Update FTP and Jottacloud backends for async Put 2019-03-05 21:08:25 -06:00
Sean Templeton 4ca067a8f2 Update Dropbox and File backends for async Put 2019-03-05 21:08:25 -06:00
Sean Templeton 7f09c7af27 Update Box and Rackspace Cloud Files backends for async Put 2019-03-05 21:08:25 -06:00
Sean Templeton 5db326bcdb Update Azure Blob and Backblaze B2 backends for async Put 2019-03-05 21:08:24 -06:00
Sean Templeton b1c6e9798d Update Amazon Cloud Drive backend for async Put 2019-03-05 21:08:14 -06:00
Sean Templeton 662627a98a Update AlternativeFtp Backend for async Put
Removed System.Net.FtpClient and added the FluentFTP Nuget package which
is the new name of System.Net.FtpClient.
2019-03-03 21:43:13 -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 9d3fb26989 Merge pull request #3677 from FroggieFrog/update-known-locations
added new known locations of S3
2019-02-25 23:45:47 +01:00
FroggieFrog 496b923079 added new known locations of S3 2019-02-25 16:24:28 +01:00
FroggieFrog 97894bc655 fix #3665 added "Wasabi Hot Storage (EU Central)" 2019-02-25 16:13:57 +01:00
Rune HenriksenandGitHub 63b154ff41 Merge pull request #3654 from aahung/b2-custom-download-url
Allow to use custom domain for b2 DownloadUrl #3653
2019-02-20 20:48:18 +01:00
_sam 49c70503b8 Change the long description of B2_DOWNLOAD_URL_OPTION, #3654 2019-02-20 11:35:59 -08: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
Andrew Meyer 0dc2199c13 Fix Sia API authentication not sending credentials
.NET's `System.Net.NetworkCredential` ignores credentials with blank usernames,
so instead we'll set the Authorization header manually.
2019-02-09 12:06:08 -06:00
_sam 690b4f9041 Allow to use custom domain for b2 DownloadUrl #3653
- how custom download url can be set with option "b2-download-url"
2019-02-08 16:23:37 -08:00