Skip to content

Commit

Permalink
Addressed comments.
Browse files Browse the repository at this point in the history
Signed-off-by: Bartek Plotka <[email protected]>
  • Loading branch information
bwplotka committed Oct 18, 2019
1 parent bfa698a commit 1f47c6d
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 19 deletions.
34 changes: 23 additions & 11 deletions pkg/compact/compact.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ type syncerMetrics struct {
garbageCollectionFailures prometheus.Counter
garbageCollectionDuration prometheus.Histogram
compactions *prometheus.CounterVec
compactionsRuns *prometheus.CounterVec
compactionRunsStarted *prometheus.CounterVec
compactionRunsFinished *prometheus.CounterVec
compactionFailures *prometheus.CounterVec
}

Expand Down Expand Up @@ -111,9 +112,13 @@ func newSyncerMetrics(reg prometheus.Registerer) *syncerMetrics {
Name: "thanos_compact_group_compactions_total",
Help: "Total number of group compactions attempts, resulted with new block.",
}, []string{"group"})
m.compactionsRuns = prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "thanos_compact_group_compaction_runs_total",
Help: "Total number of group compactions run attempts. This also includes compactor group runs that resulted with no compaction.",
m.compactionRunsStarted = prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "thanos_compact_group_compaction_runs_started_total",
Help: "Total number of group compactions run attempts.",
}, []string{"group"})
m.compactionRunsFinished = prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "thanos_compact_group_compaction_runs_finished_total",
Help: "Total number of group compactions run finished. This also includes compactor group runs that resulted with no compaction.",
}, []string{"group"})
m.compactionFailures = prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "thanos_compact_group_compactions_failures_total",
Expand All @@ -130,7 +135,8 @@ func newSyncerMetrics(reg prometheus.Registerer) *syncerMetrics {
m.garbageCollectionFailures,
m.garbageCollectionDuration,
m.compactions,
m.compactionsRuns,
m.compactionRunsStarted,
m.compactionRunsFinished,
m.compactionFailures,
)
}
Expand Down Expand Up @@ -366,7 +372,8 @@ func (c *Syncer) Groups() (res []*Group, err error) {
m.Thanos.Downsample.Resolution,
c.acceptMalformedIndex,
c.metrics.compactions.WithLabelValues(GroupKey(m.Thanos)),
c.metrics.compactionsRuns.WithLabelValues(GroupKey(m.Thanos)),
c.metrics.compactionRunsStarted.WithLabelValues(GroupKey(m.Thanos)),
c.metrics.compactionRunsFinished.WithLabelValues(GroupKey(m.Thanos)),
c.metrics.compactionFailures.WithLabelValues(GroupKey(m.Thanos)),
c.metrics.garbageCollectedBlocks,
)
Expand Down Expand Up @@ -513,7 +520,8 @@ type Group struct {
blocks map[ulid.ULID]*metadata.Meta
acceptMalformedIndex bool
compactions prometheus.Counter
compactionRuns prometheus.Counter
compactionRunsStarted prometheus.Counter
compactionRunsCompleted prometheus.Counter
compactionFailures prometheus.Counter
groupGarbageCollectedBlocks prometheus.Counter
}
Expand All @@ -526,7 +534,8 @@ func newGroup(
resolution int64,
acceptMalformedIndex bool,
compactions prometheus.Counter,
compactionRuns prometheus.Counter,
compactionRunsStarted prometheus.Counter,
compactionRunsFinished prometheus.Counter,
compactionFailures prometheus.Counter,
groupGarbageCollectedBlocks prometheus.Counter,
) (*Group, error) {
Expand All @@ -541,7 +550,8 @@ func newGroup(
blocks: map[ulid.ULID]*metadata.Meta{},
acceptMalformedIndex: acceptMalformedIndex,
compactions: compactions,
compactionRuns: compactionRuns,
compactionRunsStarted: compactionRunsStarted,
compactionRunsCompleted: compactionRunsFinished,
compactionFailures: compactionFailures,
groupGarbageCollectedBlocks: groupGarbageCollectedBlocks,
}
Expand Down Expand Up @@ -595,7 +605,7 @@ func (cg *Group) Resolution() int64 {
// Compact plans and runs a single compaction against the group. The compacted result
// is uploaded into the bucket the blocks were retrieved from.
func (cg *Group) Compact(ctx context.Context, dir string, comp tsdb.Compactor) (bool, ulid.ULID, error) {
cg.compactionRuns.Inc()
cg.compactionRunsStarted.Inc()

subDir := filepath.Join(dir, cg.Key())

Expand All @@ -615,8 +625,10 @@ func (cg *Group) Compact(ctx context.Context, dir string, comp tsdb.Compactor) (
shouldRerun, compID, err := cg.compact(ctx, subDir, comp)
if err != nil {
cg.compactionFailures.Inc()
return false, ulid.ULID{}, err
}
return shouldRerun, compID, err
cg.compactionRunsCompleted.Inc()
return shouldRerun, compID, nil
}

// Issue347Error is a type wrapper for errors that should invoke repair process for broken block.
Expand Down
23 changes: 15 additions & 8 deletions pkg/compact/compact_e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,9 @@ func TestSyncer_GarbageCollect_e2e(t *testing.T) {
groups, err := sy.Groups()
testutil.Ok(t, err)

testutil.Equals(t, "0@{}", groups[0].Key())
testutil.Equals(t, "0@17241709254077376921", groups[0].Key())
testutil.Equals(t, []ulid.ULID{metas[9].ULID, m3.ULID}, groups[0].IDs())
testutil.Equals(t, "1000@{}", groups[1].Key())
testutil.Equals(t, "1000@17241709254077376921", groups[1].Key())
testutil.Equals(t, []ulid.ULID{m4.ULID}, groups[1].IDs())
})
}
Expand Down Expand Up @@ -224,7 +224,8 @@ func TestGroup_Compact_e2e(t *testing.T) {
testutil.Equals(t, 0.0, promtest.ToFloat64(sy.metrics.garbageCollectedBlocks))
testutil.Equals(t, 0.0, promtest.ToFloat64(sy.metrics.garbageCollectionFailures))
testutil.Equals(t, 0, MetricCount(sy.metrics.compactions))
testutil.Equals(t, 0, MetricCount(sy.metrics.compactionsRuns))
testutil.Equals(t, 0, MetricCount(sy.metrics.compactionRunsStarted))
testutil.Equals(t, 0, MetricCount(sy.metrics.compactionRunsFinished))
testutil.Equals(t, 0, MetricCount(sy.metrics.compactionFailures))

_, err = os.Stat(dir)
Expand Down Expand Up @@ -317,12 +318,18 @@ func TestGroup_Compact_e2e(t *testing.T) {
testutil.Equals(t, 1.0, promtest.ToFloat64(sy.metrics.compactions.WithLabelValues(GroupKey(metas[7].Thanos))))
testutil.Equals(t, 0.0, promtest.ToFloat64(sy.metrics.compactions.WithLabelValues(GroupKey(metas[4].Thanos))))
testutil.Equals(t, 0.0, promtest.ToFloat64(sy.metrics.compactions.WithLabelValues(GroupKey(metas[5].Thanos))))
testutil.Equals(t, 4, MetricCount(sy.metrics.compactionsRuns))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionsRuns.WithLabelValues(GroupKey(metas[0].Thanos))))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionsRuns.WithLabelValues(GroupKey(metas[7].Thanos))))
testutil.Equals(t, 4, MetricCount(sy.metrics.compactionRunsStarted))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsStarted.WithLabelValues(GroupKey(metas[0].Thanos))))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsStarted.WithLabelValues(GroupKey(metas[7].Thanos))))
// TODO(bwplotka): Looks like we do some unnecessary loops. Not a major problem but investigate.
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionsRuns.WithLabelValues(GroupKey(metas[4].Thanos))))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionsRuns.WithLabelValues(GroupKey(metas[5].Thanos))))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsStarted.WithLabelValues(GroupKey(metas[4].Thanos))))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsStarted.WithLabelValues(GroupKey(metas[5].Thanos))))
testutil.Equals(t, 4, MetricCount(sy.metrics.compactionRunsFinished))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsFinished.WithLabelValues(GroupKey(metas[0].Thanos))))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsFinished.WithLabelValues(GroupKey(metas[7].Thanos))))
// TODO(bwplotka): Looks like we do some unnecessary loops. Not a major problem but investigate.
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsFinished.WithLabelValues(GroupKey(metas[4].Thanos))))
testutil.Equals(t, 2.0, promtest.ToFloat64(sy.metrics.compactionRunsFinished.WithLabelValues(GroupKey(metas[5].Thanos))))
testutil.Equals(t, 4, MetricCount(sy.metrics.compactionFailures))
testutil.Equals(t, 0.0, promtest.ToFloat64(sy.metrics.compactionFailures.WithLabelValues(GroupKey(metas[0].Thanos))))
testutil.Equals(t, 0.0, promtest.ToFloat64(sy.metrics.compactionFailures.WithLabelValues(GroupKey(metas[7].Thanos))))
Expand Down

0 comments on commit 1f47c6d

Please sign in to comment.