Skip to content

Commit 4d59c48

Browse files
committed
check label existence
Signed-off-by: yeya24 <yb532204897@gmail.com>
1 parent 33073b3 commit 4d59c48

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

pkg/compactv2/compactor_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -377,8 +377,6 @@ func TestCompactor_WriteSeries_e2e(t *testing.T) {
377377
},
378378
})},
379379
expected: []seriesSamples{
380-
{lset: labels.Labels{{Name: "a", Value: ""}, {Name: "foo", Value: "bat"}},
381-
chunks: [][]sample{{{0, 0}, {1, 1}, {2, 2}}, {{10, 11}, {11, 11}, {20, 20}}}},
382380
{lset: labels.Labels{{Name: "a", Value: "1"}},
383381
chunks: [][]sample{{{0, 0}, {1, 1}, {2, 2}}, {{10, 11}, {11, 11}, {20, 20}}}},
384382
{lset: labels.Labels{{Name: "a", Value: "2"}},
@@ -390,11 +388,11 @@ func TestCompactor_WriteSeries_e2e(t *testing.T) {
390388
{lset: labels.Labels{{Name: "foo", Value: "bat"}},
391389
chunks: [][]sample{{{0, 0}, {1, 1}, {2, 2}}, {{10, 11}, {11, 11}, {20, 20}}}},
392390
},
393-
expectedChanges: "Deleted {a=\"2\", foo=\"bar\"} [{0 20}]\nDeleted {a=\"3\", foo=\"baz\"} [{0 20}]\n",
391+
expectedChanges: "Deleted {a=\"\", foo=\"bat\"} [{0 20}]\nDeleted {a=\"2\", foo=\"bar\"} [{0 20}]\nDeleted {a=\"3\", foo=\"baz\"} [{0 20}]\n",
394392
expectedStats: tsdb.BlockStats{
395-
NumSamples: 36,
396-
NumSeries: 6,
397-
NumChunks: 12,
393+
NumSamples: 30,
394+
NumSeries: 5,
395+
NumChunks: 10,
398396
},
399397
},
400398
} {

pkg/compactv2/modifiers.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package compactv2
55

66
import (
77
"github.com/pkg/errors"
8+
"github.com/prometheus/prometheus/pkg/labels"
89
"github.com/prometheus/prometheus/storage"
910
"github.com/prometheus/prometheus/tsdb"
1011
"github.com/prometheus/prometheus/tsdb/chunkenc"
@@ -61,10 +62,11 @@ SeriesLoop:
6162
DeletionsLoop:
6263
for _, deletions := range d.d.deletions {
6364
for _, m := range deletions.Matchers {
64-
v := lbls.Get(m.Name)
65+
v, exist := getLabelValue(lbls, m.Name)
6566

66-
// Only if all matchers in the deletion request are matched can we proceed to deletion.
67-
if v == "" || !m.Matches(v) {
67+
// We skip when the label doesn't exist or not all
68+
// matchers in the deletion request are matched can we proceed to deletion.
69+
if !exist || !m.Matches(v) {
6870
continue DeletionsLoop
6971
}
7072
}
@@ -107,6 +109,17 @@ SeriesLoop:
107109
return false
108110
}
109111

112+
// getLabelValue get the label value by the given label name and returns
113+
// the label existence by returning a bool.
114+
func getLabelValue(ls labels.Labels, name string) (string, bool) {
115+
for _, l := range ls {
116+
if l.Name == name {
117+
return l.Value, true
118+
}
119+
}
120+
return "", false
121+
}
122+
110123
// intersection returns intersection between interval and range of intervals.
111124
func intersection(i tombstones.Interval, dranges tombstones.Intervals) tombstones.Intervals {
112125
var ret tombstones.Intervals

0 commit comments

Comments
 (0)