Skip to content

Commit 1828dcd

Browse files
committed
handling errros from thanos SG
Signed-off-by: Alan Protasio <[email protected]>
1 parent 7fbec0a commit 1828dcd

File tree

12 files changed

+79
-28
lines changed

12 files changed

+79
-28
lines changed

pkg/compactor/blocks_cleaner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ func (c *BlocksCleaner) cleanUser(ctx context.Context, userID string, firstRun b
325325
idx, err := bucketindex.ReadIndex(ctx, c.bucketClient, userID, c.cfgProvider, c.logger)
326326
if errors.Is(err, bucketindex.ErrIndexCorrupted) {
327327
level.Warn(userLogger).Log("msg", "found a corrupted bucket index, recreating it")
328-
} else if errors.Is(err, bucket.ErrCustomerManagedKeyError) {
328+
} else if errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied) {
329329
// Give up cleaning if we get access denied
330330
level.Warn(userLogger).Log("msg", err.Error())
331331
return nil

pkg/querier/blocks_finder_bucket_index.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (f *BucketIndexBlocksFinder) GetBlocks(ctx context.Context, userID string,
6565
return nil, nil, nil
6666
}
6767

68-
if errors.Is(err, bucket.ErrCustomerManagedKeyError) {
68+
if errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied) {
6969
return nil, nil, validation.AccessDeniedError(err.Error())
7070
}
7171

pkg/storage/bucket/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var (
4141

4242
ErrUnsupportedStorageBackend = errors.New("unsupported storage backend")
4343

44-
ErrCustomerManagedKeyError = errors.New("access denied: customer key")
44+
ErrCustomerManagedKeyAccessDenied = errors.New("access denied: customer key")
4545
)
4646

4747
// Config holds configuration for accessing long-term storage.

pkg/storage/tsdb/bucketindex/loader.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func (l *Loader) GetIndex(ctx context.Context, userID string) (*Index, error) {
115115

116116
if errors.Is(err, ErrIndexNotFound) {
117117
level.Warn(l.logger).Log("msg", "bucket index not found", "user", userID)
118-
} else if errors.Is(err, bucket.ErrCustomerManagedKeyError) {
118+
} else if errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied) {
119119
level.Warn(l.logger).Log("msg", "key access denied when reading bucket index", "user", userID)
120120
} else {
121121
// We don't track ErrIndexNotFound as failure because it's a legit case (eg. a tenant just
@@ -198,7 +198,7 @@ func (l *Loader) updateCachedIndex(ctx context.Context, userID string) {
198198
l.loadAttempts.Inc()
199199
startTime := time.Now()
200200
idx, err := ReadIndex(readCtx, l.bkt, userID, l.cfgProvider, l.logger)
201-
if err != nil && !errors.Is(err, ErrIndexNotFound) && !errors.Is(err, bucket.ErrCustomerManagedKeyError) {
201+
if err != nil && !errors.Is(err, ErrIndexNotFound) && !errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied) {
202202
l.loadFailures.Inc()
203203
level.Warn(l.logger).Log("msg", "unable to update bucket index", "user", userID, "err", err)
204204
return

pkg/storage/tsdb/bucketindex/loader_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ func TestLoader_ShouldUpdateIndexInBackgroundOnPreviousKeyAcessDenied(t *testing
603603
})
604604

605605
_, err := loader.GetIndex(ctx, user)
606-
require.True(t, errors.Is(err, bucket.ErrCustomerManagedKeyError))
606+
require.True(t, errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied))
607607

608608
// Check cached
609609
require.NoError(t, loader.checkCachedIndexes(ctx))
@@ -669,7 +669,7 @@ func TestLoader_GetIndex_ShouldCacheKeyDeniedErrors(t *testing.T) {
669669
// Request the index multiple times.
670670
for i := 0; i < 10; i++ {
671671
_, err := loader.GetIndex(ctx, "user-1")
672-
require.True(t, errors.Is(err, bucket.ErrCustomerManagedKeyError))
672+
require.True(t, errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied))
673673
}
674674

675675
// Ensure metrics have been updated accordingly.

pkg/storage/tsdb/bucketindex/storage.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/cortexproject/cortex/pkg/storage/tsdb"
1414

1515
"github.com/cortexproject/cortex/pkg/storage/bucket"
16+
cortex_errors "github.com/cortexproject/cortex/pkg/util/errors"
1617
"github.com/cortexproject/cortex/pkg/util/runutil"
1718
)
1819

@@ -33,7 +34,7 @@ func ReadIndex(ctx context.Context, bkt objstore.Bucket, userID string, cfgProvi
3334
}
3435

3536
if userBkt.IsCustomerManagedKeyError(err) {
36-
return nil, bucket.ErrCustomerManagedKeyError
37+
return nil, cortex_errors.WithCause(bucket.ErrCustomerManagedKeyAccessDenied, err)
3738
}
3839

3940
return nil, errors.Wrap(err, "read bucket index")

pkg/storage/tsdb/bucketindex/storage_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package bucketindex
22

33
import (
44
"context"
5+
"errors"
56
"path"
67
"strings"
78
"testing"
@@ -47,7 +48,7 @@ func TestReadIndex_ShouldReturnErrorIfKeyAccessDeniedErr(t *testing.T) {
4748
},
4849
}
4950
idx, err := ReadIndex(context.Background(), bkt, "user-1", nil, log.NewNopLogger())
50-
require.Equal(t, bucket.ErrCustomerManagedKeyError, err)
51+
require.True(t, errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied))
5152
require.Nil(t, idx)
5253
}
5354

pkg/storegateway/bucket_index_metadata_fetcher.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (f *BucketIndexMetadataFetcher) Fetch(ctx context.Context) (metas map[ulid.
6868
start := time.Now()
6969
defer func() {
7070
f.metrics.SyncDuration.Observe(time.Since(start).Seconds())
71-
if err != nil && !errors.Is(err, bucket.ErrCustomerManagedKeyError) {
71+
if err != nil && !errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied) {
7272
f.metrics.SyncFailures.Inc()
7373
}
7474
}()
@@ -95,14 +95,14 @@ func (f *BucketIndexMetadataFetcher) Fetch(ctx context.Context) (metas map[ulid.
9595
return nil, nil, nil
9696
}
9797

98-
if errors.Is(err, bucket.ErrCustomerManagedKeyError) {
98+
if errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied) {
9999
// stop the job and return the error
100100
// this error should be used to return Access Denied to the caller
101101
level.Error(f.logger).Log("msg", "bucket index key permission revoked", "user", f.userID, "err", err)
102102
f.metrics.Synced.WithLabelValues(keyAccessDenied).Set(1)
103103
f.metrics.Submit()
104104

105-
return nil, nil, bucket.ErrCustomerManagedKeyError
105+
return nil, nil, err
106106
}
107107

108108
if err != nil {

pkg/storegateway/bucket_index_metadata_fetcher_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package storegateway
33
import (
44
"bytes"
55
"context"
6+
"errors"
67
"path"
78
"strings"
89
"testing"
@@ -106,11 +107,11 @@ func TestBucketIndexMetadataFetcher_Fetch_KeyPermissionDenied(t *testing.T) {
106107
reg := prometheus.NewPedanticRegistry()
107108
ctx := context.Background()
108109

109-
bkt.MockGet(userID+"/bucket-index.json.gz", "c", bucket.ErrCustomerManagedKeyError)
110+
bkt.MockGet(userID+"/bucket-index.json.gz", "c", bucket.ErrCustomerManagedKeyAccessDenied)
110111

111112
fetcher := NewBucketIndexMetadataFetcher(userID, bkt, NewNoShardingStrategy(), nil, log.NewNopLogger(), reg, nil)
112113
metas, _, err := fetcher.Fetch(ctx)
113-
require.ErrorIs(t, bucket.ErrCustomerManagedKeyError, err)
114+
require.True(t, errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied))
114115
assert.Empty(t, metas)
115116

116117
assert.NoError(t, testutil.GatherAndCompare(reg, bytes.NewBufferString(`

pkg/storegateway/bucket_stores.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"github.com/cortexproject/cortex/pkg/storage/bucket"
3636
"github.com/cortexproject/cortex/pkg/storage/tsdb"
3737
"github.com/cortexproject/cortex/pkg/util/backoff"
38+
cortex_errors "github.com/cortexproject/cortex/pkg/util/errors"
3839
util_log "github.com/cortexproject/cortex/pkg/util/log"
3940
"github.com/cortexproject/cortex/pkg/util/spanlogger"
4041
"github.com/cortexproject/cortex/pkg/util/validation"
@@ -232,7 +233,7 @@ func (u *BucketStores) syncUsersBlocks(ctx context.Context, f func(context.Conte
232233

233234
for job := range jobs {
234235
if err := f(ctx, job.store); err != nil {
235-
if errors.Is(err, bucket.ErrCustomerManagedKeyError) {
236+
if errors.Is(err, bucket.ErrCustomerManagedKeyAccessDenied) {
236237
u.storesErrorsMu.Lock()
237238
u.storesErrors[job.userID] = err
238239
u.storesErrorsMu.Unlock()
@@ -304,7 +305,7 @@ func (u *BucketStores) Series(req *storepb.SeriesRequest, srv storepb.Store_Seri
304305

305306
err := u.getStoreError(userID)
306307

307-
if err != nil && errors.Is(err, bucket.ErrCustomerManagedKeyError) {
308+
if err != nil && cortex_errors.ErrorIs(err, u.bucket.IsCustomerManagedKeyError) {
308309
return httpgrpc.Errorf(int(codes.ResourceExhausted), "store error: %s", err)
309310
}
310311

@@ -313,7 +314,7 @@ func (u *BucketStores) Series(req *storepb.SeriesRequest, srv storepb.Store_Seri
313314
ctx: spanCtx,
314315
})
315316

316-
if err != nil && errors.Is(err, bucket.ErrCustomerManagedKeyError) {
317+
if err != nil && cortex_errors.ErrorIs(err, u.bucket.IsCustomerManagedKeyError) {
317318
return httpgrpc.Errorf(int(codes.ResourceExhausted), "store error: %s", err)
318319
}
319320

@@ -337,13 +338,13 @@ func (u *BucketStores) LabelNames(ctx context.Context, req *storepb.LabelNamesRe
337338

338339
err := u.getStoreError(userID)
339340

340-
if err != nil && errors.Is(err, bucket.ErrCustomerManagedKeyError) {
341+
if err != nil && cortex_errors.ErrorIs(err, u.bucket.IsCustomerManagedKeyError) {
341342
return nil, httpgrpc.Errorf(int(codes.ResourceExhausted), "store error: %s", err)
342343
}
343344

344345
resp, err := store.LabelNames(ctx, req)
345346

346-
if err != nil && errors.Is(err, bucket.ErrCustomerManagedKeyError) {
347+
if err != nil && cortex_errors.ErrorIs(err, u.bucket.IsCustomerManagedKeyError) {
347348
return resp, httpgrpc.Errorf(int(codes.ResourceExhausted), "store error: %s", err)
348349
}
349350

@@ -367,13 +368,13 @@ func (u *BucketStores) LabelValues(ctx context.Context, req *storepb.LabelValues
367368

368369
err := u.getStoreError(userID)
369370

370-
if err != nil && errors.Is(err, bucket.ErrCustomerManagedKeyError) {
371+
if err != nil && cortex_errors.ErrorIs(err, u.bucket.IsCustomerManagedKeyError) {
371372
return nil, httpgrpc.Errorf(int(codes.ResourceExhausted), "store error: %s", err)
372373
}
373374

374375
resp, err := store.LabelValues(ctx, req)
375376

376-
if err != nil && errors.Is(err, bucket.ErrCustomerManagedKeyError) {
377+
if err != nil && cortex_errors.ErrorIs(err, u.bucket.IsCustomerManagedKeyError) {
377378
return resp, httpgrpc.Errorf(int(codes.ResourceExhausted), "store error: %s", err)
378379
}
379380

0 commit comments

Comments
 (0)