Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Note

A design document for building a solution for use case 1 can be found here: Synapse Storage Reports: API Design Document

Use Cases

Use Case 1: Move projects between Synapse-managed S3 buckets

...

  1. Create a way to find all file handles that
    1. Are "owned" by a project
    2. Belong to a particular storage location (or more likely, do not belong to the destination storage location)
    3. Have not already been processed/migrated
  2. In cases where the destination is Synapse-managed, be able to sync the content from the original storage location to a specified S3 bucket.
    1. Log this sync and its final status, timestamp, etc.
  3. Update a file handle to point to a new location. Atomically, this includes:
    1. Verifying that the origin and destination files match (e.g. a checksum provided by S3, or that we can calculate if Synapse has access to both files).
    2. If the files match, update the file handle (excluding the ID and eTag).
    3. Log the file handle change
  4. In cases where the origin is Synapse-managed, mark the origin file for eventual deletion.
  5. Create a log of all file transfers in case we later need to review the history of what was done.

Use Case 1 could probably be one operation called by a project owner or bucket owner. This operation could handle (1-4).

...