From 3467cc5be075bc712448f472471c82b976baa6af Mon Sep 17 00:00:00 2001 From: Lukasz Raczylo Date: Fri, 28 Jun 2024 13:26:18 +0100 Subject: [PATCH] Fix the cleanup routine. --- README.md | 2 +- events.go | 33 +++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 33c9168..9a6e4fb 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Creates a passthrough proxy to a graphql endpoint(s), allowing you to analyse the queries and responses, producing the Prometheus metrics at a fraction of the cost - because, as we know - $0 is a fair price. -This project is in active use by [telegram-bot.app](https://telegram-bot.app), and was tested with 30k queries per second on a single instance, consuming 10 MB of RAM and 0.1% CPU. +This project is in active use by [telegram-bot.app](https://telegram-bot.app), and was tested with 30k queries per second on a single instance, consuming 10 MB of RAM and 0.1% CPU. [Benchmarks](https://lukaszraczylo.github.io/graphql-monitoring-proxy/dev/bench/) are available. ![Example of monitoring dashboard](static/monitoring-at-glance.png?raw=true) diff --git a/events.go b/events.go index 81ccc47..155dd41 100644 --- a/events.go +++ b/events.go @@ -14,9 +14,9 @@ const ( cleanupInterval = 1 * time.Hour ) -var delQueries = []string{ - "DELETE FROM hdb_catalog.event_invocation_logs WHERE created_at < now() - interval '%d days';", - "DELETE FROM hdb_catalog.event_log WHERE created_at < now() - interval '%d days';", +var delQueries = [...]string{ + "DELETE FROM hdb_catalog.event_invocation_logs WHERE created_at < NOW() - interval '%d days';", + "DELETE FROM hdb_catalog.event_log WHERE created_at < NOW() - interval '%d days';", "DELETE FROM hdb_catalog.hdb_action_log WHERE created_at < NOW() - INTERVAL '%d days';", "DELETE FROM hdb_catalog.hdb_cron_event_invocation_logs WHERE created_at < NOW() - INTERVAL '%d days';", "DELETE FROM hdb_catalog.hdb_scheduled_event_invocation_logs WHERE created_at < NOW() - INTERVAL '%d days';", @@ -39,17 +39,17 @@ func enableHasuraEventCleaner() { Pairs: map[string]interface{}{"interval_in_days": cfg.HasuraEventCleaner.ClearOlderThan}, }) - pool, err := pgxpool.New(context.Background(), cfg.HasuraEventCleaner.EventMetadataDb) - if err != nil { - cfg.Logger.Error(&libpack_logger.LogMessage{ - Message: "Failed to create connection pool", - Pairs: map[string]interface{}{"error": err}, - }) - return - } - defer pool.Close() - go func() { + pool, err := pgxpool.New(context.Background(), cfg.HasuraEventCleaner.EventMetadataDb) + if err != nil { + cfg.Logger.Error(&libpack_logger.LogMessage{ + Message: "Failed to create connection pool", + Pairs: map[string]interface{}{"error": err.Error()}, + }) + return + } + defer pool.Close() + time.Sleep(initialDelay) cfg.Logger.Info(&libpack_logger.LogMessage{ @@ -76,7 +76,12 @@ func cleanEvents(pool *pgxpool.Pool) { if err != nil { cfg.Logger.Error(&libpack_logger.LogMessage{ Message: "Failed to execute query", - Pairs: map[string]interface{}{"query": query, "error": err}, + Pairs: map[string]interface{}{"query": query, "error": err.Error()}, + }) + } else { + cfg.Logger.Debug(&libpack_logger.LogMessage{ + Message: "Successfully executed query", + Pairs: map[string]interface{}{"query": query}, }) } }