Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add MigrationTarget lifecycle support #414

Draft
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

AlCutter
Copy link
Collaborator

This PR adds an experimental MigrationTarget lifecycle type to the POSIX and GCP storage implementations, and adds an experimental tool for exercising them.

This code is exploring a mechanism to do a high-performance migration of data from one tlog-tiles compliant log into another; e.g. to allow Tessera operators to easily migrate their log from one storage infrastructure to another.

Rather than going through the sequencing "front door" or a pre-ordered type flow, this implementation operates at the level below, replicating static resources in an obscenely parallel fashion before updating the storage's private treeState. This means that, for example, the operator could, once migration was complete, run a Tessera-based frontend which operates in the Appender lifecycle mode (e.g. the conformance frontend) and have it take over the tree and [continue] to operate it as an append-only log in its new location.

The main files currently have a "HACK" commit each, which enables fetching from Static CT API compliant source logs - this is only because there aren't (m)any large publicly available tlog-tile compliant logs as yet.

Performance is resaonable: GCP migrated a log with 13712258 entries in 2m10s (~100k entries/s), and this would presumably scale further in a cloud -> cloud scenario with more migration workers.

@AlCutter AlCutter force-pushed the target_lifecycle branch 2 times, most recently from 39dc0d1 to 9b2b5c6 Compare December 11, 2024 17:32
storage/gcp/gcp.go Fixed Show fixed Hide fixed
storage/gcp/gcp.go Fixed Show fixed Hide fixed
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