Skip to content

Add blob upload mode CLI flags#4

Merged
jensens merged 5 commits into
mainfrom
feat/blob-upload-modes
Mar 30, 2026
Merged

Add blob upload mode CLI flags#4
jensens merged 5 commits into
mainfrom
feat/blob-upload-modes

Conversation

@jensens

@jensens jensens commented Mar 30, 2026

Copy link
Copy Markdown
Member

Summary

  • Add --background-blobs flag: decoupled S3 uploads via background thread pool
  • Add --deferred-blobs PATH flag: write manifest file, skip S3 during migration
  • Add --upload-blobs MANIFEST flag: process deferred manifest with parallel uploads + retry
  • Thread blob_mode through copy_transactions_try_parallel_delegationcopyTransactionsFrom

Usage

# Background uploads — PG writes decoupled from S3
zodb-convert config.conf -w 8 --background-blobs

# Deferred uploads — PG only, upload later
zodb-convert config.conf -w 8 --deferred-blobs /tmp/manifest.tsv

# Upload deferred blobs
zodb-convert --upload-blobs /tmp/manifest.tsv --dest-zope-conf zope.conf -w 16

Companion PR: bluedynamics/zodb-pgjsonb (BlobSink abstraction + blob_mode parameter)

Test plan

  • 80 tests pass (76 existing + 4 new manifest tests)
  • Manual verification with --background-blobs on Hetzner migration

🤖 Generated with Claude Code

jensens and others added 5 commits March 31, 2026 00:34
Pass blob_mode through to destination.copyTransactionsFrom() for
decoupled S3 uploads during parallel migration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reads a TSV manifest (from --deferred-blobs) and uploads blobs
to S3 with parallel workers and retry logic.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add changelog entries and update README Options section with
--background-blobs, --deferred-blobs, and --upload-blobs flags.
Add tests for manifest malformed lines, empty manifest, retry exhaustion,
and blob_mode parameter passing in copier delegation. Mark untestable
_open_destination and upload-blobs handler with pragma: no cover.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jensens jensens merged commit a79190f into main Mar 30, 2026
8 checks passed
@jensens jensens deleted the feat/blob-upload-modes branch March 30, 2026 23:56
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