You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have solved some things in the node: nspcc-dev/neofs-node#1663. The issue does not contain the full implementation, for more details, it would be better to see the discussions in the related PR.
Solved problem
It was before
If a container is removed, its objects are not removed instantly. The policer tries to check if an object is stored well and finds that its container does not exist and, therefore, deletes the object. The policer works asyncly always. If you are lucky enough and the container is cached (so can't be fetched from the chain with 404 error) you can get that object (cache is usually 30s if enabled). But even if the cache is disabled or the container is missing, you probably get smth like ACL error with the missing container error but not the NeoFS error about missing/deleted objects.
It is now
Containers are fetched in the initial stage, so "missing" objects are marked correspondingly on startup. ContainerDeleted event is being listened to in runtime so container deletion should be handled in runtime by the storage engine. The metabase has been expanded and it indexes stored objects that belong to the deleted container, it should be impossible to fetch such objects OR get a status error other than object not found.
Test that could fix and check that behavior
Create a container
Put objects to it
Down some nodes that store the objects (but not all of them)
Delete the container
Up the nodes from the 3.
Try to fetch the objects as fast as possible after the 4. is done
Context
We have solved some things in the node: nspcc-dev/neofs-node#1663. The issue does not contain the full implementation, for more details, it would be better to see the discussions in the related PR.
Solved problem
It was before
If a container is removed, its objects are not removed instantly. The policer tries to check if an object is stored well and finds that its container does not exist and, therefore, deletes the object. The policer works asyncly always. If you are lucky enough and the container is cached (so can't be fetched from the chain with 404 error) you can get that object (cache is usually 30s if enabled). But even if the cache is disabled or the container is missing, you probably get smth like ACL error with the missing container error but not the NeoFS error about missing/deleted objects.
It is now
Containers are fetched in the initial stage, so "missing" objects are marked correspondingly on startup. ContainerDeleted event is being listened to in runtime so container deletion should be handled in runtime by the storage engine. The metabase has been expanded and it indexes stored objects that belong to the deleted container, it should be impossible to fetch such objects OR get a status error other than object not found.
Test that could fix and check that behavior
3.
4.
is doneIf it is possible, 4-7 should be done asyncly or as fast as possible.
The text was updated successfully, but these errors were encountered: