Closed iglesiasbrandon closed 1 year ago
Notes:
Uploads are not paid and everything about them is already encrypted and signed. We should be able to get away with having uploads be a single signed order and a byte dump without TLS. We should be able to make this way faster.
To do: evaluate what similar opportunities exist for downloads
StreamBuffer
type that buffers Write
s and lets you grab multiple independent Reader
s from itStreamBuffer
has back-pressure built in so that there is bounded write-ahead from the furthest advanced Reader
.StreamBuffer
can be disk or memory backedStreamSpliiter
type that accepts Write
s and exports a Next
method to get you the next StreamBuffer
containing some number of bytes.StreamSplitter
has minimum and maximum split amounts, so that you can tell if you need to do an inline segment.I made this project for this .. project: https://github.com/orgs/storj/projects/30/views/1
Note: We started implementing this in Sprint 8 but did some research and design in Sprint 3.
Now expected to be delivered sprint 13. Competing priorities lead to delays in building test automation and finishing QA. Also have a ticket scheduled for sprint 13 to allow it to be enabled but behind a config flag.
Pushing this to a sprint 15 delivery date. We are addressing performance issues related to the refactored upload codepath. Uplink will be reverted to the previous version while we implement improvements.
We are going to move this item to sprint 16. We are having trouble replicating the issue, so we added some monitoring, and those changes are being deployed as a part of v1.80.2 https://github.com/storj/storj/pull/5917
Once these changes are deployed, we hope the extra monitoring will help us uncover and resolve the issue.
The logging we need to help identify the remaining bug was deployed on 6/1. We will monitor this next week and figure out what the issue is so that we can resolve it.
We still dont know what the problem is with the upload code path refactor we need to move this back again.
We have discovered the fixed the issue that will make it so that the new and old upload code paths at least match in performance.
Once that PR is merged, we should consider this issue completed. We also found another limitation that could improve the upload performance even further that we can work on in the future. https://github.com/storj/storj/issues/6020
With the release of uplink v1.11.0, we can call this roadmap item completed!
This was the last bug we were working on in regard to this roadmap item:
https://github.com/storj/uplink/issues/147 https://review.dev.storj.io/c/storj/uplink/+/10730
Summary:
We want to Rewrite or refactor the code that performs uploads and downloads inside libuplink to enable a collection of new features and improve upon lessons we've learned from the existing code.
Pain Point:
Our current upload code is rigid and brittle. It has encryption and erasure coding tied too tightly together, and it has hardcoded assumptions about long-tail management and segment pipelining.
Milestone:
https://github.com/storj/uplink/milestone/2
Intended Outcome: