diff --git a/Cargo.lock b/Cargo.lock index 5043fae8..b5081a9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -653,7 +653,7 @@ dependencies = [ [[package]] name = "auction-server" -version = "0.32.0" +version = "0.32.1" dependencies = [ "anchor-lang", "anchor-lang-idl", diff --git a/auction-server/.sqlx/query-da61b53df51ffad6f7ed8baa1dccd42901a70a3d1ff736d5cafc6aaa6edf3669.json b/auction-server/.sqlx/query-1a19c166fe39589f0e0ec63e0279f9d057ee24ffe6e4ff10552d4650dd2a4cbc.json similarity index 50% rename from auction-server/.sqlx/query-da61b53df51ffad6f7ed8baa1dccd42901a70a3d1ff736d5cafc6aaa6edf3669.json rename to auction-server/.sqlx/query-1a19c166fe39589f0e0ec63e0279f9d057ee24ffe6e4ff10552d4650dd2a4cbc.json index 5cffde84..2a100b42 100644 --- a/auction-server/.sqlx/query-da61b53df51ffad6f7ed8baa1dccd42901a70a3d1ff736d5cafc6aaa6edf3669.json +++ b/auction-server/.sqlx/query-1a19c166fe39589f0e0ec63e0279f9d057ee24ffe6e4ff10552d4650dd2a4cbc.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "WITH rows_to_delete AS (\n SELECT id FROM opportunity WHERE chain_id = $1 AND creation_time < $2 LIMIT $3\n ) DELETE FROM opportunity WHERE id IN (SELECT id FROM rows_to_delete)", + "query": "WITH rows_to_delete AS (\n SELECT id FROM opportunity WHERE chain_id = $1 AND creation_time < $2 AND removal_time IS NOT NULL LIMIT $3\n ) DELETE FROM opportunity WHERE id IN (SELECT id FROM rows_to_delete)", "describe": { "columns": [], "parameters": { @@ -12,5 +12,5 @@ }, "nullable": [] }, - "hash": "da61b53df51ffad6f7ed8baa1dccd42901a70a3d1ff736d5cafc6aaa6edf3669" + "hash": "1a19c166fe39589f0e0ec63e0279f9d057ee24ffe6e4ff10552d4650dd2a4cbc" } diff --git a/auction-server/Cargo.toml b/auction-server/Cargo.toml index 3ea5fbda..806d1743 100644 --- a/auction-server/Cargo.toml +++ b/auction-server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "auction-server" -version = "0.32.0" +version = "0.32.1" edition = "2021" license-file = "license.txt" diff --git a/auction-server/src/kernel/workers.rs b/auction-server/src/kernel/workers.rs index e06b7a32..f964d194 100644 --- a/auction-server/src/kernel/workers.rs +++ b/auction-server/src/kernel/workers.rs @@ -177,9 +177,12 @@ pub async fn delete_pg_db_opportunity_history( delete_threshold_secs: u64, ) -> anyhow::Result<()> { let threshold = OffsetDateTime::now_utc() - Duration::from_secs(delete_threshold_secs); + // TODO: we filter based on removal_time being not null because some Limo opportunities may be valid longer than the delete threshold. + // However, this makes it so that we don't delete opportunities that are not removed yet, including unremoved ones due to server restarts + // and bugs in the code. As this leads to a low memory leak, we should consider a better way to handle this in the future. let n_opportunities_deleted = sqlx::query!( "WITH rows_to_delete AS ( - SELECT id FROM opportunity WHERE chain_id = $1 AND creation_time < $2 LIMIT $3 + SELECT id FROM opportunity WHERE chain_id = $1 AND creation_time < $2 AND removal_time IS NOT NULL LIMIT $3 ) DELETE FROM opportunity WHERE id IN (SELECT id FROM rows_to_delete)", chain_id, PrimitiveDateTime::new(threshold.date(), threshold.time()),