diff --git a/internal/database/database.go b/internal/database/database.go index 7d28be3..e3fad66 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -349,14 +349,15 @@ func (d *Database) UpdateLiveRoute( ) error { // Use SQLite's UPSERT capability to avoid the SELECT+UPDATE/INSERT pattern // This reduces the number of queries and improves performance + // Note: We removed the WHERE clause from ON CONFLICT UPDATE because + // if we're updating, we want to update regardless of withdrawn_at status err := d.exec(` INSERT INTO live_routes (id, prefix_id, origin_asn_id, peer_asn, next_hop, announced_at, withdrawn_at) VALUES (?, ?, ?, ?, ?, ?, NULL) ON CONFLICT(prefix_id, origin_asn_id, peer_asn) DO UPDATE SET next_hop = excluded.next_hop, announced_at = excluded.announced_at, - withdrawn_at = NULL - WHERE withdrawn_at IS NULL`, + withdrawn_at = NULL`, generateUUID().String(), prefixID.String(), originASNID.String(), peerASN, nextHop, timestamp) diff --git a/internal/database/slowquery.go b/internal/database/slowquery.go index 9c4af75..ab122e6 100644 --- a/internal/database/slowquery.go +++ b/internal/database/slowquery.go @@ -7,7 +7,7 @@ import ( "time" ) -const slowQueryThreshold = 50 * time.Millisecond +const slowQueryThreshold = 100 * time.Millisecond // logSlowQuery logs queries that take longer than slowQueryThreshold func logSlowQuery(logger *slog.Logger, query string, start time.Time) {