From 41e16bc398b130d9f6b441703df13581389098bb Mon Sep 17 00:00:00 2001 From: Egon Elbre Date: Fri, 13 Oct 2023 19:13:18 +0300 Subject: [PATCH] satellite/metabase: versioning, add new statuses There are several different object types in a versioned table, which will determine the exact behaviour. The object type states are: * Pending - the object is yet to be committed and is being uploaded. * Committed - the object has been finished and can be read. * DeleteMarker - indicates that the object should be treated as not present when is at the top of the version stack. There are also versioning states: * Unversioned - only one unversioned object is allowed per object key. * Versioned - multiple objects with the same key are allowed. Change-Id: I65dfa781e8da253a4e5d572b799d53c351196eee --- satellite/metabase/bench_test.go | 6 +- satellite/metabase/commit.go | 16 +- satellite/metabase/commit_object.go | 6 +- satellite/metabase/commit_object_test.go | 14 +- satellite/metabase/commit_test.go | 54 +++--- satellite/metabase/common.go | 49 +++++- satellite/metabase/copy_object.go | 8 +- satellite/metabase/db.go | 4 +- satellite/metabase/delete.go | 6 +- satellite/metabase/delete_bucket_test.go | 4 +- satellite/metabase/delete_objects.go | 2 +- satellite/metabase/delete_test.go | 6 +- satellite/metabase/get.go | 12 +- satellite/metabase/get_test.go | 44 ++--- satellite/metabase/iterator.go | 2 +- satellite/metabase/iterator_test.go | 158 +++++++++--------- satellite/metabase/list.go | 2 +- satellite/metabase/list_objects.go | 2 +- satellite/metabase/list_objects_test.go | 128 +++++++------- satellite/metabase/loop_test.go | 4 +- satellite/metabase/metabasetest/create.go | 2 +- satellite/metabase/metadata.go | 4 +- satellite/metabase/metadata_test.go | 8 +- satellite/metabase/move_object.go | 2 +- satellite/metabase/update_test.go | 4 +- .../zombiedeletion/zombiedeletion_test.go | 2 +- satellite/metainfo/endpoint_object.go | 2 +- 27 files changed, 295 insertions(+), 256 deletions(-) diff --git a/satellite/metabase/bench_test.go b/satellite/metabase/bench_test.go index 2bd47445e..2072d3fa8 100644 --- a/satellite/metabase/bench_test.go +++ b/satellite/metabase/bench_test.go @@ -217,7 +217,7 @@ func (s *scenario) run(ctx *testcontext.Context, b *testing.B, db *metabase.DB) err := db.IterateObjectsAllVersionsWithStatus(ctx, metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: "bucket", - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, func(ctx context.Context, it metabase.ObjectsIterator) error { var entry metabase.ObjectEntry for it.Next(ctx, &entry) { @@ -241,7 +241,7 @@ func (s *scenario) run(ctx *testcontext.Context, b *testing.B, db *metabase.DB) ProjectID: projectID, BucketName: "bucket", Prefix: metabase.ObjectKey(prefixes[i]), - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, func(ctx context.Context, it metabase.ObjectsIterator) error { var entry metabase.ObjectEntry for it.Next(ctx, &entry) { @@ -333,7 +333,7 @@ func (s *scenario) run(ctx *testcontext.Context, b *testing.B, db *metabase.DB) Cursor: metabase.IterateCursor{ Key: object.ObjectKey, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, func(ctx context.Context, it metabase.ObjectsIterator) error { diff --git a/satellite/metabase/commit.go b/satellite/metabase/commit.go index 7d341037b..394f46266 100644 --- a/satellite/metabase/commit.go +++ b/satellite/metabase/commit.go @@ -302,7 +302,7 @@ func (db *DB) BeginSegment(ctx context.Context, opts BeginSegment) (err error) { object_key = $3 AND version = $4 AND stream_id = $5 AND - status = `+pendingStatus, + status = `+statusPending, opts.ProjectID, []byte(opts.BucketName), opts.ObjectKey, opts.Version, opts.StreamID).Scan(&value) } if err != nil { @@ -440,7 +440,7 @@ func (db *DB) CommitSegment(ctx context.Context, opts CommitSegment) (err error) object_key = $14 AND version = $15 AND stream_id = $16 AND - status = `+pendingStatus+ + status = `+statusPending+ ` ), $1, $2, $3, $4, $5, $6, $7, $8, $9, @@ -566,7 +566,7 @@ func (db *DB) CommitInlineSegment(ctx context.Context, opts CommitInlineSegment) object_key = $13 AND version = $14 AND stream_id = $15 AND - status = `+pendingStatus+ + status = `+statusPending+ ` ), $1, $2, $3, $4, $5, $6, $7, $8, $9, @@ -703,7 +703,7 @@ func (db *DB) CommitObject(ctx context.Context, opts CommitObject) (object Objec project_id = $1 AND bucket_name = $2 AND object_key = $3 AND - status = `+committedStatus, + status = `+statusCommittedUnversioned, opts.ProjectID, []byte(opts.BucketName), opts.ObjectKey))(func(rows tagsql.Rows) error { for rows.Next() { var version Version @@ -777,7 +777,7 @@ func (db *DB) CommitObject(ctx context.Context, opts CommitObject) (object Objec ) SELECT $1 as project_id, $2 as bucket_name, $3 as object_key, $4::INT4 as version, $5 as stream_id, - `+committedStatus+` as status, $6::INT4 as segment_count, $7::INT8 as total_plain_size, $8::INT8 as total_encrypted_size, + `+statusCommittedUnversioned+` as status, $6::INT4 as segment_count, $7::INT8 as total_plain_size, $8::INT8 as total_encrypted_size, $9::INT4 as fixed_segment_size, NULL::timestamp as zombie_deletion_deadline, expires_at, -- TODO should we allow to override existing encryption parameters or return error if don't match with opts? CASE @@ -838,7 +838,7 @@ func (db *DB) CommitObject(ctx context.Context, opts CommitObject) (object Objec } err = tx.QueryRowContext(ctx, ` UPDATE objects SET - status =`+committedStatus+`, + status =`+statusCommittedUnversioned+`, segment_count = $6, total_plain_size = $7, @@ -859,7 +859,7 @@ func (db *DB) CommitObject(ctx context.Context, opts CommitObject) (object Objec object_key = $3 AND version = $4 AND stream_id = $5 AND - status = `+pendingStatus+` + status = `+statusPending+` RETURNING created_at, expires_at, encrypted_metadata, encrypted_metadata_encrypted_key, encrypted_metadata_nonce, @@ -899,7 +899,7 @@ func (db *DB) CommitObject(ctx context.Context, opts CommitObject) (object Objec object.BucketName = opts.BucketName object.ObjectKey = opts.ObjectKey object.Version = opts.Version - object.Status = Committed + object.Status = CommittedUnversioned object.SegmentCount = int32(len(segments)) object.TotalPlainSize = totalPlainSize object.TotalEncryptedSize = totalEncryptedSize diff --git a/satellite/metabase/commit_object.go b/satellite/metabase/commit_object.go index b2db6adba..18a18967d 100644 --- a/satellite/metabase/commit_object.go +++ b/satellite/metabase/commit_object.go @@ -88,7 +88,7 @@ func (db *DB) CommitObjectWithSegments(ctx context.Context, opts CommitObjectWit err = tx.QueryRowContext(ctx, ` UPDATE objects SET - status =`+committedStatus+`, + status =`+statusCommittedUnversioned+`, segment_count = $6, encrypted_metadata_nonce = $7, @@ -105,7 +105,7 @@ func (db *DB) CommitObjectWithSegments(ctx context.Context, opts CommitObjectWit object_key = $3 AND version = $4 AND stream_id = $5 AND - status = `+pendingStatus+` + status = `+statusPending+` RETURNING created_at, expires_at, encryption; @@ -132,7 +132,7 @@ func (db *DB) CommitObjectWithSegments(ctx context.Context, opts CommitObjectWit object.BucketName = opts.BucketName object.ObjectKey = opts.ObjectKey object.Version = opts.Version - object.Status = Committed + object.Status = CommittedUnversioned object.SegmentCount = int32(len(finalSegments)) object.EncryptedMetadataNonce = opts.EncryptedMetadataNonce object.EncryptedMetadata = opts.EncryptedMetadata diff --git a/satellite/metabase/commit_object_test.go b/satellite/metabase/commit_object_test.go index 460a9939f..12c15c6af 100644 --- a/satellite/metabase/commit_object_test.go +++ b/satellite/metabase/commit_object_test.go @@ -159,7 +159,7 @@ func TestCommitObjectWithSegments(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, EncryptedMetadataNonce: encryptedMetadataNonce[:], EncryptedMetadata: encryptedMetadata, @@ -285,7 +285,7 @@ func TestCommitObjectWithSegments(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -383,7 +383,7 @@ func TestCommitObjectWithSegments(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -486,7 +486,7 @@ func TestCommitObjectWithSegments(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, TotalPlainSize: 1024, @@ -609,7 +609,7 @@ func TestCommitObjectWithSegments(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, TotalPlainSize: 1024, @@ -732,7 +732,7 @@ func TestCommitObjectWithSegments(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, TotalPlainSize: 1024, @@ -803,7 +803,7 @@ func TestCommitObjectWithSegments(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, diff --git a/satellite/metabase/commit_test.go b/satellite/metabase/commit_test.go index 3d291f16a..494db5d1a 100644 --- a/satellite/metabase/commit_test.go +++ b/satellite/metabase/commit_test.go @@ -211,7 +211,7 @@ func TestBeginObjectNextVersion(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now2, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -278,7 +278,7 @@ func TestBeginObjectNextVersion(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now1, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -701,7 +701,7 @@ func TestBeginObjectExactVersion(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now1, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -758,7 +758,7 @@ func TestBeginObjectExactVersion(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now1, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -813,7 +813,7 @@ func TestBeginObjectExactVersion(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now1, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -1034,7 +1034,7 @@ func TestBeginSegment(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -1178,7 +1178,7 @@ func TestBeginSegment(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -1784,7 +1784,7 @@ func TestCommitSegment(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -2565,7 +2565,7 @@ func TestCommitInlineSegment(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, }, @@ -3250,7 +3250,7 @@ func TestCommitObject(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, EncryptedMetadataNonce: encryptedMetadataNonce[:], EncryptedMetadata: encryptedMetadata, @@ -3361,7 +3361,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, FixedSegmentSize: 512, @@ -3468,7 +3468,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, FixedSegmentSize: math.MaxInt32, @@ -3539,7 +3539,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 0, @@ -3580,7 +3580,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 0, Encryption: metabasetest.DefaultEncryption, @@ -3621,7 +3621,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, @@ -3670,7 +3670,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, @@ -3715,7 +3715,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -3791,7 +3791,7 @@ func TestCommitObject(t *testing.T) { StreamID: obj.StreamID, }, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, EncryptedMetadataNonce: encryptedMetadataNonce[:], EncryptedMetadata: encryptedMetadata, @@ -3908,7 +3908,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, FixedSegmentSize: 512, @@ -4022,7 +4022,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, FixedSegmentSize: math.MaxInt32, @@ -4067,7 +4067,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 0, Encryption: metabasetest.DefaultEncryption, @@ -4113,7 +4113,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, @@ -4167,7 +4167,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, @@ -4217,7 +4217,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -4279,7 +4279,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalEncryptedSize: int64(len(expectedInlineData)), @@ -4343,7 +4343,7 @@ func TestCommitObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 0, ExpiresAt: &expectedExpiresAt, @@ -4528,7 +4528,7 @@ func TestCommitObjectWithIncorrectPartSize(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, FixedSegmentSize: -1, diff --git a/satellite/metabase/common.go b/satellite/metabase/common.go index 0f8d6b1ba..cd05e8bad 100644 --- a/satellite/metabase/common.go +++ b/satellite/metabase/common.go @@ -349,18 +349,57 @@ const PendingVersion = Version(0) // Version in DB is represented as INT4. const MaxVersion = Version(math.MaxInt32) -// ObjectStatus defines the statuses that the object might be in. +// ObjectStatus defines the status that the object is in. +// +// There are two types of objects: +// - Regular (i.e. Committed), which is used for storing data. +// - Delete Marker, which is used to show that an object has been deleted, while preserving older versions. +// +// Each object can be in two states: +// - Pending, meaning that it's still being uploaded. +// - Committed, meaning it has finished uploading. +// Delete Markers are always considered committed, because they do not require committing. +// +// There are two options for versioning: +// - Unversioned, there's only one allowed per project, bucket and encryption key. +// - Versioned, there can be any number of such objects for a given project, bucket and encryption key. +// +// These lead to a few meaningful distinct statuses, listed below. type ObjectStatus byte const ( // Pending means that the object is being uploaded or that the client failed during upload. // The failed upload may be continued in the future. Pending = ObjectStatus(1) - // Committed means that the object is finished and should be visible for general listing. - Committed = ObjectStatus(3) + // CommittedUnversioned means that the object is finished and should be visible for general listing. + CommittedUnversioned = ObjectStatus(3) + // CommittedVersioned means that the object is finished and should be visible for general listing. + CommittedVersioned = ObjectStatus(4) + // DeleteMarkerUnversioned is inserted when an unversioned object is deleted in a versioning suspended bucket. + DeleteMarkerUnversioned = ObjectStatus(5) + // DeleteMarkerVersioned is inserted when an object is deleted in a versioning enabled bucket. + DeleteMarkerVersioned = ObjectStatus(6) - pendingStatus = "1" - committedStatus = "3" + // Constants that can be used while constructing SQL queries. + statusPending = "1" + statusCommittedUnversioned = "3" + statusCommittedVersioned = "4" + statusesCommitted = "(3,4)" + statusDeleteMarkerUnversioned = "5" + statusDeleteMarkerVersioned = "6" + statusesDeleteMarker = "(5,6)" +) + +// stub uses so the linter wouldn't complain. +var ( + _ = CommittedVersioned + _ = DeleteMarkerUnversioned + _ = DeleteMarkerVersioned + _ = statusCommittedVersioned + _ = statusesCommitted + _ = statusDeleteMarkerUnversioned + _ = statusDeleteMarkerVersioned + _ = statusesDeleteMarker ) // Pieces defines information for pieces. diff --git a/satellite/metabase/copy_object.go b/satellite/metabase/copy_object.go index e76cb6cc3..c34861000 100644 --- a/satellite/metabase/copy_object.go +++ b/satellite/metabase/copy_object.go @@ -251,7 +251,7 @@ func (db *DB) FinishCopyObject(ctx context.Context, opts FinishCopyObject) (obje zombie_deletion_deadline ) VALUES ( $1, $2, $3, $4, $5, - $6,`+committedStatus+`, $7, + $6,`+statusCommittedUnversioned+`, $7, $8, $9, $10, $11, $12, $13, $14, null @@ -342,7 +342,7 @@ func getObjectAtCopySourceAndDestination( sourceObject.BucketName = opts.BucketName sourceObject.ObjectKey = opts.ObjectKey sourceObject.Version = opts.Version - sourceObject.Status = Committed + sourceObject.Status = CommittedUnversioned // get objects at source and destination (if any) rows, err := tx.QueryContext(ctx, ` @@ -370,7 +370,7 @@ func getObjectAtCopySourceAndDestination( bucket_name = $3 AND object_key = $4 AND version = $2 AND - status = `+committedStatus+` + status = `+statusCommittedUnversioned+` UNION ALL SELECT stream_id, @@ -387,7 +387,7 @@ func getObjectAtCopySourceAndDestination( bucket_name = $5 AND object_key = $6 AND version = (SELECT version FROM destination_current_versions - WHERE status = `+committedStatus+`)`, + WHERE status = `+statusCommittedUnversioned+`)`, sourceObject.ProjectID, sourceObject.Version, []byte(sourceObject.BucketName), sourceObject.ObjectKey, opts.NewBucket, opts.NewEncryptedObjectKey) diff --git a/satellite/metabase/db.go b/satellite/metabase/db.go index f28c9ef33..1bb5aa247 100644 --- a/satellite/metabase/db.go +++ b/satellite/metabase/db.go @@ -182,7 +182,7 @@ func (db *DB) TestMigrateToLatest(ctx context.Context) error { created_at TIMESTAMPTZ NOT NULL default now(), expires_at TIMESTAMPTZ, - status INT2 NOT NULL default ` + pendingStatus + `, + status INT2 NOT NULL default ` + statusPending + `, segment_count INT4 NOT NULL default 0, encrypted_metadata_nonce BYTEA default NULL, @@ -409,7 +409,7 @@ func (db *DB) PostgresMigration() *migrate.Migration { created_at TIMESTAMPTZ NOT NULL default now(), expires_at TIMESTAMPTZ, - status INT2 NOT NULL default ` + pendingStatus + `, + status INT2 NOT NULL default ` + statusPending + `, segment_count INT4 NOT NULL default 0, encrypted_metadata_nonce BYTEA default NULL, diff --git a/satellite/metabase/delete.go b/satellite/metabase/delete.go index 107d73b07..e45c5c1b1 100644 --- a/satellite/metabase/delete.go +++ b/satellite/metabase/delete.go @@ -113,7 +113,7 @@ WITH deleted_objects AS ( project_id = $1 AND bucket_name = $2 AND object_key = $3 AND - status = ` + committedStatus + ` AND + status = ` + statusCommittedUnversioned + ` AND (expires_at IS NULL OR expires_at > now()) ORDER BY version DESC ) @@ -207,7 +207,7 @@ func (db *DB) DeletePendingObject(ctx context.Context, opts DeletePendingObject) object_key = $3 AND version = $4 AND stream_id = $5 AND - status = `+pendingStatus+` + status = `+statusPending+` RETURNING version, stream_id, created_at, expires_at, status, segment_count, encrypted_metadata_nonce, encrypted_metadata, encrypted_metadata_encrypted_key, @@ -325,7 +325,7 @@ func (db *DB) DeleteObjectsAllVersions(ctx context.Context, opts DeleteObjectsAl project_id = $1 AND bucket_name = $2 AND object_key = ANY ($3) AND - status = `+committedStatus+` + status = `+statusCommittedUnversioned+` RETURNING project_id, bucket_name, object_key, version, stream_id, created_at, expires_at, status, segment_count, encrypted_metadata_nonce, encrypted_metadata, diff --git a/satellite/metabase/delete_bucket_test.go b/satellite/metabase/delete_bucket_test.go index 191df43ef..4d3402fa4 100644 --- a/satellite/metabase/delete_bucket_test.go +++ b/satellite/metabase/delete_bucket_test.go @@ -142,7 +142,7 @@ func TestDeleteBucketObjects(t *testing.T) { { ObjectStream: objX, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -153,7 +153,7 @@ func TestDeleteBucketObjects(t *testing.T) { { ObjectStream: objY, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, diff --git a/satellite/metabase/delete_objects.go b/satellite/metabase/delete_objects.go index a5b9c25db..c234b16a7 100644 --- a/satellite/metabase/delete_objects.go +++ b/satellite/metabase/delete_objects.go @@ -116,7 +116,7 @@ func (db *DB) DeleteZombieObjects(ctx context.Context, opts DeleteZombieObjects) ` + db.impl.AsOfSystemInterval(opts.AsOfSystemInterval) + ` WHERE (project_id, bucket_name, object_key, version) > ($1, $2, $3, $4) - AND status = ` + pendingStatus + ` + AND status = ` + statusPending + ` AND (zombie_deletion_deadline IS NULL OR zombie_deletion_deadline < $5) ORDER BY project_id, bucket_name, object_key, version LIMIT $6;` diff --git a/satellite/metabase/delete_test.go b/satellite/metabase/delete_test.go index 769b99328..0eea34258 100644 --- a/satellite/metabase/delete_test.go +++ b/satellite/metabase/delete_test.go @@ -114,7 +114,7 @@ func TestDeletePendingObject(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -348,7 +348,7 @@ func TestDeletePendingObjectNew(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -1349,7 +1349,7 @@ func TestDeleteObjectLastCommitted(t *testing.T) { { ObjectStream: newObjDiffVersion, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, }, diff --git a/satellite/metabase/get.go b/satellite/metabase/get.go index 34017afa6..8f87b6856 100644 --- a/satellite/metabase/get.go +++ b/satellite/metabase/get.go @@ -95,7 +95,7 @@ func (db *DB) GetObjectExactVersion(ctx context.Context, opts GetObjectExactVers bucket_name = $2 AND object_key = $3 AND version = $4 AND - status = `+committedStatus+` AND + status = `+statusCommittedUnversioned+` AND (expires_at IS NULL OR expires_at > now())`, opts.ProjectID, []byte(opts.BucketName), opts.ObjectKey, opts.Version). Scan( @@ -118,7 +118,7 @@ func (db *DB) GetObjectExactVersion(ctx context.Context, opts GetObjectExactVers object.ObjectKey = opts.ObjectKey object.Version = opts.Version - object.Status = Committed + object.Status = CommittedUnversioned return object, nil } @@ -152,7 +152,7 @@ func (db *DB) GetObjectLastCommitted(ctx context.Context, opts GetObjectLastComm project_id = $1 AND bucket_name = $2 AND object_key = $3 AND - status = `+committedStatus+` AND + status = `+statusCommittedUnversioned+` AND (expires_at IS NULL OR expires_at > now()) ORDER BY version desc `, opts.ProjectID, []byte(opts.BucketName), opts.ObjectKey))(func(rows tagsql.Rows) error { @@ -200,7 +200,7 @@ func (db *DB) GetObjectLastCommitted(ctx context.Context, opts GetObjectLastComm object.ProjectID = opts.ProjectID object.BucketName = opts.BucketName object.ObjectKey = opts.ObjectKey - object.Status = Committed + object.Status = CommittedUnversioned return object, nil } @@ -301,7 +301,7 @@ func (db *DB) GetLatestObjectLastSegment(ctx context.Context, opts GetLatestObje project_id = $1 AND bucket_name = $2 AND object_key = $3 AND - status = `+committedStatus+` + status = `+statusCommittedUnversioned+` ORDER BY version DESC LIMIT 1 ) @@ -385,7 +385,7 @@ func (db *DB) BucketEmpty(ctx context.Context, opts BucketEmpty) (empty bool, er func (db *DB) TestingAllCommittedObjects(ctx context.Context, projectID uuid.UUID, bucketName string) (objects []ObjectEntry, err error) { defer mon.Task()(&ctx)(&err) - return db.testingAllObjectsByStatus(ctx, projectID, bucketName, Committed) + return db.testingAllObjectsByStatus(ctx, projectID, bucketName, CommittedUnversioned) } func (db *DB) testingAllObjectsByStatus(ctx context.Context, projectID uuid.UUID, bucketName string, status ObjectStatus) (objects []ObjectEntry, err error) { diff --git a/satellite/metabase/get_test.go b/satellite/metabase/get_test.go index 079783948..d01b0493c 100644 --- a/satellite/metabase/get_test.go +++ b/satellite/metabase/get_test.go @@ -90,7 +90,7 @@ func TestGetObjectExactVersion(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -147,7 +147,7 @@ func TestGetObjectExactVersion(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, ExpiresAt: &expiresAt, Encryption: metabasetest.DefaultEncryption, }, @@ -167,7 +167,7 @@ func TestGetObjectExactVersion(t *testing.T) { Result: metabase.Object{ ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -177,7 +177,7 @@ func TestGetObjectExactVersion(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, @@ -273,7 +273,7 @@ func TestGetObjectLastCommitted(t *testing.T) { Result: metabase.Object{ ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, EncryptedMetadataNonce: encryptedMetadataNonce[:], EncryptedMetadata: encryptedMetadata, @@ -285,7 +285,7 @@ func TestGetObjectLastCommitted(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, EncryptedMetadataNonce: encryptedMetadataNonce[:], EncryptedMetadata: encryptedMetadata, @@ -319,7 +319,7 @@ func TestGetObjectLastCommitted(t *testing.T) { Result: metabase.Object{ ObjectStream: firstObject, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, }.Check(ctx, t, db) @@ -328,7 +328,7 @@ func TestGetObjectLastCommitted(t *testing.T) { { ObjectStream: firstObject, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, metabase.RawObject(secondObject), @@ -373,7 +373,7 @@ func TestGetObjectLastCommitted(t *testing.T) { StreamID: copiedObj.StreamID, }, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, EncryptedMetadata: copiedObj.EncryptedMetadata, EncryptedMetadataNonce: copiedObj.EncryptedMetadataNonce, @@ -473,7 +473,7 @@ func TestGetSegmentByPosition(t *testing.T) { { ObjectStream: obj1.ObjectStream, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -486,7 +486,7 @@ func TestGetSegmentByPosition(t *testing.T) { ObjectStream: obj2.ObjectStream, CreatedAt: now, ExpiresAt: obj2.ExpiresAt, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -607,7 +607,7 @@ func TestGetSegmentByPosition(t *testing.T) { { ObjectStream: obj.ObjectStream, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -620,7 +620,7 @@ func TestGetSegmentByPosition(t *testing.T) { ObjectStream: copyObjStream, CreatedAt: now, ExpiresAt: obj.ExpiresAt, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -778,7 +778,7 @@ func TestGetSegmentByPosition(t *testing.T) { { ObjectStream: obj.ObjectStream, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, Encryption: metabasetest.DefaultEncryption, @@ -787,7 +787,7 @@ func TestGetSegmentByPosition(t *testing.T) { ObjectStream: copyObjStream, CreatedAt: now, ExpiresAt: obj.ExpiresAt, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, EncryptedMetadataNonce: newEncryptedMetadataKeyNonce[:], @@ -949,7 +949,7 @@ func TestGetSegmentByPosition(t *testing.T) { { ObjectStream: obj.ObjectStream, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, Encryption: metabasetest.DefaultEncryption, @@ -960,7 +960,7 @@ func TestGetSegmentByPosition(t *testing.T) { ObjectStream: copyObjStream, CreatedAt: now, ExpiresAt: obj.ExpiresAt, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, EncryptedMetadataNonce: newEncryptedMetadataKeyNonce[:], @@ -1053,7 +1053,7 @@ func TestGetLatestObjectLastSegment(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 2, TotalPlainSize: 1024, @@ -1302,7 +1302,7 @@ func TestGetLatestObjectLastSegment(t *testing.T) { { ObjectStream: obj.ObjectStream, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, Encryption: metabasetest.DefaultEncryption, @@ -1311,7 +1311,7 @@ func TestGetLatestObjectLastSegment(t *testing.T) { ObjectStream: copyObjStream, CreatedAt: now, ExpiresAt: obj.ExpiresAt, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, EncryptedMetadataNonce: newEncryptedMetadataKeyNonce[:], @@ -1469,7 +1469,7 @@ func TestGetLatestObjectLastSegment(t *testing.T) { { ObjectStream: obj.ObjectStream, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, Encryption: metabasetest.DefaultEncryption, @@ -1480,7 +1480,7 @@ func TestGetLatestObjectLastSegment(t *testing.T) { ObjectStream: copyObjStream, CreatedAt: now, ExpiresAt: obj.ExpiresAt, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, EncryptedMetadataNonce: newEncryptedMetadataKeyNonce[:], diff --git a/satellite/metabase/iterator.go b/satellite/metabase/iterator.go index 449332143..64294c6ed 100644 --- a/satellite/metabase/iterator.go +++ b/satellite/metabase/iterator.go @@ -327,7 +327,7 @@ func doNextQueryStreamsByKey(ctx context.Context, it *objectsIterator) (_ tagsql project_id = $1 AND bucket_name = $2 AND object_key = $3 AND stream_id > $4::BYTEA - AND status = `+pendingStatus+` + AND status = `+statusPending+` ORDER BY stream_id ASC LIMIT $5 `, it.projectID, it.bucketName, diff --git a/satellite/metabase/iterator_test.go b/satellite/metabase/iterator_test.go index 170ddd58d..9707c1e70 100644 --- a/satellite/metabase/iterator_test.go +++ b/satellite/metabase/iterator_test.go @@ -29,7 +29,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: uuid.UUID{}, BucketName: "sj://mybucket", Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, ErrClass: &metabase.ErrInvalidRequest, ErrText: "ProjectID missing", @@ -41,7 +41,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: uuid.UUID{1}, BucketName: "", Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, ErrClass: &metabase.ErrInvalidRequest, ErrText: "BucketName missing", @@ -54,7 +54,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { BucketName: "mybucket", BatchSize: -1, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, ErrClass: &metabase.ErrInvalidRequest, ErrText: "BatchSize is negative", @@ -83,7 +83,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { BucketName: "myemptybucket", BatchSize: 10, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, Result: nil, }.Check(ctx, t, db) @@ -135,7 +135,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -144,7 +144,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Version: committed.Version, StreamID: committed.StreamID, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, EncryptedMetadataNonce: encryptedMetadataNonce[:], EncryptedMetadata: encryptedMetadata, @@ -187,7 +187,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { BucketName: "mybucket", Recursive: true, BatchSize: limit, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -211,7 +211,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { BucketName: "mybucket", Recursive: true, BatchSize: limit, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -238,7 +238,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: uuid.UUID{1}, BucketName: "bucket-a", Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -267,7 +267,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: uuid.UUID{1}, BucketName: "mybucket", Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -300,7 +300,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -322,7 +322,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -345,7 +345,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -368,7 +368,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -386,7 +386,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -405,7 +405,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -423,7 +423,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -454,15 +454,15 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ objects["a"], - prefixEntry("b/", metabase.Committed), + prefixEntry("b/", metabase.CommittedUnversioned), objects["c"], - prefixEntry("c/", metabase.Committed), + prefixEntry("c/", metabase.CommittedUnversioned), objects["g"], }, }.Check(ctx, t, db) @@ -471,16 +471,16 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, Cursor: metabase.IterateCursor{Key: "a", Version: objects["a"].Version + 1}, }, Result: []metabase.ObjectEntry{ - prefixEntry("b/", metabase.Committed), + prefixEntry("b/", metabase.CommittedUnversioned), objects["c"], - prefixEntry("c/", metabase.Committed), + prefixEntry("c/", metabase.CommittedUnversioned), objects["g"], }, }.Check(ctx, t, db) @@ -489,16 +489,16 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, Cursor: metabase.IterateCursor{Key: "b", Version: 0}, }, Result: []metabase.ObjectEntry{ - prefixEntry("b/", metabase.Committed), + prefixEntry("b/", metabase.CommittedUnversioned), objects["c"], - prefixEntry("c/", metabase.Committed), + prefixEntry("c/", metabase.CommittedUnversioned), objects["g"], }, }.Check(ctx, t, db) @@ -507,7 +507,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -524,7 +524,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -542,7 +542,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -559,7 +559,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -573,7 +573,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -582,7 +582,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { }, Result: withoutPrefix("c/", objects["c/"], - prefixEntry("c//", metabase.Committed), + prefixEntry("c//", metabase.CommittedUnversioned), objects["c/1"], ), }.Check(ctx, t, db) @@ -591,7 +591,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Opts: metabase.IterateObjectsWithStatus{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -635,7 +635,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Version: -1, }, Prefix: prefix, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, }, collector.Add) require.NoError(t, err) @@ -650,7 +650,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { }, Prefix: prefix, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, }, collector.Add) require.NoError(t, err) @@ -672,7 +672,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { Version: -1, }, Prefix: metabase.ObjectKey([]byte{1}), - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, collector.Add) @@ -695,7 +695,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { BucketName: bucketName, Prefix: metabase.ObjectKey("a/"), BatchSize: 1, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, }, collector.Add) require.NoError(t, err) @@ -721,7 +721,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: obj1.ProjectID, BucketName: obj1.BucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, collector.Add) @@ -754,7 +754,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: obj1.ProjectID, BucketName: obj1.BucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: false, IncludeSystemMetadata: true, }, collector.Add) @@ -788,7 +788,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: obj1.ProjectID, BucketName: obj1.BucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: false, }, collector.Add) @@ -800,7 +800,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { require.NotEmpty(t, entry.ObjectKey) require.NotEmpty(t, entry.StreamID) require.NotZero(t, entry.Version) - require.Equal(t, metabase.Committed, entry.Status) + require.Equal(t, metabase.CommittedUnversioned, entry.Status) require.False(t, entry.Encryption.IsZero()) require.True(t, entry.CreatedAt.IsZero()) @@ -830,7 +830,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Prefix: metabase.ObjectKey("a/"), - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, BatchSize: 1, }, collector.Add) require.NoError(t, err) @@ -927,7 +927,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { BucketName: bucketName, Recursive: false, Prefix: "aaaa/", - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, BatchSize: 2, IncludeSystemMetadata: true, }, @@ -974,7 +974,7 @@ func TestIterateObjectsWithStatus(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, BatchSize: 3, IncludeSystemMetadata: true, }, @@ -1010,13 +1010,13 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("08/"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) @@ -1030,13 +1030,13 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("08"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("08/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("08/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) @@ -1050,12 +1050,12 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("08/a/x"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) }) @@ -1079,13 +1079,13 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("08/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("08/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) @@ -1099,12 +1099,12 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) @@ -1118,12 +1118,12 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/a/x"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) }) @@ -1164,15 +1164,15 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08"), Version: objects["2017/05/08"].Version, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("08/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("08/"), metabase.CommittedUnversioned), withoutPrefix1("2017/05/", objects["2017/05/08"+afterDelimiter]), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) @@ -1187,14 +1187,14 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ withoutPrefix1("2017/05/", objects["2017/05/08"+afterDelimiter]), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) @@ -1208,14 +1208,14 @@ func TestIterateObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/a/x"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: []metabase.ObjectEntry{ withoutPrefix1("2017/05/", objects["2017/05/08"+afterDelimiter]), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }, }.Check(ctx, t, db) }) @@ -1482,7 +1482,7 @@ func createObjects(ctx *testcontext.Context, t *testing.T, db *metabase.DB, numb objects[i] = metabase.RawObject{ ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, } } @@ -1508,7 +1508,7 @@ func createObjectsWithKeys(ctx *testcontext.Context, t *testing.T, db *metabase. Version: obj.Version, StreamID: obj.StreamID, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, } } @@ -1584,7 +1584,7 @@ func BenchmarkNonRecursiveListing(b *testing.B) { ProjectID: baseObj.ProjectID, BucketName: baseObj.BucketName, BatchSize: 5, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, func(ctx context.Context, oi metabase.ObjectsIterator) error { entry := metabase.ObjectEntry{} for oi.Next(ctx, &entry) { @@ -1602,7 +1602,7 @@ func BenchmarkNonRecursiveListing(b *testing.B) { BucketName: baseObj.BucketName, Prefix: "foo/", BatchSize: 5, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, func(ctx context.Context, oi metabase.ObjectsIterator) error { entry := metabase.ObjectEntry{} for oi.Next(ctx, &entry) { @@ -1620,7 +1620,7 @@ func BenchmarkNonRecursiveListing(b *testing.B) { BucketName: baseObj.BucketName, Prefix: "boo/", BatchSize: 5, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, func(ctx context.Context, oi metabase.ObjectsIterator) error { entry := metabase.ObjectEntry{} for oi.Next(ctx, &entry) { diff --git a/satellite/metabase/list.go b/satellite/metabase/list.go index 5c1d294e7..b39dee23a 100644 --- a/satellite/metabase/list.go +++ b/satellite/metabase/list.go @@ -92,7 +92,7 @@ func (opts *IterateObjectsWithStatus) Verify() error { return ErrInvalidRequest.New("BucketName missing") case opts.BatchSize < 0: return ErrInvalidRequest.New("BatchSize is negative") - case !(opts.Status == Pending || opts.Status == Committed): + case !(opts.Status == Pending || opts.Status == CommittedUnversioned): return ErrInvalidRequest.New("Status %v is not supported", opts.Status) } return nil diff --git a/satellite/metabase/list_objects.go b/satellite/metabase/list_objects.go index 412a567d4..c44495c6d 100644 --- a/satellite/metabase/list_objects.go +++ b/satellite/metabase/list_objects.go @@ -38,7 +38,7 @@ func (opts *ListObjects) Verify() error { return ErrInvalidRequest.New("BucketName missing") case opts.Limit < 0: return ErrInvalidRequest.New("Invalid limit: %d", opts.Limit) - case !(opts.Status == Pending || opts.Status == Committed): + case !(opts.Status == Pending || opts.Status == CommittedUnversioned): return ErrInvalidRequest.New("Status is invalid") } return nil diff --git a/satellite/metabase/list_objects_test.go b/satellite/metabase/list_objects_test.go index 9ac4a0055..0ec4670fe 100644 --- a/satellite/metabase/list_objects_test.go +++ b/satellite/metabase/list_objects_test.go @@ -86,7 +86,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: obj.ProjectID, BucketName: obj.BucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, }, Result: metabase.ListObjectsResult{}, }.Check(ctx, t, db) @@ -116,7 +116,7 @@ func TestListObjects(t *testing.T) { ProjectID: uuid.UUID{1}, BucketName: "mybucket", Recursive: false, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, Limit: limit, @@ -143,7 +143,7 @@ func TestListObjects(t *testing.T) { BucketName: "mybucket", Recursive: true, Limit: limit, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -172,7 +172,7 @@ func TestListObjects(t *testing.T) { ProjectID: uuid.UUID{1}, BucketName: "bucket-a", Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -202,7 +202,7 @@ func TestListObjects(t *testing.T) { ProjectID: uuid.UUID{1}, BucketName: "mybucket", Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -236,7 +236,7 @@ func TestListObjects(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, @@ -259,7 +259,7 @@ func TestListObjects(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -283,7 +283,7 @@ func TestListObjects(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -307,7 +307,7 @@ func TestListObjects(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -326,7 +326,7 @@ func TestListObjects(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -346,7 +346,7 @@ func TestListObjects(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -365,7 +365,7 @@ func TestListObjects(t *testing.T) { ProjectID: projectID, BucketName: bucketName, Recursive: true, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -396,16 +396,16 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ objects["a"], - prefixEntry("b/", metabase.Committed), + prefixEntry("b/", metabase.CommittedUnversioned), objects["c"], - prefixEntry("c/", metabase.Committed), + prefixEntry("c/", metabase.CommittedUnversioned), objects["g"], }}, }.Check(ctx, t, db) @@ -414,7 +414,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -422,9 +422,9 @@ func TestListObjects(t *testing.T) { }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry("b/", metabase.Committed), + prefixEntry("b/", metabase.CommittedUnversioned), objects["c"], - prefixEntry("c/", metabase.Committed), + prefixEntry("c/", metabase.CommittedUnversioned), objects["g"], }}, }.Check(ctx, t, db) @@ -433,7 +433,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -441,9 +441,9 @@ func TestListObjects(t *testing.T) { }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry("b/", metabase.Committed), + prefixEntry("b/", metabase.CommittedUnversioned), objects["c"], - prefixEntry("c/", metabase.Committed), + prefixEntry("c/", metabase.CommittedUnversioned), objects["g"], }}, }.Check(ctx, t, db) @@ -452,7 +452,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -470,7 +470,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -489,7 +489,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -507,7 +507,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -521,7 +521,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -531,7 +531,7 @@ func TestListObjects(t *testing.T) { Result: metabase.ListObjectsResult{ Objects: withoutPrefix("c/", objects["c/"], - prefixEntry("c//", metabase.Committed), + prefixEntry("c//", metabase.CommittedUnversioned), objects["c/1"], )}, }.Check(ctx, t, db) @@ -540,7 +540,7 @@ func TestListObjects(t *testing.T) { Opts: metabase.ListObjects{ ProjectID: projectID, BucketName: bucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, @@ -579,14 +579,14 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("08/"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) @@ -600,14 +600,14 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("08"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("08/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("08/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) @@ -621,13 +621,13 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("08/a/x"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) }) @@ -651,14 +651,14 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("08/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("08/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) @@ -672,13 +672,13 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) @@ -692,13 +692,13 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/a/x"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) }) @@ -738,16 +738,16 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08"), Version: objects["2017/05/08"].Version, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ - prefixEntry(metabase.ObjectKey("08/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("08/"), metabase.CommittedUnversioned), withoutPrefix1("2017/05/", objects["2017/05/08"+afterDelimiter]), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) @@ -762,15 +762,15 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ withoutPrefix1("2017/05/", objects["2017/05/08"+afterDelimiter]), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) @@ -784,15 +784,15 @@ func TestListObjectsSkipCursor(t *testing.T) { Key: metabase.ObjectKey("2017/05/08/a/x"), Version: 1, }, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, IncludeCustomMetadata: true, IncludeSystemMetadata: true, }, Result: metabase.ListObjectsResult{ Objects: []metabase.ObjectEntry{ withoutPrefix1("2017/05/", objects["2017/05/08"+afterDelimiter]), - prefixEntry(metabase.ObjectKey("09/"), metabase.Committed), - prefixEntry(metabase.ObjectKey("10/"), metabase.Committed), + prefixEntry(metabase.ObjectKey("09/"), metabase.CommittedUnversioned), + prefixEntry(metabase.ObjectKey("10/"), metabase.CommittedUnversioned), }}, }.Check(ctx, t, db) }) @@ -829,7 +829,7 @@ func BenchmarkNonRecursiveObjectsListing(b *testing.B) { result, err := db.ListObjects(ctx, metabase.ListObjects{ ProjectID: baseObj.ProjectID, BucketName: baseObj.BucketName, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Limit: batchsize, }) require.NoError(b, err) @@ -838,7 +838,7 @@ func BenchmarkNonRecursiveObjectsListing(b *testing.B) { ProjectID: baseObj.ProjectID, BucketName: baseObj.BucketName, Cursor: metabase.ListObjectsCursor{Key: result.Objects[len(result.Objects)-1].ObjectKey}, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Limit: batchsize, }) require.NoError(b, err) @@ -852,7 +852,7 @@ func BenchmarkNonRecursiveObjectsListing(b *testing.B) { ProjectID: baseObj.ProjectID, BucketName: baseObj.BucketName, Prefix: "foo/", - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Limit: batchsize, }) require.NoError(b, err) @@ -863,7 +863,7 @@ func BenchmarkNonRecursiveObjectsListing(b *testing.B) { BucketName: baseObj.BucketName, Prefix: "foo/", Cursor: metabase.ListObjectsCursor{Key: cursorKey}, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Limit: batchsize, }) require.NoError(b, err) @@ -877,7 +877,7 @@ func BenchmarkNonRecursiveObjectsListing(b *testing.B) { ProjectID: baseObj.ProjectID, BucketName: baseObj.BucketName, Prefix: "boo/", - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Limit: batchsize, }) require.NoError(b, err) @@ -888,7 +888,7 @@ func BenchmarkNonRecursiveObjectsListing(b *testing.B) { BucketName: baseObj.BucketName, Prefix: "boo/", Cursor: metabase.ListObjectsCursor{Key: cursorKey}, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Limit: batchsize, }) require.NoError(b, err) diff --git a/satellite/metabase/loop_test.go b/satellite/metabase/loop_test.go index ed0312b29..920dc31b3 100644 --- a/satellite/metabase/loop_test.go +++ b/satellite/metabase/loop_test.go @@ -106,7 +106,7 @@ func TestIterateLoopObjects(t *testing.T) { }, { ObjectStream: committed, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, EncryptedMetadataSize: len(encryptedMetadata), CreatedAt: createdAt, }, @@ -717,7 +717,7 @@ func TestIterateLoopSegments(t *testing.T) { func loopObjectEntryFromRaw(m metabase.RawObject) metabase.LoopObjectEntry { return metabase.LoopObjectEntry{ ObjectStream: m.ObjectStream, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, CreatedAt: m.CreatedAt, ExpiresAt: m.ExpiresAt, SegmentCount: m.SegmentCount, diff --git a/satellite/metabase/metabasetest/create.go b/satellite/metabase/metabasetest/create.go index 05eb1b02c..27c58c375 100644 --- a/satellite/metabase/metabasetest/create.go +++ b/satellite/metabase/metabasetest/create.go @@ -242,7 +242,7 @@ func CreateFullObjectsWithKeys(ctx *testcontext.Context, t *testing.T, db *metab objects[key] = metabase.LoopObjectEntry{ ObjectStream: obj, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, CreatedAt: time.Now(), } } diff --git a/satellite/metabase/metadata.go b/satellite/metabase/metadata.go index 4ae4028da..43ca7e9c8 100644 --- a/satellite/metabase/metadata.go +++ b/satellite/metabase/metadata.go @@ -64,12 +64,12 @@ func (db *DB) UpdateObjectMetadata(ctx context.Context, opts UpdateObjectMetadat project_id = $1 AND bucket_name = $2 AND object_key = $3 AND - status = `+committedStatus+` AND + status = `+statusCommittedUnversioned+` AND (expires_at IS NULL OR expires_at > now()) ORDER BY version desc ) AND stream_id = $4 AND - status = `+committedStatus, + status = `+statusCommittedUnversioned, opts.ProjectID, []byte(opts.BucketName), opts.ObjectKey, opts.StreamID, opts.EncryptedMetadataNonce, opts.EncryptedMetadata, opts.EncryptedMetadataEncryptedKey) if err != nil { diff --git a/satellite/metabase/metadata_test.go b/satellite/metabase/metadata_test.go index 41ad8641e..bcdd45c2b 100644 --- a/satellite/metabase/metadata_test.go +++ b/satellite/metabase/metadata_test.go @@ -82,7 +82,7 @@ func TestUpdateObjectMetadata(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, }, @@ -105,7 +105,7 @@ func TestUpdateObjectMetadata(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, EncryptedMetadata: encryptedMetadata, @@ -142,7 +142,7 @@ func TestUpdateObjectMetadata(t *testing.T) { { ObjectStream: newObjDiffVersion, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, }, }, @@ -172,7 +172,7 @@ func TestUpdateObjectMetadata(t *testing.T) { { ObjectStream: newObjDiffVersion, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, Encryption: metabasetest.DefaultEncryption, EncryptedMetadata: encryptedMetadata, diff --git a/satellite/metabase/move_object.go b/satellite/metabase/move_object.go index d1daa54ce..43df833ea 100644 --- a/satellite/metabase/move_object.go +++ b/satellite/metabase/move_object.go @@ -176,7 +176,7 @@ func (db *DB) FinishMoveObject(ctx context.Context, opts FinishMoveObject) (err return Error.New("failed to scan objects: %w", err) } - if status == Committed { + if status == CommittedUnversioned { return ErrObjectAlreadyExists.New("") } else if status == Pending && version == opts.Version { useNewVersion = true diff --git a/satellite/metabase/update_test.go b/satellite/metabase/update_test.go index 9090ad966..44a322f27 100644 --- a/satellite/metabase/update_test.go +++ b/satellite/metabase/update_test.go @@ -323,7 +323,7 @@ func TestUpdateSegmentPieces(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, @@ -400,7 +400,7 @@ func TestUpdateSegmentPieces(t *testing.T) { { ObjectStream: obj, CreatedAt: now, - Status: metabase.Committed, + Status: metabase.CommittedUnversioned, SegmentCount: 1, TotalPlainSize: 512, diff --git a/satellite/metabase/zombiedeletion/zombiedeletion_test.go b/satellite/metabase/zombiedeletion/zombiedeletion_test.go index 00754614e..7085088cb 100644 --- a/satellite/metabase/zombiedeletion/zombiedeletion_test.go +++ b/satellite/metabase/zombiedeletion/zombiedeletion_test.go @@ -83,7 +83,7 @@ func TestZombieDeletion(t *testing.T) { objects, err = planet.Satellites[0].Metabase.DB.TestingAllObjects(ctx) require.NoError(t, err) require.Len(t, objects, 1) - require.Equal(t, metabase.Committed, objects[0].Status) + require.Equal(t, metabase.CommittedUnversioned, objects[0].Status) }) } diff --git a/satellite/metainfo/endpoint_object.go b/satellite/metainfo/endpoint_object.go index 8ef559345..4981055ca 100644 --- a/satellite/metainfo/endpoint_object.go +++ b/satellite/metainfo/endpoint_object.go @@ -887,7 +887,7 @@ func (endpoint *Endpoint) ListObjects(ctx context.Context, req *pb.ObjectListReq } // Default to Commmitted status for backward-compatibility with older uplinks. - status := metabase.Committed + status := metabase.CommittedUnversioned if req.Status != pb.Object_INVALID { status = metabase.ObjectStatus(req.Status) }