@@ -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
424434func (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