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

[NEW TEST]: Container deletion #696

Open
carpawell opened this issue Dec 26, 2023 · 0 comments · May be fixed by #822
Open

[NEW TEST]: Container deletion #696

carpawell opened this issue Dec 26, 2023 · 0 comments · May be fixed by #822
Assignees
Labels
feature Completely new functionality I3 Minimal impact S4 Routine U2 Seriously planned

Comments

@carpawell
Copy link
Member

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

  1. Create a container
  2. Put objects to it
  3. Down some nodes that store the objects (but not all of them)
  4. Delete the container
  5. Up the nodes from the 3.
  6. Try to fetch the objects as fast as possible after the 4. is done
  7. Check the errors: only not found are expected

If it is possible, 4-7 should be done asyncly or as fast as possible.

@carpawell carpawell added the feature Completely new functionality label Dec 26, 2023
@roman-khimov roman-khimov added U2 Seriously planned S4 Routine I3 Minimal impact labels Dec 26, 2023
@evgeniiz321 evgeniiz321 self-assigned this Jun 24, 2024
evgeniiz321 pushed a commit that referenced this issue Jun 25, 2024
closes #696

Signed-off-by: Evgeniy Zayats <zayatsevgeniy@nspcc.io>
@evgeniiz321 evgeniiz321 linked a pull request Jun 25, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Completely new functionality I3 Minimal impact S4 Routine U2 Seriously planned
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants