Skip to content

Commit

Permalink
Remove public API introduction
Browse files Browse the repository at this point in the history
  • Loading branch information
kisieland committed May 12, 2021
1 parent 1d18b73 commit 3f4a67b
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 42 deletions.
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@
- Add new config StartTimeMetricRegex to `prometheus` receiver (#1511)
- Convert Zipkin receiver and exporter to use OTLP (#1446)

## �� Bug fixes 🧰
## 🧰 Bug fixes 🧰

- Infer OpenCensus resource type based on OpenTelemetry's semantic conventions (#1462)
- Fix log adapter in `prometheus` receiver (#1493)
Expand Down Expand Up @@ -592,7 +592,7 @@
- Allow to configure read/write buffer sizes for http Client (#1447)
- Update DB conventions to latest and add exception conventions (#1452)

## �� Bug fixes 🧰
## 🧰 Bug fixes 🧰

- Fix `resource` processor for old metrics (#1412)
- `jaeger` receiver: Do not try to stop if failed to start. Collector service will do that (#1434)
Expand Down
50 changes: 20 additions & 30 deletions consumer/pdata/metric.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,41 +127,31 @@ func (md Metrics) MetricAndDataPointCount() (metricCount int, dataPointCount int
ilm := ilms.At(j)
metrics := ilm.Metrics()
metricCount += metrics.Len()
dataPointCount += ilm.Metrics().DataPointCount()
ms := ilm.Metrics()
for k := 0; k < ms.Len(); k++ {
m := ms.At(k)
switch m.DataType() {
case MetricDataTypeIntGauge:
dataPointCount += m.IntGauge().DataPoints().Len()
case MetricDataTypeDoubleGauge:
dataPointCount += m.DoubleGauge().DataPoints().Len()
case MetricDataTypeIntSum:
dataPointCount += m.IntSum().DataPoints().Len()
case MetricDataTypeDoubleSum:
dataPointCount += m.DoubleSum().DataPoints().Len()
case MetricDataTypeIntHistogram:
dataPointCount += m.IntHistogram().DataPoints().Len()
case MetricDataTypeHistogram:
dataPointCount += m.Histogram().DataPoints().Len()
case MetricDataTypeSummary:
dataPointCount += m.Summary().DataPoints().Len()
}
}
}
}
return
}

// DataPointCount calculates the total number of data points.
func (ms MetricSlice) DataPointCount() (dataPointCount int) {
for k := 0; k < ms.Len(); k++ {
dataPointCount += ms.At(k).DataPointCount()
}
return
}

// DataPointCount calculates the total number of data points.
func (ms Metric) DataPointCount() (dataPointCount int) {
switch ms.DataType() {
case MetricDataTypeIntGauge:
dataPointCount = ms.IntGauge().DataPoints().Len()
case MetricDataTypeDoubleGauge:
dataPointCount = ms.DoubleGauge().DataPoints().Len()
case MetricDataTypeIntSum:
dataPointCount = ms.IntSum().DataPoints().Len()
case MetricDataTypeDoubleSum:
dataPointCount = ms.DoubleSum().DataPoints().Len()
case MetricDataTypeIntHistogram:
dataPointCount = ms.IntHistogram().DataPoints().Len()
case MetricDataTypeHistogram:
dataPointCount = ms.Histogram().DataPoints().Len()
case MetricDataTypeSummary:
dataPointCount = ms.Summary().DataPoints().Len()
}
return
}

// MetricDataType specifies the type of data in a Metric.
type MetricDataType int32

Expand Down
35 changes: 32 additions & 3 deletions processor/batchprocessor/splitmetrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func splitMetrics(size int, src pdata.Metrics) pdata.Metrics {
srcIlm.InstrumentationLibrary().CopyTo(destIlm.InstrumentationLibrary())

// If possible to move all metrics do that.
srcDataPointCount := srcIlm.Metrics().DataPointCount()
srcDataPointCount := metricSliceDataPointCount(srcIlm.Metrics())
if size-totalCopiedDataPoints >= srcDataPointCount {
totalCopiedDataPoints += srcDataPointCount
srcIlm.Metrics().MoveAndAppendTo(destIlm.Metrics())
Expand All @@ -56,12 +56,12 @@ func splitMetrics(size int, src pdata.Metrics) pdata.Metrics {

srcIlm.Metrics().RemoveIf(func(srcMetric pdata.Metric) bool {
// If we are done skip everything else.
if srcMetric.DataPointCount()+totalCopiedDataPoints > size {
if metricDataPointCount(srcMetric)+totalCopiedDataPoints > size {
shouldSend = true
return false
}
srcMetric.CopyTo(destIlm.Metrics().AppendEmpty())
totalCopiedDataPoints += srcMetric.DataPointCount()
totalCopiedDataPoints += metricDataPointCount(srcMetric)
return true
})
return false
Expand All @@ -71,3 +71,32 @@ func splitMetrics(size int, src pdata.Metrics) pdata.Metrics {

return dest
}

// metricSliceDataPointCount calculates the total number of data points.
func metricSliceDataPointCount(ms pdata.MetricSlice) (dataPointCount int) {
for k := 0; k < ms.Len(); k++ {
dataPointCount += metricDataPointCount(ms.At(k))
}
return
}

// metricDataPointCount calculates the total number of data points.
func metricDataPointCount(ms pdata.Metric) (dataPointCount int) {
switch ms.DataType() {
case pdata.MetricDataTypeIntGauge:
dataPointCount = ms.IntGauge().DataPoints().Len()
case pdata.MetricDataTypeDoubleGauge:
dataPointCount = ms.DoubleGauge().DataPoints().Len()
case pdata.MetricDataTypeIntSum:
dataPointCount = ms.IntSum().DataPoints().Len()
case pdata.MetricDataTypeDoubleSum:
dataPointCount = ms.DoubleSum().DataPoints().Len()
case pdata.MetricDataTypeIntHistogram:
dataPointCount = ms.IntHistogram().DataPoints().Len()
case pdata.MetricDataTypeHistogram:
dataPointCount = ms.Histogram().DataPoints().Len()
case pdata.MetricDataTypeSummary:
dataPointCount = ms.Summary().DataPoints().Len()
}
return
}
14 changes: 7 additions & 7 deletions processor/batchprocessor/splitmetrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ func TestSplitMetrics_noop(t *testing.T) {
func TestSplitMetrics(t *testing.T) {
md := testdata.GenerateMetricsManyMetricsSameResource(20)
metrics := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0).Metrics()
dataPointCount := metrics.At(0).DataPointCount()
dataPointCount := metricDataPointCount(metrics.At(0))
for i := 0; i < metrics.Len(); i++ {
metrics.At(i).SetName(getTestMetricName(0, i))
assert.Equal(t, dataPointCount, metrics.At(i).DataPointCount())
assert.Equal(t, dataPointCount, metricDataPointCount(metrics.At(i)))
}
cp := pdata.NewMetrics()
cpMetrics := cp.ResourceMetrics().AppendEmpty().InstrumentationLibraryMetrics().AppendEmpty().Metrics()
Expand Down Expand Up @@ -82,10 +82,10 @@ func TestSplitMetrics(t *testing.T) {
func TestSplitMetricsMultipleResourceSpans(t *testing.T) {
md := testdata.GenerateMetricsManyMetricsSameResource(20)
metrics := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0).Metrics()
dataPointCount := metrics.At(0).DataPointCount()
dataPointCount := metricDataPointCount(metrics.At(0))
for i := 0; i < metrics.Len(); i++ {
metrics.At(i).SetName(getTestMetricName(0, i))
assert.Equal(t, dataPointCount, metrics.At(i).DataPointCount())
assert.Equal(t, dataPointCount, metricDataPointCount(metrics.At(i)))
}
// add second index to resource metrics
testdata.GenerateMetricsManyMetricsSameResource(20).
Expand All @@ -107,10 +107,10 @@ func TestSplitMetricsMultipleResourceSpans(t *testing.T) {
func TestSplitMetricsMultipleResourceSpans_SplitSizeGreaterThanMetricSize(t *testing.T) {
td := testdata.GenerateMetricsManyMetricsSameResource(20)
metrics := td.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0).Metrics()
dataPointCount := metrics.At(0).DataPointCount()
dataPointCount := metricDataPointCount(metrics.At(0))
for i := 0; i < metrics.Len(); i++ {
metrics.At(i).SetName(getTestMetricName(0, i))
assert.Equal(t, dataPointCount, metrics.At(i).DataPointCount())
assert.Equal(t, dataPointCount, metricDataPointCount(metrics.At(i)))
}
td.ResourceMetrics().Resize(2)
// add second index to resource metrics
Expand Down Expand Up @@ -182,7 +182,7 @@ func TestSplitMetricsNotFull(t *testing.T) {
dataPointCount := 2
for i := 0; i < metrics.Len(); i++ {
metrics.At(i).SetName(getTestMetricName(0, i))
assert.Equal(t, dataPointCount, metrics.At(i).DataPointCount())
assert.Equal(t, dataPointCount, metricDataPointCount(metrics.At(i)))
}

splitSize := 9
Expand Down

0 comments on commit 3f4a67b

Please sign in to comment.