From 3461f3a12fc29ac36f37f65cc5a1d320145fe34d Mon Sep 17 00:00:00 2001 From: tharun0064 Date: Tue, 28 Jan 2025 15:35:50 +0530 Subject: [PATCH] Feat review comments (#63) * remove unused variables --------- Co-authored-by: Jyothi Surampudi <99384747+sjyothi54@users.noreply.github.com> Co-authored-by: jsurampudi Co-authored-by: Rahul Reddy --- .../common-utils/constants.go | 9 +++++++-- .../common-utils/ingestion-helpers.go | 2 +- .../global-variables/global_variables.go | 20 ++++++------------- .../performance-metrics/blocking_sessions.go | 2 +- .../blocking_sessions_test.go | 2 +- .../individual_query_metrics.go | 2 +- .../individual_query_metrics_test.go | 2 +- .../performance-metrics/slow_query_metrics.go | 2 +- .../slow_query_metrics_test.go | 4 ++-- .../performance-metrics/wait_event_metrics.go | 2 +- .../wait_event_metrics_test.go | 4 ++-- 11 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/query-performance-monitoring/common-utils/constants.go b/src/query-performance-monitoring/common-utils/constants.go index 92676ae6..11ccd59d 100644 --- a/src/query-performance-monitoring/common-utils/constants.go +++ b/src/query-performance-monitoring/common-utils/constants.go @@ -2,8 +2,13 @@ package commonutils import "errors" -const MaxQueryThreshold = 30 -const MaxIndividualQueryThreshold = 10 +// The maximum number records that can be fetched in a single metrics +const MaxQueryCountThreshold = 30 + +// The maximum number of individual queries that can be fetched in a single metrics +const MaxIndividualQueryCountThreshold = 10 + +// The maximum number of metrics to be published in a single batch const PublishThreshold = 100 const RandomIntRange = 1000000 const TimeFormat = "20060102150405" diff --git a/src/query-performance-monitoring/common-utils/ingestion-helpers.go b/src/query-performance-monitoring/common-utils/ingestion-helpers.go index 48e6fd32..92190214 100644 --- a/src/query-performance-monitoring/common-utils/ingestion-helpers.go +++ b/src/query-performance-monitoring/common-utils/ingestion-helpers.go @@ -74,7 +74,7 @@ func IngestMetric(metricList []interface{}, eventName string, pgIntegration *int } func CreateEntity(pgIntegration *integration.Integration, gv *globalvariables.GlobalVariables) (*integration.Entity, error) { - return pgIntegration.Entity(fmt.Sprintf("%s:%s", gv.Hostname, gv.Port), "pg-instance") + return pgIntegration.Entity(fmt.Sprintf("%s:%s", gv.Arguments.Hostname, gv.Arguments.Port), "pg-instance") } func ProcessModel(model interface{}, metricSet *metric.Set) error { diff --git a/src/query-performance-monitoring/global-variables/global_variables.go b/src/query-performance-monitoring/global-variables/global_variables.go index 6cd3bd33..d85b6623 100644 --- a/src/query-performance-monitoring/global-variables/global_variables.go +++ b/src/query-performance-monitoring/global-variables/global_variables.go @@ -5,23 +5,15 @@ import ( ) type GlobalVariables struct { - QueryResponseTimeThreshold int - QueryCountThreshold int - Version uint64 - DatabaseString string - Hostname string - Port string - Arguments args.ArgumentList + Version uint64 + DatabaseString string + Arguments args.ArgumentList } func SetGlobalVariables(args args.ArgumentList, version uint64, databaseString string) *GlobalVariables { return &GlobalVariables{ - QueryResponseTimeThreshold: args.QueryResponseTimeThreshold, - QueryCountThreshold: args.QueryCountThreshold, - Version: version, - DatabaseString: databaseString, - Hostname: args.Hostname, - Port: args.Port, - Arguments: args, + Version: version, + DatabaseString: databaseString, + Arguments: args, } } diff --git a/src/query-performance-monitoring/performance-metrics/blocking_sessions.go b/src/query-performance-monitoring/performance-metrics/blocking_sessions.go index 89e4293c..6d358311 100644 --- a/src/query-performance-monitoring/performance-metrics/blocking_sessions.go +++ b/src/query-performance-monitoring/performance-metrics/blocking_sessions.go @@ -43,7 +43,7 @@ func GetBlockingMetrics(conn *performancedbconnection.PGSQLConnection, gv *globa log.Error("Unsupported postgres version: %v", err) return nil, err } - var query = fmt.Sprintf(versionSpecificBlockingQuery, gv.DatabaseString, min(gv.QueryCountThreshold, commonutils.MaxQueryThreshold)) + var query = fmt.Sprintf(versionSpecificBlockingQuery, gv.DatabaseString, min(gv.Arguments.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) rows, err := conn.Queryx(query) if err != nil { log.Error("Failed to execute query: %v", err) diff --git a/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go b/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go index 4a6a14dd..f8c959ca 100644 --- a/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go +++ b/src/query-performance-monitoring/performance-metrics/blocking_sessions_test.go @@ -23,7 +23,7 @@ func TestGetBlockingMetrics(t *testing.T) { gv := global_variables.SetGlobalVariables(args, version, databaseName) expectedQuery := queries.BlockingQueriesForV12AndV13 - query := fmt.Sprintf(expectedQuery, databaseName, min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) + query := fmt.Sprintf(expectedQuery, databaseName, min(args.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "newrelic", "blocked_pid", "blocked_query", "blocked_query_id", "blocked_query_start", "database_name", "blocking_pid", "blocking_query", "blocking_query_id", "blocking_query_start", diff --git a/src/query-performance-monitoring/performance-metrics/individual_query_metrics.go b/src/query-performance-monitoring/performance-metrics/individual_query_metrics.go index 796b601f..ec457973 100644 --- a/src/query-performance-monitoring/performance-metrics/individual_query_metrics.go +++ b/src/query-performance-monitoring/performance-metrics/individual_query_metrics.go @@ -56,7 +56,7 @@ func GetIndividualQueryMetrics(conn *performancedbconnection.PGSQLConnection, sl } func getIndividualQueriesSamples(conn *performancedbconnection.PGSQLConnection, slowRunningQueries datamodels.SlowRunningQueryMetrics, gv *globalvariables.GlobalVariables, anonymizedQueriesByDB map[string]map[string]string, individualQueryMetricsForExecPlanList *[]datamodels.IndividualQueryMetrics, individualQueryMetricsListInterface *[]interface{}, versionSpecificIndividualQuery string) { - query := fmt.Sprintf(versionSpecificIndividualQuery, *slowRunningQueries.QueryID, gv.DatabaseString, gv.QueryResponseTimeThreshold, min(gv.QueryCountThreshold, commonutils.MaxIndividualQueryThreshold)) + query := fmt.Sprintf(versionSpecificIndividualQuery, *slowRunningQueries.QueryID, gv.DatabaseString, gv.Arguments.QueryResponseTimeThreshold, min(gv.Arguments.QueryCountThreshold, commonutils.MaxIndividualQueryCountThreshold)) if query == "" { log.Debug("Error constructing individual query") return diff --git a/src/query-performance-monitoring/performance-metrics/individual_query_metrics_test.go b/src/query-performance-monitoring/performance-metrics/individual_query_metrics_test.go index 23b8ea17..3ab5d215 100644 --- a/src/query-performance-monitoring/performance-metrics/individual_query_metrics_test.go +++ b/src/query-performance-monitoring/performance-metrics/individual_query_metrics_test.go @@ -26,7 +26,7 @@ func TestGetIndividualQueryMetrics(t *testing.T) { gv := global_variables.SetGlobalVariables(args, version, databaseName) // Mock the individual query - query := fmt.Sprintf(queries.IndividualQuerySearchV13AndAbove, mockQueryID, databaseName, args.QueryResponseTimeThreshold, min(args.QueryCountThreshold, commonutils.MaxIndividualQueryThreshold)) + query := fmt.Sprintf(queries.IndividualQuerySearchV13AndAbove, mockQueryID, databaseName, args.QueryResponseTimeThreshold, min(args.QueryCountThreshold, commonutils.MaxIndividualQueryCountThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "newrelic", "query", "queryid", "datname", "planid", "avg_cpu_time_ms", "avg_exec_time_ms", }).AddRow( diff --git a/src/query-performance-monitoring/performance-metrics/slow_query_metrics.go b/src/query-performance-monitoring/performance-metrics/slow_query_metrics.go index cc4a9d0a..68b6b16f 100644 --- a/src/query-performance-monitoring/performance-metrics/slow_query_metrics.go +++ b/src/query-performance-monitoring/performance-metrics/slow_query_metrics.go @@ -20,7 +20,7 @@ func GetSlowRunningMetrics(conn *performancedbconnection.PGSQLConnection, gv *gl log.Error("Unsupported postgres version: %v", err) return nil, nil, err } - var query = fmt.Sprintf(versionSpecificSlowQuery, gv.DatabaseString, min(gv.QueryCountThreshold, commonutils.MaxQueryThreshold)) + var query = fmt.Sprintf(versionSpecificSlowQuery, gv.DatabaseString, min(gv.Arguments.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) rows, err := conn.Queryx(query) if err != nil { return nil, nil, err diff --git a/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go b/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go index 842a1610..f8053288 100644 --- a/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go +++ b/src/query-performance-monitoring/performance-metrics/slow_query_metrics_test.go @@ -21,7 +21,7 @@ func runSlowQueryTest(t *testing.T, query string, version uint64, expectedLength databaseName := "testdb" gv := global_variables.SetGlobalVariables(args, version, databaseName) - query = fmt.Sprintf(query, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) + query = fmt.Sprintf(query, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "newrelic", "query_id", "query_text", "database_name", "schema_name", "execution_count", "avg_elapsed_time_ms", "avg_disk_reads", "avg_disk_writes", "statement_type", "collection_timestamp", @@ -50,7 +50,7 @@ func TestGetSlowRunningEmptyMetrics(t *testing.T) { version := uint64(13) gv := global_variables.SetGlobalVariables(args, version, databaseName) expectedQuery := queries.SlowQueriesForV13AndAbove - query := fmt.Sprintf(expectedQuery, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) + query := fmt.Sprintf(expectedQuery, "testdb", min(args.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "newrelic", "query_id", "query_text", "database_name", "schema_name", "execution_count", "avg_elapsed_time_ms", "avg_disk_reads", "avg_disk_writes", "statement_type", "collection_timestamp", diff --git a/src/query-performance-monitoring/performance-metrics/wait_event_metrics.go b/src/query-performance-monitoring/performance-metrics/wait_event_metrics.go index 4e6271f0..e8744cb3 100644 --- a/src/query-performance-monitoring/performance-metrics/wait_event_metrics.go +++ b/src/query-performance-monitoring/performance-metrics/wait_event_metrics.go @@ -40,7 +40,7 @@ func PopulateWaitEventMetrics(conn *performancedbconnection.PGSQLConnection, pgI func GetWaitEventMetrics(conn *performancedbconnection.PGSQLConnection, gv *globalvariables.GlobalVariables) ([]interface{}, error) { var waitEventMetricsList []interface{} - var query = fmt.Sprintf(queries.WaitEvents, gv.DatabaseString, min(gv.QueryCountThreshold, commonutils.MaxQueryThreshold)) + var query = fmt.Sprintf(queries.WaitEvents, gv.DatabaseString, min(gv.Arguments.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) rows, err := conn.Queryx(query) if err != nil { return nil, err diff --git a/src/query-performance-monitoring/performance-metrics/wait_event_metrics_test.go b/src/query-performance-monitoring/performance-metrics/wait_event_metrics_test.go index 76b004c4..233d0d21 100644 --- a/src/query-performance-monitoring/performance-metrics/wait_event_metrics_test.go +++ b/src/query-performance-monitoring/performance-metrics/wait_event_metrics_test.go @@ -21,7 +21,7 @@ func TestGetWaitEventMetrics(t *testing.T) { databaseName := "testdb" gv := global_variables.SetGlobalVariables(args, uint64(14), databaseName) - var query = fmt.Sprintf(queries.WaitEvents, databaseName, min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) + var query = fmt.Sprintf(queries.WaitEvents, databaseName, min(args.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "wait_event_name", "wait_category", "total_wait_time_ms", "collection_timestamp", "query_id", "query_text", "database_name", }).AddRow( @@ -40,7 +40,7 @@ func TestGetWaitEventEmptyMetrics(t *testing.T) { databaseName := "testdb" gv := global_variables.SetGlobalVariables(args, uint64(14), databaseName) - var query = fmt.Sprintf(queries.WaitEvents, databaseName, min(args.QueryCountThreshold, commonutils.MaxQueryThreshold)) + var query = fmt.Sprintf(queries.WaitEvents, databaseName, min(args.QueryCountThreshold, commonutils.MaxQueryCountThreshold)) mock.ExpectQuery(regexp.QuoteMeta(query)).WillReturnRows(sqlmock.NewRows([]string{ "wait_event_name", "wait_category", "total_wait_time_ms", "collection_timestamp", "query_id", "query_text", "database_name", }))