Skip to content

Locking tombstoned object is not prohibited #3492

@cthulhu-rider

Description

@cthulhu-rider
  • regular object (O) is removed via object of TOMBSTONE type (T) assoticated with O
  • O is prototected from removal via object of LOCK type (L) associated with O

L and T cannot exist simultaneously

Expected Behavior

if T exists, L cannot be created

Current Behavior

L can be created

Possible Solution

in storage engine, O/T/L objects are stored in shards (different in general). T/L marks for O are stored in metabases (one per shard). When SE accepts L, it needs to make sure that no shard contains actual (*) T object

(*) objects may expire

afaik, for containers with consistent metadata, L/T are stored in the metadata service. In such cases, checks should be carried out at this level, and SE can be exempted from checks

Steps to Reproduce (for bugs)

  1. run devenv
  2. neofs-cli object put
  3. neofs-cli object delete
  4. neofs-cli object lock

Context

#3436

Regression

no

Your Environment

Metadata

Metadata

Assignees

Labels

I4No visible changesS4RoutineU2Seriously plannedbugSomething isn't workingneofs-storageStorage node application issues

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions