Delete object through boto3 protocol returned error Object not found
#57
Labels
No labels
P0
P1
P2
P3
good first issue
Infrastructure
blocked
bug
config
discussion
documentation
duplicate
enhancement
go
help wanted
internal
invalid
kludge
observability
perfomance
question
refactoring
wontfix
No project
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-s3-gw#57
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Steps to reproduce:
frostfs-adm --config /home/service/config.yaml morph remove-nodes
commandObject not found
:We need to understand why delete object returned error
Object not found
if bucket is not empty and contains only this object.Versions
Your Environment
Server setup and configuration:
Virtual, 4 servers, 4 SN, 4 http qw, 4 s3 gw
Operating System and version (uname -a):
linux vedi 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux
After such steps something goes wrong with tree service. It starts return
not found: rpc error: code = Unknown desc = tree not found
error.So bucket is considered as empty. What you can see after
list-objects
command is cached values.It seems this problem in node rather than in gate
/cc @alexvanin @fyrchik
It seems this has been already fixed in TrueCloudLab/frostfs-node#129
@anikeev-yadro
@dkirillov OK, If bucket is considered as empty, we should return empty
list-objects
and allow to delete empty bucket.Maybe this is bug to cache?
Sorry, I meant container (not bucket)
I've just noticed that error in description from the node object service rather than tree service. So it seems that we loss object in container but in the tree service they exist.
It seems we need help @fyrchik @carpawell to know what happened with node after restart.
We also lose the access box object (probably all objects). But we can make request to s3-gw because of cache
In this issue we close the case with tree service miss + blobovnicza and fstree unavailability. However there are more things to process in #78 when metabase returns
object not found
andobject already deleted
. We need to discuss it there additionally./cc @anikeev-yadro
Reproduced on the following case:
1.Create bucket
2.Put object into bucket
3.Check that bucket contains the object (list object)
4.Stop
frostfs-storage
service on all nodes5.Delete all data on all nodes
6.Start
frostfs-storage
service on all nodes7.Delete object
8.Delete bucket
Version
It seems you are trying to delete object in versioned bucket. That's why you cannot delete bucket until you delete all versions/deletem markers https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html
I agree, but main point is: Why the system allow to delete object and create delete marker even object deleted physically from disk?
In current scenario we still have some object info in the tree service as I understand, so we don't actually know that object is deleted physically.
But we definitely should revise working with delete markers. #83
Scenario 1: Bucket with versioning enabled, the object storage is lost but the tree remains.
If we try deleting an object in the bucket without specifying the version then a delete market gets created. We need to delete it along with the other versions of target object in order to delete the bucket. The process can be seen in S3 gateway log.
Scenario 2: Bucket with versioning enabled, the tree is lost but the object storage remains.
Since the information on target object is not available we consider it as non-existing, thus the bucket can be deleted is needed.
Seems like it works as expected with versioned bucket as well.