feat: Add ResumableUpload interface#5299
feat: Add ResumableUpload interface#5299innovate-invent wants to merge 7 commits intorclone:masterfrom
Conversation
…mplementation lazyDir calculates size and items only when accessed
|
Competes with #4547 (Resumer interface) |
|
@innovate-invent UPDATE |
Are you referring to the ability to serve a list of hashes? That should be trivial to implement. |
Based on discussion in #4547 where you request to remove any mentions of optional rolling hashes from the upload interface I can conclude that implementing it with TUS is not that trivial. |
Nowhere do I request removing the rolling hash functionality, just relocate. I should also point out that the ResumableUpload interface was designed to serve more than the tus protocol. Implementing hashing in a Hasher interface would be trivial, and the tus uploader service would not use it. |
You request to relocate it to something that does not exist on master or in any pull request as of the time of this writing. |
I think you are misunderstanding me. I am not requesting that it be removed from your PR, I am requesting that it be moved out of the resumer interface to elsewhere in the code in your PR. |
PR #4547 is not mine. |
|
@ivandeex I implemented a CRC on the fragment uploader that is available to the backend if it is able to use it |
9a8542b to
3b70b6a
Compare
3b70b6a to
0ecb8b8
Compare
Thank you for this work. Sadly my backlog for 1.56 and 1.57 is pretty crowded. Would be great if you could fix the PR test. |
|
@ncw I would prefer a decision on which competing PR you will prefer before continuing to build out the tests and backend implementations. |
|
@ncw Is there any chance you will be able to review this soon? |
|
@ncw Hi Nick, does this mean you have decided to discard my PR? #4547 (review) |
|
@ncw @innovate-invent @mcalman I have an idea to merge #4547 after the release 1.57 - see #4547 (comment). Then between 1.57 and 1.58, while resume exists solely in beta builds, we will have enough time (2-3 months) to review and merge a series of patches:
Thoughts? |
|
@innovate-invent P.S. Resumable transfers is one of the highest demanded features (after iCloud backend and FsNotify). |
|
This project began Dec 17 2019, the TUS PR was the original PR before I split out the resumable interface to try and make it easier to review. If you have a read through https://forum.rclone.org/t/http-upload-contribution/13271/69, the interface I am proposing is a second draft that @ncw was supposed to review before I committed to and built out all the tests and documentation. We went back and forth on the specifics of the interface in that thread, refining the constraints and requirements. There are some far reaching implications with how resumable uploads are handled, especially surrounding how state is managed. As far as I am concerned, the resumable interface is still in the development phase and doesn't warrant a complete, let alone compile-able, implementation. I need @ncw to add his notes on the interface before we commit to anything. He has been largely MIA since we left off on the forum. While I would value input on the FragmentUploader and concatUploader, the main item I am waiting for feedback on is the interfaces: I also can't justify investing any more time in this until I have assurances that my work will not be simply discarded in the end. |
|
Again. This patch by nature is pretty invasive. Reviewing it just as a design pattern, a piece of code, is not enough. If nothing reasonable happens here in 3 months, I am going to allocate time next January |
|
@innovate-invent will not be merged on rclone master until 1.58, nor will it be released with 1.58 i.e. at least 3 months from now. |
|
Up. |
I am actually quite motivated to complete this PR. I just have no interest investing tremendous amounts of time on something that will be discarded in the end. This feature needs to be well integrated into the Fs interface, I am not expecting "pair coding" but simply a confirmation on the interface changes. Once the Fs interface is finalized, I can then begin implementing it more fully. My last communication with @ncw was a back and forth on the interface design. This PR, in its current state, is a demonstration of how the interface would be implemented. I did go ahead and write some utility classes to further demonstrate how the abstractions I am proposing would interact. It doesn't matter how many PRs are opened reimplementing solutions, until the interface is confirmed by @ncw nobody is getting anything merged. |
|
Is this dead ? It seems a pretty important feature still missing, and potentially needed for other stuff like generic // chunck uploads... |
What is the purpose of this change?
This adds an interface for fs to implement resumable uploads. This includes generic uploaders that do not require a backend to implement the resumable interface to benefit from the functionality.
This was split out of the TUS http uploader PR to reduce its size
Was the change discussed in an issue or in the forum before?
https://forum.rclone.org/t/http-upload-contribution/13271/69
Checklist