@@ -15,18 +15,14 @@ import (
1515 "github.com/jackc/pgx/v5"
1616)
1717
18- func QueryMeasurements (ctx context.Context , dbUnique string , sql string , args ... any ) (metrics.Measurements , error ) {
19- // TODO: move to sources package and use direct pgx connection
18+ func QueryMeasurements (ctx context.Context , md * sources.SourceConn , sql string , args ... any ) (metrics.Measurements , error ) {
2019 var conn db.PgxIface
21- var md * sources.SourceConn
2220 var err error
2321 var tx pgx.Tx
2422 if strings .TrimSpace (sql ) == "" {
2523 return nil , errors .New ("empty SQL" )
2624 }
27- if md , err = GetMonitoredDatabaseByUniqueName (ctx , dbUnique ); err != nil {
28- return nil , err
29- }
25+
3026 conn = md .Conn
3127 if md .IsPostgresSource () {
3228 // we don't want transaction for non-postgres sources, e.g. pgbouncer
@@ -67,7 +63,7 @@ func DetectSprocChanges(ctx context.Context, md *sources.SourceConn, storageCh c
6763 return changeCounts
6864 }
6965
70- data , err := QueryMeasurements (ctx , md . Name , mvp .GetSQL (int (md .Version )))
66+ data , err := QueryMeasurements (ctx , md , mvp .GetSQL (int (md .Version )))
7167 if err != nil {
7268 log .GetLogger (ctx ).Error ("could not read sproc_hashes from monitored host: " , md .Name , ", err:" , err )
7369 return changeCounts
@@ -150,7 +146,7 @@ func DetectTableChanges(ctx context.Context, md *sources.SourceConn, storageCh c
150146 return changeCounts
151147 }
152148
153- data , err := QueryMeasurements (ctx , md . Name , mvp .GetSQL (int (md .Version )))
149+ data , err := QueryMeasurements (ctx , md , mvp .GetSQL (int (md .Version )))
154150 if err != nil {
155151 log .GetLogger (ctx ).Error ("could not read table_hashes from monitored host:" , md .Name , ", err:" , err )
156152 return changeCounts
@@ -233,7 +229,7 @@ func DetectIndexChanges(ctx context.Context, md *sources.SourceConn, storageCh c
233229 return changeCounts
234230 }
235231
236- data , err := QueryMeasurements (ctx , md . Name , mvp .GetSQL (int (md .Version )))
232+ data , err := QueryMeasurements (ctx , md , mvp .GetSQL (int (md .Version )))
237233 if err != nil {
238234 log .GetLogger (ctx ).Error ("could not read index_hashes from monitored host:" , md .Name , ", err:" , err )
239235 return changeCounts
@@ -315,7 +311,7 @@ func DetectPrivilegeChanges(ctx context.Context, md *sources.SourceConn, storage
315311 }
316312
317313 // returns rows of: object_type, tag_role, tag_object, privilege_type
318- data , err := QueryMeasurements (ctx , md . Name , mvp .GetSQL (int (md .Version )))
314+ data , err := QueryMeasurements (ctx , md , mvp .GetSQL (int (md .Version )))
319315 if err != nil {
320316 log .GetLogger (ctx ).Errorf ("[%s][%s] failed to fetch object privileges info: %v" , md .Name , specialMetricChangeEvents , err )
321317 return changeCounts
@@ -389,7 +385,7 @@ func DetectConfigurationChanges(ctx context.Context, md *sources.SourceConn, sto
389385 return changeCounts
390386 }
391387
392- data , err := QueryMeasurements (ctx , md . Name , mvp .GetSQL (int (md .Version )))
388+ data , err := QueryMeasurements (ctx , md , mvp .GetSQL (int (md .Version )))
393389 if err != nil {
394390 log .GetLogger (ctx ).Errorf ("[%s][%s] could not read configuration_hashes from monitored host: %v" , md .Name , specialMetricChangeEvents , err )
395391 return changeCounts
@@ -468,7 +464,6 @@ func (r *Reaper) CheckForPGObjectChangesAndStore(ctx context.Context, dbUnique s
468464 influxEntry := metrics .NewMeasurement (time .Now ().UnixNano ())
469465 influxEntry ["details" ] = message
470466 detectedChangesSummary = append (detectedChangesSummary , influxEntry )
471- md , _ := GetMonitoredDatabaseByUniqueName (ctx , dbUnique )
472467 storageCh <- metrics.MeasurementEnvelope {
473468 DBName : dbUnique ,
474469 SourceType : string (md .Kind ),
@@ -483,15 +478,15 @@ func (r *Reaper) CheckForPGObjectChangesAndStore(ctx context.Context, dbUnique s
483478// Called once on daemon startup if some commonly wanted extension (most notably pg_stat_statements) is missing.
484479// With newer Postgres version can even succeed if the user is not a real superuser due to some cloud-specific
485480// whitelisting or "trusted extensions" (a feature from v13). Ignores errors.
486- func TryCreateMissingExtensions (ctx context.Context , dbUnique string , extensionNames []string , existingExtensions map [string ]int ) []string {
481+ func TryCreateMissingExtensions (ctx context.Context , md * sources. SourceConn , extensionNames []string , existingExtensions map [string ]int ) []string {
487482 // TODO: move to sources package and use direct pgx connection
488483 sqlAvailable := `select name::text from pg_available_extensions`
489484 extsCreated := make ([]string , 0 )
490485
491486 // For security reasons don't allow to execute random strings but check that it's an existing extension
492- data , err := QueryMeasurements (ctx , dbUnique , sqlAvailable )
487+ data , err := QueryMeasurements (ctx , md , sqlAvailable )
493488 if err != nil {
494- log .GetLogger (ctx ).Infof ("[%s] Failed to get a list of available extensions: %v" , dbUnique , err )
489+ log .GetLogger (ctx ).Infof ("[%s] Failed to get a list of available extensions: %v" , md , err )
495490 return extsCreated
496491 }
497492
@@ -506,12 +501,12 @@ func TryCreateMissingExtensions(ctx context.Context, dbUnique string, extensionN
506501 }
507502 _ , ok := availableExts [extToCreate ]
508503 if ! ok {
509- log .GetLogger (ctx ).Errorf ("[%s] Requested extension %s not available on instance, cannot try to create..." , dbUnique , extToCreate )
504+ log .GetLogger (ctx ).Errorf ("[%s] Requested extension %s not available on instance, cannot try to create..." , md , extToCreate )
510505 } else {
511506 sqlCreateExt := `create extension ` + extToCreate
512- _ , err := QueryMeasurements (ctx , dbUnique , sqlCreateExt )
507+ _ , err := QueryMeasurements (ctx , md , sqlCreateExt )
513508 if err != nil {
514- log .GetLogger (ctx ).Errorf ("[%s] Failed to create extension %s (based on --try-create-listed-exts-if-missing input): %v" , dbUnique , extToCreate , err )
509+ log .GetLogger (ctx ).Errorf ("[%s] Failed to create extension %s (based on --try-create-listed-exts-if-missing input): %v" , md , extToCreate , err )
515510 }
516511 extsCreated = append (extsCreated , extToCreate )
517512 }
0 commit comments