I can’t find the entry about ‘retention_stream’ in Loki 2.5.0.
Do u have some tips in source code about when chunk files were deleted after I POST ‘/loki/api/admin/delete’?
func (s *Sweeper) Start() {
s.markerProcessor.Start(func(ctx context.Context, chunkId []byte) error {
status := statusSuccess
start := time.Now()
defer func() {
s.sweeperMetrics.deleteChunkDurationSeconds.WithLabelValues(status).Observe(time.Since(start).Seconds())
}()
chunkIDString := unsafeGetString(chunkId)
userID, err := getUserIDFromChunkID(chunkId)
if err != nil {
return err
}
err = s.chunkClient.DeleteChunk(ctx, unsafeGetString(userID), chunkIDString)
if s.chunkClient.IsChunkNotFoundErr(err) {
status = statusNotFound
level.Debug(util_log.Logger).Log("msg", "delete on not found chunk", "chunkID", chunkIDString)
return nil
}
if err != nil {
level.Error(util_log.Logger).Log("msg", "error deleting chunk", "chunkID", chunkIDString, "err", err)
status = statusFailure
}
return err
})
}
I find the sweeper try to delete the chunks, but I can’t see any error logs about the process.
What’s more, I think Loki delete chunk files by fs_object_client by filesystem store-config.
func (f *FSObjectClient) DeleteObject(ctx context.Context, objectKey string) error {
// inspired from https://github.com/thanos-io/thanos/blob/55cb8ca38b3539381dc6a781e637df15c694e50a/pkg/objstore/filesystem/filesystem.go#L195
file := filepath.Join(f.cfg.Directory, filepath.FromSlash(objectKey))
for file != f.cfg.Directory {
if err := os.Remove(file); err != nil {
return err
}
file = filepath.Dir(file)
empty, err := isDirEmpty(file)
if err != nil {
return err
}
if !empty {
break
}
}
return nil
}
// GetChunks retrieves the specified chunks from the configured backend
func (o *Client) DeleteChunk(ctx context.Context, userID, chunkID string) error {
key := chunkID
if o.keyEncoder != nil {
c, err := chunk.ParseExternalKey(userID, key)
if err != nil {
return err
}
key = o.keyEncoder(o.schema, c)
}
return o.store.DeleteObject(ctx, key)
}
And I find the key about the file location may be different about the chunk file path.
Loki miss chunk file in /loki/chunks/fake - Grafana Loki - Grafana Labs Community Forums