Skip to content

feat(upload): Resumable uploads - #19923

Open
jjbayer wants to merge 6 commits into
masterfrom
feat/resumable-uploads
Open

jjbayer wants to merge 6 commits into
masterfrom
feat/resumable-uploads

Conversation

@jjbayer

@jjbayer jjbayer commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

Updates the spec on how to upload large files via the /upload endpoint.

Closes: INGEST-777

@linear-code

linear-code Bot commented Oct 12, 2026

Copy link
Copy Markdown

INGEST-777

@github-actions github-actions Bot added sdk-develop-docs PRs touching develop-docs/sdk Priority: Needs Triage The PR description is missing valid priority information labels Oct 12, 2026
@vercel

vercel Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
develop-docs Ready Ready Preview Oct 13, 2026 1:23pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
sentry-docs Ignored Ignored Preview Oct 13, 2026 1:23pm UTC

Request Review

HTTP/1.1 204 No Content
Tus-Resumable: 1.0.0
Upload-Offset: 53477376
Upload-Metadata: sentry eyJhdHRhY2htZW50X3R5cGUiOiJldmVudC5hdHRhY2htZW50In0="

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tobias-wilfert according to the tus spec:

If an upload contains additional metadata, responses to HEAD requests MUST include the Upload-Metadata header and its value as specified by the Client during the creation.

I would only do this if it is easy to obtain from objectstore though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked, just to be sure, and we don't actually currently store this anywhere :/

@jjbayer
jjbayer marked this pull request as ready for review October 13, 2026 08:28
@github-actions

Copy link
Copy Markdown
Contributor

Please update the IS YOUR CHANGE URGENT? section of the PR description:

  • Select exactly one option.
  • If you selected an urgent or other deadline, provide the date as YYYY-MM-DD.

This information helps the Docs team prioritize your review.

@cursor

cursor Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

The plan checks that the new upload guide is reachable.
It also checks that the parent attachments page still loads.
It watches 404s and client errors.
An issue escalates when those 404s appear or client errors rise.

Services: develop-docs.

Mention @change-monitor in a comment to update the plan.

Plan

What changed

Readers of the attachments spec now follow a link to a new resumable-upload guide for large files.
The new page tells SDKs to honor chunk-size headers, resume with HEAD, send X-Decoded-Content-Length, and use only the final Location as the placeholder.
This change is live after a production deploy of develop-docs.
The path match is develop-docs/ MDX only. The Vercel project develop-docs ships it.

Risk

A broken page or a bad link returns 404 for the new guide.
SDK authors then cannot follow the large-file upload protocol.
The attachments index can also fail to render if the remaining spec is invalid.
Incorrect protocol text cannot be seen in site telemetry.

Intended effect

The new guide must load at /sdk/telemetry/attachments/upload/.
confirmed is any docs.page.load count above zero on that path.
absent is the parent attachments page still loading while this path stays at zero and sdk/telemetry 404s rise.
If the parent path stays near four loads and 404s stay at zero, leave intended effect unknown. Traffic is too low to prove a miss.

Signal Baseline Rule Source
docs.page.load on path */sdk/telemetry/attachments/upload* 0 in 2026-10-12T08:29:00Z to 2026-10-13T08:29:00Z. This path is new. Hold is zero. Confirmed if the count rises above zero. Sentry metrics, org sentry, project develop-docs. Query sentry.environment:production path:*/sdk/telemetry/attachments/upload*. Field sum(value, docs.page.load, counter, none).

Regression watch

A bad MDX page or a broken link 404s the attachments tree.
Client errors are the symptom on-call would see if the page crashes.
The parent attachments path is the sibling that this diff edited.
Daily error counts were lower on the weekend. A Saturday drop is not a success.

Signal Baseline Rule Source
docs.page.not_found for requested_path matching sdk/telemetry 0 in 2026-10-12T08:29:00Z to 2026-10-13T08:29:00Z Detected if the count rises above zero. Sentry metrics, org sentry, project develop-docs. Query requested_path:*sdk/telemetry* environment:production. Field sum(value, docs.page.not_found, counter, none).
Production error events vs page loads 59 errors and 2360 docs.page.load counts in 2026-10-12T08:29:00Z to 2026-10-13T08:29:00Z. Ratio 2.5%. Complete UTC days 2026-10-06 through 2026-10-12 ranged 8-67 errors per day. Detected if a complete UTC day rises above 67, or a rolling 24h error-to-load ratio rises well above 2.5% while page loads hold. Sentry errors, query environment:production, field count(). Page-load denominator is docs.page.load with query environment:production.
docs.page.load on path */sdk/telemetry/attachments* 4 in 2026-10-12T08:29:00Z to 2026-10-13T08:29:00Z. Volume is low. Detected if this count falls to zero while sitewide docs.page.load still holds near 2360 per 24h. Sentry metrics. Query path:"*/sdk/telemetry/attachments*" sentry.environment:production. Field sum(value, docs.page.load, counter, none).
Sitewide docs.page.not_found 5 in 2026-10-12T08:29:00Z to 2026-10-13T08:29:00Z. Paths were sdk/foundations at 3 and self-hosted/experimental at 2. Detected if a 24h total rises well above 5, or a new sdk/telemetry bucket appears. Sentry metrics. Query environment:production. Group by requested_path. Field sum(value, docs.page.not_found, counter, none).

Not observable

Whether SDK authors send the new protocol to ingest is not visible on this site.
This change does not ship the upload endpoint.
Missing in-page anchors do not emit docs.page.not_found.

```
HTTP/1.1 204 No Content
Tus-Resumable: 1.0.0
Upload-Offset: 5695864832

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Can we make this value equal to the X-Decoded-Content-Length: 1073741824 above so that it show s that the upload offset should match the declared length for the final upload?

@tobias-wilfert tobias-wilfert left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the small nit looks good.

This branch was successfully deployed

1 active deployment
Preview – develop-docs — 1138b1dc Deployed Oct 13, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Priority: Needs Triage The PR description is missing valid priority information sdk-develop-docs PRs touching develop-docs/sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants