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

Decide where and make it possible to store per-object metadata for Object Lock #400

Open
amwolff opened this issue Feb 12, 2024 · 2 comments
Assignees
Labels
Milestone

Comments

@amwolff
Copy link
Member

amwolff commented Feb 12, 2024

Goal

This issue is to make meaningful progress on Object Lock implementation within core and edge services. Specifically, to support immutable backups in backup software products like Veeam.

What needs to be done? • Acceptance Criteria

AWS S3 tells us they store the lock information in the metadata for that object version:

When you lock an object version, Amazon S3 stores the lock information in the metadata for that object version.

  1. With this context in mind, answer the following questions:
  • Is it metadata visible to the user?
  • Is it hidden from the user?
  • Where in the metabase can we associate the lock information with the specific version?
    • Should this information be denormalized within the objects table?
  1. Make changes to the satellite and the metabase

Modify the metainfo database and the methods that directly interact with it.

Summary

Implement this section from the draft design doc.

Depends on…

This issue slightly depends on

but in general, these should be possible to be worked on alongside each other.

Links

@jewharton
Copy link
Contributor

jewharton commented Mar 14, 2024

  • Is the Object Lock metadata visible to the user?

Yes, the Object Lock metadata is visible to the user. It's returned by the GetObject and HeadObject actions.

  • x-amz-object-lock-legal-hold: Indicates whether an object has an active legal hold.
  • x-amz-object-lock-mode: The Object Lock mode that's currently in place for an object.
  • x-amz-object-lock-retain-until-date: The date and time when an object's Object Lock will expire.
  • Can we store the lock information in the existing System metadata structure?

Yes. The system metadata structure (which I assume refers to (uplink.Object).System) is populated from object metainfo. As long as Uplink is able to retrieve Object Lock information from the metainfo database, it will be able to store it in this structure.

  • Should this information be denormalized within the objects table?

Yes. It's best to store this information in the objects table because critical queries will need information about the locks.

@storj-gerrit
Copy link

storj-gerrit bot commented Mar 20, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants