Skip to content

Commit 8accaa9

Browse files
authored
Return error on the getTSDB function when user is not found (#6565)
Signed-off-by: alanprot <[email protected]>
1 parent 505da1d commit 8accaa9

File tree

2 files changed

+123
-73
lines changed

2 files changed

+123
-73
lines changed

pkg/ingester/ingester.go

+40-35
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ const (
9999
var (
100100
errExemplarRef = errors.New("exemplars not ingested because series not already present")
101101
errIngesterStopping = errors.New("ingester stopping")
102+
errNoUserDb = errors.New("no user db")
102103

103104
tsChunksPool zeropool.Pool[[]client.TimeSeriesChunk]
104105
)
@@ -988,8 +989,8 @@ func (i *Ingester) updateLoop(ctx context.Context) error {
988989

989990
func (i *Ingester) updateUserTSDBConfigs() {
990991
for _, userID := range i.getTSDBUsers() {
991-
userDB := i.getTSDB(userID)
992-
if userDB == nil {
992+
userDB, err := i.getTSDB(userID)
993+
if err != nil || userDB == nil {
993994
continue
994995
}
995996

@@ -1005,7 +1006,7 @@ func (i *Ingester) updateUserTSDBConfigs() {
10051006
}
10061007

10071008
// This method currently updates the MaxExemplars and OutOfOrderTimeWindow.
1008-
err := userDB.db.ApplyConfig(cfg)
1009+
err = userDB.db.ApplyConfig(cfg)
10091010
if err != nil {
10101011
level.Error(logutil.WithUserID(userID, i.logger)).Log("msg", "failed to update user tsdb configuration.")
10111012
}
@@ -1029,8 +1030,8 @@ func (i *Ingester) updateActiveSeries(ctx context.Context) {
10291030
purgeTime := time.Now().Add(-i.cfg.ActiveSeriesMetricsIdleTimeout)
10301031

10311032
for _, userID := range i.getTSDBUsers() {
1032-
userDB := i.getTSDB(userID)
1033-
if userDB == nil {
1033+
userDB, err := i.getTSDB(userID)
1034+
if err != nil || userDB == nil {
10341035
continue
10351036
}
10361037

@@ -1045,8 +1046,8 @@ func (i *Ingester) updateActiveSeries(ctx context.Context) {
10451046
func (i *Ingester) updateLabelSetMetrics() {
10461047
activeUserSet := make(map[string]map[uint64]struct{})
10471048
for _, userID := range i.getTSDBUsers() {
1048-
userDB := i.getTSDB(userID)
1049-
if userDB == nil {
1049+
userDB, err := i.getTSDB(userID)
1050+
if err != nil || userDB == nil {
10501051
continue
10511052
}
10521053

@@ -1549,8 +1550,8 @@ func (i *Ingester) QueryExemplars(ctx context.Context, req *client.ExemplarQuery
15491550

15501551
i.metrics.queries.Inc()
15511552

1552-
db := i.getTSDB(userID)
1553-
if db == nil {
1553+
db, err := i.getTSDB(userID)
1554+
if err != nil || db == nil {
15541555
return &client.ExemplarQueryResponse{}, nil
15551556
}
15561557

@@ -1642,8 +1643,8 @@ func (i *Ingester) labelsValuesCommon(ctx context.Context, req *client.LabelValu
16421643
return nil, cleanup, err
16431644
}
16441645

1645-
db := i.getTSDB(userID)
1646-
if db == nil {
1646+
db, err := i.getTSDB(userID)
1647+
if err != nil || db == nil {
16471648
return &client.LabelValuesResponse{}, cleanup, nil
16481649
}
16491650

@@ -1732,8 +1733,8 @@ func (i *Ingester) labelNamesCommon(ctx context.Context, req *client.LabelNamesR
17321733
return nil, cleanup, err
17331734
}
17341735

1735-
db := i.getTSDB(userID)
1736-
if db == nil {
1736+
db, err := i.getTSDB(userID)
1737+
if err != nil || db == nil {
17371738
return &client.LabelNamesResponse{}, cleanup, nil
17381739
}
17391740

@@ -1830,8 +1831,8 @@ func (i *Ingester) metricsForLabelMatchersCommon(ctx context.Context, req *clien
18301831
return cleanup, err
18311832
}
18321833

1833-
db := i.getTSDB(userID)
1834-
if db == nil {
1834+
db, err := i.getTSDB(userID)
1835+
if err != nil || db == nil {
18351836
return cleanup, nil
18361837
}
18371838

@@ -1944,8 +1945,8 @@ func (i *Ingester) UserStats(ctx context.Context, req *client.UserStatsRequest)
19441945
return nil, err
19451946
}
19461947

1947-
db := i.getTSDB(userID)
1948-
if db == nil {
1948+
db, err := i.getTSDB(userID)
1949+
if err != nil || db == nil {
19491950
return &client.UserStatsResponse{}, nil
19501951
}
19511952

@@ -2064,8 +2065,8 @@ func (i *Ingester) QueryStream(req *client.QueryRequest, stream client.Ingester_
20642065

20652066
i.metrics.queries.Inc()
20662067

2067-
db := i.getTSDB(userID)
2068-
if db == nil {
2068+
db, err := i.getTSDB(userID)
2069+
if err != nil || db == nil {
20692070
return nil
20702071
}
20712072

@@ -2216,11 +2217,14 @@ func (i *Ingester) queryStreamChunks(ctx context.Context, db *userTSDB, from, th
22162217
return numSeries, numSamples, totalBatchSizeBytes, numChunks, nil
22172218
}
22182219

2219-
func (i *Ingester) getTSDB(userID string) *userTSDB {
2220+
func (i *Ingester) getTSDB(userID string) (*userTSDB, error) {
22202221
i.stoppedMtx.RLock()
22212222
defer i.stoppedMtx.RUnlock()
22222223
db := i.TSDBState.dbs[userID]
2223-
return db
2224+
if db == nil {
2225+
return nil, errNoUserDb
2226+
}
2227+
return db, nil
22242228
}
22252229

22262230
// List all users for which we have a TSDB. We do it here in order
@@ -2238,8 +2242,11 @@ func (i *Ingester) getTSDBUsers() []string {
22382242
}
22392243

22402244
func (i *Ingester) getOrCreateTSDB(userID string, force bool) (*userTSDB, error) {
2241-
db := i.getTSDB(userID)
2245+
db, err := i.getTSDB(userID)
22422246
if db != nil {
2247+
if err != nil {
2248+
level.Warn(i.logger).Log("msg", "error getting user DB but userDB is not null", "err", err, "userID", userID)
2249+
}
22432250
return db, nil
22442251
}
22452252

@@ -2271,7 +2278,7 @@ func (i *Ingester) getOrCreateTSDB(userID string, force bool) (*userTSDB, error)
22712278
}
22722279

22732280
// Create the database and a shipper for a user
2274-
db, err := i.createTSDB(userID)
2281+
db, err = i.createTSDB(userID)
22752282
if err != nil {
22762283
return nil, err
22772284
}
@@ -2285,10 +2292,10 @@ func (i *Ingester) getOrCreateTSDB(userID string, force bool) (*userTSDB, error)
22852292

22862293
func (i *Ingester) blockChunkQuerierFunc(userId string) tsdb.BlockChunkQuerierFunc {
22872294
return func(b tsdb.BlockReader, mint, maxt int64) (storage.ChunkQuerier, error) {
2288-
db := i.getTSDB(userId)
2295+
db, err := i.getTSDB(userId)
22892296

22902297
var postingCache cortex_tsdb.ExpandedPostingsCache
2291-
if db != nil {
2298+
if err == nil && db != nil {
22922299
postingCache = db.postingCache
22932300
}
22942301

@@ -2650,8 +2657,8 @@ func (i *Ingester) shipBlocks(ctx context.Context, allowed *util.AllowedTenants)
26502657
}
26512658

26522659
// Get the user's DB. If the user doesn't exist, we skip it.
2653-
userDB := i.getTSDB(userID)
2654-
if userDB == nil || userDB.shipper == nil {
2660+
userDB, err := i.getTSDB(userID)
2661+
if err != nil || userDB == nil || userDB.shipper == nil {
26552662
return nil
26562663
}
26572664

@@ -2762,8 +2769,8 @@ func (i *Ingester) compactBlocks(ctx context.Context, force bool, allowed *util.
27622769
return nil
27632770
}
27642771

2765-
userDB := i.getTSDB(userID)
2766-
if userDB == nil {
2772+
userDB, err := i.getTSDB(userID)
2773+
if err != nil || userDB == nil {
27672774
return nil
27682775
}
27692776

@@ -2773,8 +2780,6 @@ func (i *Ingester) compactBlocks(ctx context.Context, force bool, allowed *util.
27732780
return nil
27742781
}
27752782

2776-
var err error
2777-
27782783
i.TSDBState.compactionsTriggered.Inc()
27792784

27802785
reason := ""
@@ -2823,8 +2828,8 @@ func (i *Ingester) expirePostingsCache(ctx context.Context) error {
28232828
if ctx.Err() != nil {
28242829
return nil
28252830
}
2826-
userDB := i.getTSDB(userID)
2827-
if userDB == nil || userDB.postingCache == nil {
2831+
userDB, err := i.getTSDB(userID)
2832+
if err != nil || userDB == nil || userDB.postingCache == nil {
28282833
continue
28292834
}
28302835
userDB.postingCache.PurgeExpiredItems()
@@ -2834,8 +2839,8 @@ func (i *Ingester) expirePostingsCache(ctx context.Context) error {
28342839
}
28352840

28362841
func (i *Ingester) closeAndDeleteUserTSDBIfIdle(userID string) tsdbCloseCheckResult {
2837-
userDB := i.getTSDB(userID)
2838-
if userDB == nil || userDB.shipper == nil {
2842+
userDB, err := i.getTSDB(userID)
2843+
if err != nil || userDB == nil || userDB.shipper == nil {
28392844
// We will not delete local data when not using shipping to storage.
28402845
return tsdbShippingDisabled
28412846
}

0 commit comments

Comments
 (0)