Skip to content

Feature/multipart chunked upload#1621

Open
alexott wants to merge 7 commits intodatabricks:mainfrom
alexott:feature/multipart-chunked-upload
Open

Feature/multipart chunked upload#1621
alexott wants to merge 7 commits intodatabricks:mainfrom
alexott:feature/multipart-chunked-upload

Conversation

@alexott
Copy link
Copy Markdown
Contributor

@alexott alexott commented Apr 13, 2026

Summary

Implement upload of big files (> 5Gb) to UC Volumes using multipart chunking. That functionality already exists in Python SDK, but is missing in the Go SDK.

It will require some modifications in the codegen to support new functionality

Why

databricks/terraform-provider-databricks#5521 is asking for support of big files, but Go SDK doesn't have this functionality

What changed

Interface changes

New functions are added to Files interface (requires codegen changes)

Behavioral changes

Internal changes

How is this tested?

Unit tests were added

alexott added 7 commits April 13, 2026 11:19
…tipart upload

Signed-off-by: Alex Ott <alexey.ott@databricks.com>
…rts, complete)

Co-authored-by: Isaac
Signed-off-by: Alex Ott <alexey.ott@databricks.com>
…FromFile

Signed-off-by: Alex Ott <alexey.ott@databricks.com>
Best-effort abort of incomplete multipart uploads when a part upload
fails, preventing orphaned upload sessions on the server.

Signed-off-by: Alex Ott <alexey.ott@databricks.com>
Signed-off-by: Alex Ott <alexey.ott@databricks.com>
- Fix URL expiration retry to fetch fresh presigned URLs instead of
  retrying the same expired URL
- Remove total http.Client timeout that would kill large part uploads;
  rely on context cancellation instead
- Add context cancellation checks in the main upload loop
- Extract partUploadError type for structured error handling

Signed-off-by: Alex Ott <alexey.ott@databricks.com>
…est coverage

Address review feedback: expose upload methods via FilesInterface, fall back
to single-shot upload when the first multipart chunk fails, validate
contentLength matches actual bytes read, and add tests for all new paths.

Co-authored-by: Isaac
@alexott alexott temporarily deployed to test-trigger-is April 13, 2026 11:00 — with GitHub Actions Inactive
@github-actions
Copy link
Copy Markdown

If integration tests don't run automatically, an authorized user can run them manually by following the instructions below:

Trigger:
go/deco-tests-run/sdk-go

Inputs:

  • PR number: 1621
  • Commit SHA: 05dc9acd2d749f389b6de4152dd0565a38d9e8d7

Checks will be approved automatically on success.

@github-actions
Copy link
Copy Markdown

Please ensure that the NEXT_CHANGELOG.md file is updated with any relevant changes.
If this is not necessary for your PR, please include the following in your PR description:
NO_CHANGELOG=true
and rerun the job.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant