Skip to content

Commit 84ab351

Browse files
committed
postgres async delete
1 parent eddf72c commit 84ab351

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

internal/storage/postgres.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,13 @@ func (p *PostgresConnector) DeleteBlockFailures(failures []common.BlockFailure)
193193
args = append(args, failure.ChainId.String(), failure.BlockNumber.String())
194194
}
195195

196-
query := fmt.Sprintf(`DELETE FROM block_failures
197-
WHERE (chain_id, block_number) IN (%s)`, strings.Join(tuples, ","))
196+
query := fmt.Sprintf(`DELETE FROM block_failures
197+
WHERE ctid IN (
198+
SELECT ctid
199+
FROM block_failures
200+
WHERE (chain_id, block_number) IN (%s)
201+
FOR UPDATE SKIP LOCKED
202+
)`, strings.Join(tuples, ","))
198203

199204
_, err := p.db.Exec(query, args...)
200205
return err
@@ -342,8 +347,13 @@ func (p *PostgresConnector) DeleteStagingData(data []common.BlockData) error {
342347
args = append(args, blockData.Block.ChainId.String(), blockData.Block.Number.String())
343348
}
344349

345-
query := fmt.Sprintf(`DELETE FROM block_data
346-
WHERE (chain_id, block_number) IN (%s)`, strings.Join(tuples, ","))
350+
query := fmt.Sprintf(`DELETE FROM block_data
351+
WHERE ctid IN (
352+
SELECT ctid
353+
FROM block_failures
354+
WHERE (chain_id, block_number) IN (%s)
355+
FOR UPDATE SKIP LOCKED
356+
)`, strings.Join(tuples, ","))
347357

348358
_, err := p.db.Exec(query, args...)
349359
return err
@@ -422,7 +432,14 @@ func (p *PostgresConnector) GetLastStagedBlockNumber(chainId *big.Int, rangeStar
422432
}
423433

424434
func (p *PostgresConnector) DeleteOlderThan(chainId *big.Int, blockNumber *big.Int) error {
425-
query := `DELETE FROM block_data WHERE chain_id = $1 AND block_number <= $2`
435+
query := `DELETE FROM block_data
436+
WHERE ctid IN (
437+
SELECT ctid
438+
FROM block_data
439+
WHERE chain_id = $1
440+
AND block_number <= $2
441+
FOR UPDATE SKIP LOCKED
442+
)`
426443
_, err := p.db.Exec(query, chainId.String(), blockNumber.String())
427444
return err
428445
}

0 commit comments

Comments
 (0)