Skip to content

Commit a33e848

Browse files
0xgoudapashagolub
andauthored
[+] define sync metric operations types as constants (#781)
* define sync metric operations types as constants this adds AddOp DeleteOp constant operation types and invalidOp as unexported testing-only operation modifies rpc_test to be at the sinks package not sinks_test * add `SyncOp` to `api` --------- Co-authored-by: Pavlo Golub <[email protected]>
1 parent e005ba5 commit a33e848

File tree

13 files changed

+63
-47
lines changed

13 files changed

+63
-47
lines changed

api/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ type (
1212
// with metadata such as metric name, source type, etc.
1313
MeasurementEnvelope = metrics.MeasurementEnvelope
1414
// RPCSyncRequest represents a request to sync metrics with the remote RPC sink
15+
OpType = sinks.SyncOp
1516
RPCSyncRequest = sinks.SyncReq
1617
)

internal/reaper/database.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/cybertec-postgresql/pgwatch/v3/internal/db"
1212
"github.com/cybertec-postgresql/pgwatch/v3/internal/log"
1313
"github.com/cybertec-postgresql/pgwatch/v3/internal/metrics"
14+
"github.com/cybertec-postgresql/pgwatch/v3/internal/sinks"
1415
"github.com/cybertec-postgresql/pgwatch/v3/internal/sources"
1516
"github.com/jackc/pgx/v5"
1617
)
@@ -543,14 +544,14 @@ func (r *Reaper) CloseResourcesForRemovedMonitoredDBs(shutDownDueToRoleChange ma
543544
for _, prevDB := range r.prevLoopMonitoredDBs {
544545
if r.monitoredSources.GetMonitoredDatabase(prevDB.Name) == nil { // removed from config
545546
prevDB.Conn.Close()
546-
_ = r.SinksWriter.SyncMetric(prevDB.Name, "", "remove")
547+
_ = r.SinksWriter.SyncMetric(prevDB.Name, "", sinks.DeleteOp)
547548
}
548549
}
549550

550551
for roleChangedDB := range shutDownDueToRoleChange {
551552
if db := r.monitoredSources.GetMonitoredDatabase(roleChangedDB); db != nil {
552553
db.Conn.Close()
553554
}
554-
_ = r.SinksWriter.SyncMetric(roleChangedDB, "", "remove")
555+
_ = r.SinksWriter.SyncMetric(roleChangedDB, "", sinks.DeleteOp)
555556
}
556557
}

internal/reaper/reaper.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/cybertec-postgresql/pgwatch/v3/internal/cmdopts"
1515
"github.com/cybertec-postgresql/pgwatch/v3/internal/log"
1616
"github.com/cybertec-postgresql/pgwatch/v3/internal/metrics"
17+
"github.com/cybertec-postgresql/pgwatch/v3/internal/sinks"
1718
"github.com/cybertec-postgresql/pgwatch/v3/internal/sources"
1819
)
1920

@@ -170,7 +171,7 @@ func (r *Reaper) Reap(ctx context.Context) {
170171
metricNameForStorage = mvp.StorageName
171172
}
172173

173-
if err := r.SinksWriter.SyncMetric(monitoredSource.Name, metricNameForStorage, "add"); err != nil {
174+
if err := r.SinksWriter.SyncMetric(monitoredSource.Name, metricNameForStorage, sinks.AddOp); err != nil {
174175
srcL.Error(err)
175176
}
176177

@@ -267,7 +268,7 @@ func (r *Reaper) ShutdownOldWorkers(ctx context.Context, hostsToShutDownDueToRol
267268
logger.WithField("source", db).WithField("metric", metric).Info("stopping gatherer...")
268269
cancelFunc()
269270
delete(r.cancelFuncs, dbMetric)
270-
if err := r.SinksWriter.SyncMetric(db, metric, "remove"); err != nil {
271+
if err := r.SinksWriter.SyncMetric(db, metric, sinks.DeleteOp); err != nil {
271272
logger.Error(err)
272273
}
273274
}

internal/sinks/json.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (jw *JSONWriter) watchCtx() {
6464
jw.lw.Close()
6565
}
6666

67-
func (jw *JSONWriter) SyncMetric(_, _, _ string) error {
67+
func (jw *JSONWriter) SyncMetric(_, _ string, _ SyncOp) error {
6868
if jw.ctx.Err() != nil {
6969
return jw.ctx.Err()
7070
}

internal/sinks/json_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ func TestJSONWriter_SyncMetric(t *testing.T) {
6060
assert.NoError(t, err)
6161

6262
// Call the function being tested
63-
err = jw.SyncMetric("", "", "")
63+
err = jw.SyncMetric("", "", invalidOp)
6464
assert.NoError(t, err)
6565

6666
cancel()
67-
err = jw.SyncMetric("", "", "")
67+
err = jw.SyncMetric("", "", invalidOp)
6868
assert.Error(t, err, "context canceled")
6969

7070
}

internal/sinks/multiwriter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212

1313
// Writer is an interface that writes metrics values
1414
type Writer interface {
15-
SyncMetric(dbUnique, metricName, op string) error
15+
SyncMetric(dbUnique, metricName string, op SyncOp) error
1616
Write(msgs metrics.MeasurementEnvelope) error
1717
}
1818

@@ -62,7 +62,7 @@ func (mw *MultiWriter) AddWriter(w Writer) {
6262
mw.Unlock()
6363
}
6464

65-
func (mw *MultiWriter) SyncMetric(dbUnique, metricName, op string) (err error) {
65+
func (mw *MultiWriter) SyncMetric(dbUnique, metricName string, op SyncOp) (err error) {
6666
for _, w := range mw.writers {
6767
err = errors.Join(err, w.SyncMetric(dbUnique, metricName, op))
6868
}

internal/sinks/multiwriter_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010

1111
type MockWriter struct{}
1212

13-
func (mw *MockWriter) SyncMetric(_, _, _ string) error {
13+
func (mw *MockWriter) SyncMetric(_, _ string, _ SyncOp) error {
1414
return nil
1515
}
1616

@@ -74,7 +74,7 @@ func TestSyncMetrics(t *testing.T) {
7474
mw := &MultiWriter{}
7575
mockWriter := &MockWriter{}
7676
mw.AddWriter(mockWriter)
77-
err := mw.SyncMetric("db", "metric", "op")
77+
err := mw.SyncMetric("db", "metric", invalidOp)
7878
assert.NoError(t, err)
7979
}
8080

internal/sinks/postgres.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ var (
150150
)
151151

152152
// SyncMetric ensures that tables exist for newly added metrics and/or sources
153-
func (pgw *PostgresWriter) SyncMetric(dbUnique, metricName, op string) error {
154-
if op == "add" {
153+
func (pgw *PostgresWriter) SyncMetric(dbUnique, metricName string, op SyncOp) error {
154+
if op == AddOp {
155155
return errors.Join(
156156
pgw.AddDBUniqueMetricToListingTable(dbUnique, metricName),
157157
pgw.EnsureMetricDummy(metricName), // ensure that there is at least an empty top-level table not to get ugly Grafana notifications

internal/sinks/postgres_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ func TestSyncMetric(t *testing.T) {
6161
}
6262
dbUnique := "mydb"
6363
metricName := "mymetric"
64-
op := "add"
64+
op := AddOp
6565
conn.ExpectExec("insert into admin\\.all_distinct_dbname_metrics").WithArgs(dbUnique, metricName).WillReturnResult(pgxmock.NewResult("EXECUTE", 1))
6666
conn.ExpectExec("select admin\\.ensure_dummy_metrics_table").WithArgs(metricName).WillReturnResult(pgxmock.NewResult("EXECUTE", 1))
6767
err = pgw.SyncMetric(dbUnique, metricName, op)
6868
assert.NoError(t, err)
6969
assert.NoError(t, conn.ExpectationsWereMet())
7070

71-
op = "foo"
71+
op = invalidOp
7272
err = pgw.SyncMetric(dbUnique, metricName, op)
7373
assert.NoError(t, err, "ignore unknown operation")
7474
}

internal/sinks/prometheus.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,11 @@ func (promw *PrometheusWriter) PurgeMetricsFromPromAsyncCacheIfAny(dbUnique, met
117117
}
118118
}
119119

120-
func (promw *PrometheusWriter) SyncMetric(dbUnique, metricName, op string) error {
120+
func (promw *PrometheusWriter) SyncMetric(dbUnique, metricName string, op SyncOp) error {
121121
switch op {
122-
case "remove":
122+
case DeleteOp:
123123
promw.PurgeMetricsFromPromAsyncCacheIfAny(dbUnique, metricName)
124-
case "add":
124+
case AddOp:
125125
promw.PromAsyncCacheInitIfRequired(dbUnique, metricName)
126126
}
127127
return nil

0 commit comments

Comments
 (0)