Feat/lock and ts with no payload#3470
Merged
roman-khimov merged 4 commits intomasterfrom Jul 22, 2025
Merged
Conversation
f538c05 to
3e8c7b4
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #3470 +/- ##
==========================================
+ Coverage 22.97% 23.07% +0.09%
==========================================
Files 669 669
Lines 50089 50216 +127
==========================================
+ Hits 11508 11586 +78
- Misses 37680 37722 +42
- Partials 901 908 +7 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
ddeafc7 to
6e84c8f
Compare
6e84c8f to
c10d35b
Compare
c10d35b to
513aba6
Compare
Member
|
Tests fail here. |
513aba6 to
cb55611
Compare
It adds support for delete/lock operations made via the new `__NEOFS__ASSOCIATE` object attribute. Locked objects are fully supported, and LOCK status is checked as the "new" metabase index inclusion; at the same time, the old list-based approach is still used and kept for the next compatible release. Expired objects/GC marks/GC process/etc are kept for now, and it will be easier to delete the whole list-based object control flow after the next release, adding migration, removing all the non-PUT system object handling, and unit tests at once. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
Since API 2.18 locked object should be in LOCK object's attributes. Continue supporting locking many objects with a single neofs-cli command call but PUTting many LOCK objects. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
Such objects have been deprecated in v2.18.0 API. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
cb55611 to
8f6a66a
Compare
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR implements support for lock and tombstone objects with no payload as part of API v2.18+ changes. The key modification is transitioning from storing object targets in payloads to storing them in object headers through associations.
- Adds version checking to determine if system objects should store targets in headers vs payload
- Updates metabase operations to handle new lock/tombstone association patterns
- Modifies CLI tooling to create individual lock objects per target instead of batch operations
Reviewed Changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/core/version/version.go | Adds version checking for system object target storage location |
| pkg/services/object/put/local.go | Adds version check to conditionally process object metadata |
| pkg/services/object/delete/local.go | Simplifies tombstone creation for new API version |
| pkg/services/object/delete/exec.go | Removes old tombstone creation logic |
| pkg/local_object_storage/metabase/*.go | Updates database operations to support header-based associations |
| pkg/local_object_storage/engine/put.go | Adds system object handling for new API version |
| pkg/core/object/fmt.go | Updates validation for payload-less system objects |
| cmd/neofs-cli/modules/object/lock.go | Changes to create individual lock objects per target |
roman-khimov
approved these changes
Jul 22, 2025
carpawell
added a commit
that referenced
this pull request
Jul 22, 2025
Target's place has changed but the rules are the same. Refs #3470. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
carpawell
added a commit
that referenced
this pull request
Jul 22, 2025
Once LOCK object is expired, LOCKed object must be free to delete. Refs #3470. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
carpawell
added a commit
that referenced
this pull request
Jul 23, 2025
Once LOCK object is expired, LOCKed object must be free to delete. Refs #3470. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
carpawell
added a commit
that referenced
this pull request
Jul 23, 2025
Once LOCK object is expired, LOCKed object must be free to delete. Refs #3470. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
carpawell
added a commit
that referenced
this pull request
Jul 24, 2025
Since this feature is not present yet, no backward compatibility, only new objects. Refs #3470. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
carpawell
added a commit
that referenced
this pull request
Jul 24, 2025
Since this feature has not yet been presented, no backward compatibility, only new objects. Refs #3470. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
carpawell
added a commit
that referenced
this pull request
Jul 24, 2025
Since this feature has not yet been presented, no backward compatibility, only new objects. Refs #3470. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.