Skip to content

Commit 488977d

Browse files
authored
[*] remove metrics definitions from Postgres sink constructor (#773)
1 parent c50f044 commit 488977d

File tree

5 files changed

+17
-28
lines changed

5 files changed

+17
-28
lines changed

internal/cmdopts/cmdoptions.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,7 @@ func (c *Options) InitConfigReaders(ctx context.Context) error {
161161

162162
// InitSinkWriter creates a new MultiWriter instance if needed.
163163
func (c *Options) InitSinkWriter(ctx context.Context) (err error) {
164-
metricDefs, err := c.MetricsReaderWriter.GetMetrics()
165-
if err != nil {
166-
return err
167-
}
168-
c.SinksWriter, err = sinks.NewSinkWriter(ctx, &c.Sinks, metricDefs)
164+
c.SinksWriter, err = sinks.NewSinkWriter(ctx, &c.Sinks)
169165
return
170166
}
171167

internal/sinks/multiwriter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ type MultiWriter struct {
2323
}
2424

2525
// NewSinkWriter creates and returns new instance of MultiWriter struct.
26-
func NewSinkWriter(ctx context.Context, opts *CmdOpts, metricDefs *metrics.Metrics) (w Writer, err error) {
26+
func NewSinkWriter(ctx context.Context, opts *CmdOpts) (w Writer, err error) {
2727
if len(opts.Sinks) == 0 {
2828
return nil, errors.New("no sinks specified for measurements")
2929
}
@@ -37,7 +37,7 @@ func NewSinkWriter(ctx context.Context, opts *CmdOpts, metricDefs *metrics.Metri
3737
case "jsonfile":
3838
w, err = NewJSONWriter(ctx, path)
3939
case "postgres", "postgresql":
40-
w, err = NewPostgresWriter(ctx, s, opts, metricDefs)
40+
w, err = NewPostgresWriter(ctx, s, opts)
4141
case "prometheus":
4242
w, err = NewPrometheusWriter(ctx, path)
4343
case "rpc":

internal/sinks/multiwriter_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func TestNewMultiWriter(t *testing.T) {
4949
}
5050

5151
for _, i := range input {
52-
mw, err := NewSinkWriter(context.Background(), i.opts, metrics.GetDefaultMetrics())
52+
mw, err := NewSinkWriter(context.Background(), i.opts)
5353
if i.err {
5454
assert.Error(t, err)
5555
} else {

internal/sinks/postgres.go

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"encoding/json"
77
"errors"
88
"fmt"
9+
"maps"
910
"strings"
1011
"time"
1112

@@ -22,24 +23,23 @@ var (
2223
deleterDelay = time.Hour
2324
)
2425

25-
func NewPostgresWriter(ctx context.Context, connstr string, opts *CmdOpts, metricDefs *metrics.Metrics) (pgw *PostgresWriter, err error) {
26+
func NewPostgresWriter(ctx context.Context, connstr string, opts *CmdOpts) (pgw *PostgresWriter, err error) {
2627
var conn db.PgxPoolIface
2728
if conn, err = db.New(ctx, connstr); err != nil {
2829
return
2930
}
30-
return NewWriterFromPostgresConn(ctx, conn, opts, metricDefs)
31+
return NewWriterFromPostgresConn(ctx, conn, opts)
3132
}
3233

33-
func NewWriterFromPostgresConn(ctx context.Context, conn db.PgxPoolIface, opts *CmdOpts, metricDefs *metrics.Metrics) (pgw *PostgresWriter, err error) {
34+
func NewWriterFromPostgresConn(ctx context.Context, conn db.PgxPoolIface, opts *CmdOpts) (pgw *PostgresWriter, err error) {
3435
l := log.GetLogger(ctx).WithField("sink", "postgres").WithField("db", conn.Config().ConnConfig.Database)
3536
ctx = log.WithLogger(ctx, l)
3637
pgw = &PostgresWriter{
37-
ctx: ctx,
38-
metricDefs: metricDefs,
39-
opts: opts,
40-
input: make(chan metrics.MeasurementEnvelope, cacheLimit),
41-
lastError: make(chan error),
42-
sinkDb: conn,
38+
ctx: ctx,
39+
opts: opts,
40+
input: make(chan metrics.MeasurementEnvelope, cacheLimit),
41+
lastError: make(chan error),
42+
sinkDb: conn,
4343
}
4444
if err = db.Init(ctx, pgw.sinkDb, func(ctx context.Context, conn db.PgxIface) error {
4545
l.Info("initialising measurements database...")
@@ -106,7 +106,6 @@ type PostgresWriter struct {
106106
ctx context.Context
107107
sinkDb db.PgxPoolIface
108108
metricSchema DbStorageSchemaType
109-
metricDefs *metrics.Metrics
110109
opts *CmdOpts
111110
input chan metrics.MeasurementEnvelope
112111
lastError chan error
@@ -122,7 +121,7 @@ type MeasurementMessagePostgres struct {
122121
DBName string
123122
Metric string
124123
Data map[string]any
125-
TagData map[string]any
124+
TagData map[string]string
126125
}
127126

128127
type DbStorageSchemaType int
@@ -239,20 +238,16 @@ func (pgw *PostgresWriter) flush(msgs []metrics.MeasurementEnvelope) {
239238
if len(msg.Data) == 0 {
240239
continue
241240
}
242-
logger.WithField("data", msg.Data).WithField("len", len(msg.Data)).Debug("sending to postgres")
243-
244241
for _, dataRow := range msg.Data {
245242
var epochTime time.Time
246243

247-
tags := make(map[string]any)
244+
tags := make(map[string]string)
248245
fields := make(map[string]any)
249246

250247
totalRows++
251248

252249
if msg.CustomTags != nil {
253-
for k, v := range msg.CustomTags {
254-
tags[k] = fmt.Sprintf("%v", v)
255-
}
250+
tags = maps.Clone(msg.CustomTags)
256251
}
257252
epochTime = time.Unix(0, metrics.Measurement(dataRow).GetEpoch())
258253
for k, v := range dataRow {
@@ -330,7 +325,6 @@ func (pgw *PostgresWriter) flush(msgs []metrics.MeasurementEnvelope) {
330325
}
331326

332327
// send data to PG, with a separate COPY for all metrics
333-
logger.Debugf("COPY-ing %d metrics to Postgres metricsDB...", rowsBatched)
334328
t1 := time.Now()
335329

336330
for metricName, metrics := range metricsToStorePerMetric {
@@ -507,7 +501,6 @@ func (pgw *PostgresWriter) deleteOldPartitions(delay time.Duration) {
507501
logger.Infof("Dropping %d old metric partitions one by one...", len(partsToDrop))
508502
for _, toDrop := range partsToDrop {
509503
sqlDropTable := `DROP TABLE IF EXISTS ` + toDrop
510-
logger.Debugf("Dropping old metric data partition: %s", toDrop)
511504

512505
if _, err := pgw.sinkDb.Exec(pgw.ctx, sqlDropTable); err != nil {
513506
logger.Errorf("Failed to drop old partition %s from Postgres metrics DB: %w", toDrop, err)

internal/sinks/postgres_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func TestNewWriterFromPostgresConn(t *testing.T) {
4444
}
4545

4646
opts := &CmdOpts{BatchingDelay: time.Hour, Retention: 356}
47-
pgw, err := NewWriterFromPostgresConn(ctx, conn, opts, metrics.GetDefaultMetrics())
47+
pgw, err := NewWriterFromPostgresConn(ctx, conn, opts)
4848
assert.NoError(t, err)
4949
assert.NotNil(t, pgw)
5050

0 commit comments

Comments
 (0)