From 7e1185309b4f195710042d0f24714246dc6d28f0 Mon Sep 17 00:00:00 2001 From: Catherine Date: Thu, 20 Nov 2025 07:06:14 +0000 Subject: [PATCH] =?UTF-8?q?Fix=20a=20regression=20causing=20non-observance?= =?UTF-8?q?=20of=20=E2=89=A0200=20S3=20manifest=20responses.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduced in commit dd168186. --- src/backend_s3.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/backend_s3.go b/src/backend_s3.go index 355058e..8dde0e4 100644 --- a/src/backend_s3.go +++ b/src/backend_s3.go @@ -396,11 +396,9 @@ func (l s3ManifestLoader) Reload(ctx context.Context, key string, oldValue *Cach } func (l s3ManifestLoader) load(ctx context.Context, name string, oldManifest *CachedManifest) (*CachedManifest, error) { + log.Printf("s3: get manifest %s\n", name) + loader := func() (*CachedManifest, error) { - log.Printf("s3: get manifest %s\n", name) - - startTime := time.Now() - opts := minio.GetObjectOptions{} if oldManifest != nil && oldManifest.etag != "" { opts.SetMatchETagExcept(oldManifest.etag) @@ -427,17 +425,18 @@ func (l s3ManifestLoader) load(ctx context.Context, name string, oldManifest *Ca return nil, err } - s3GetObjectDurationSeconds. - With(prometheus.Labels{"kind": "manifest"}). - Observe(time.Since(startTime).Seconds()) - return &CachedManifest{manifest, uint32(len(data)), stat.LastModified, stat.ETag, nil}, nil } - var cached *CachedManifest + startTime := time.Now() cached, err := loader() + s3GetObjectDurationSeconds. + With(prometheus.Labels{"kind": "manifest"}). + Observe(time.Since(startTime).Seconds()) + if err != nil { - if errResp := minio.ToErrorResponse(err); errResp.Code == "NoSuchKey" { + errResp := minio.ToErrorResponse(err) + if errResp.Code == "NoSuchKey" { s3GetObjectErrorsCount.With(prometheus.Labels{"object_kind": "manifest"}).Inc() err = fmt.Errorf("%w: %s", ErrObjectNotFound, errResp.Key) return &CachedManifest{nil, 1, time.Time{}, "", err}, nil