Closed Tyrion85 closed 1 year ago
According to GCS documentation, what Amazon call DeleteObjects
and GCS call Multiple object delete
is not supported by GCS.
I doubt there is a way to fix this issue without modifying Quickwit. It shouldn't be too hard to fix from inside Quickwit (add a "GCS workaround" env var which loop over DeleteObject
instead of using DeleteObjects
). Such a change would need for #3168 to land first to avoid large conflicts
@Tyrion85 thanks for the report. We are going to solve the issue for the next release planned for this month. Does this work for you?
@fmassot of course! Thank you very much!
In the interim, for curiosity's sake, would utilising GCS's lifecycle policy, to automatically delete "old" objects from a bucket work, or would it cause some unexpected issues in Quickwit? Specifically in case of OTEL traces (otel-trace-v0
index)
In the interim, for curiosity's sake, would utilising GCS's lifecycle policy, to automatically delete "old" objects from a bucket work, or would it cause some unexpected issues in Quickwit? Specifically in case of OTEL traces (otel-trace-v0 index)
Well, it can definitely lead to unexpected issues :). Let me explain what will happen:
First GCS policy delete a split file older than X days. The split information will still be in the metastore.
You make a search query on all traces... then two things could happen:
MARKED_FOR_DELETION
in the metastore. Quickwit puts such a state if the retention policy kicks in or if the split was merged. In this case, Quickwit will return a normal search response as it will not query this "ghost" split.PUBLISHED
... Quickwit will query this split and will return an error saying that it did not find the split.If you make a query on only recent traces, you won't see this error. But your metastore will not be in a sane state and you will potentially run queries that may return errors.
makes perfect sense @fmassot thank you for the detailed explanation! ๐๐ผ was suspecting as much, but better to ask just in case ๐
I have a preference for NOT using a environment variable.
Maybe we can
s3+gcs://
gcs://
protocolGranted everything sucks in its own way
Closed via #3446 and #3467.
@Tyrion85, in Quickwit 0.6, you'll be able to disable the use of the multi-object delete requests, which are not supported by GCS, by adding the following storage configuration to your node config:
storage:
s3:
disable_multi_object_delete_requests: true
Describe the bug When using Quickwit as Jaeger backend (OTEL traces), with Google Cloud Storage, as described here and here, setup itself works fine. However, Janitor throws errors:
This is bad, as no cleaning up occurs and old data piles up.
Steps to reproduce (if applicable) Steps to reproduce the behavior:
Bog-standard Quickwits 0.5.0 deployment on Kubernetes (GKE), with Quickwit Helm Chart version 0.3.4.
Values.yaml:
Service account to which access/secret key belong to, has a role
roles/storage.objectAdmin
assigned.Expected behavior Expected behaviour is for Janitor to clean up old data.
Configuration: Provided above in steps to reproduce section.
quickwit --version
Quickwit v0.5.0 (d4be690 2023-03-17T08:50:28Z)
Are there any workarounds for this? As far as I can see, no data is being deleted.
Again, this is just a vanilla helm chart installation. Is there anything that can be configured, that I missed, which would help with this issue?