stream rustdoc html content from S3, use streaming rewriter, stream to client #2872
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This will start streaming also rustdoc html files from S3 to the client.
First for simple cases, release specific rustdoc assets, which can directly be streamed.
Then I also added a streaming HTML rewriter.
It's a little more complex than I wanted it to be due to
Generally the first advantage is more paralelism, since we don't have to load the whole HTML into memory before handling it. Second is that we can (IMO) drop file size limits when the content is streamed.
Downside is that any error while streaming will just lead to a dropped connection on the client side, and not a classic 500. This means we would also not see a sentry error in this case.
Which is why I added
error!
calls in these cases.Metrics don't show any rewrite OOMs in the metrics, so I don't think we'll have any production issues here.