From: | Aleksander Alekseev <aleksander(at)timescale(dot)com> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Cc: | Himanshu Upadhyaya <upadhyaya(dot)himanshu(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Peter Geoghegan <pg(at)bowt(dot)ie>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com> |
Subject: | Re: HOT chain validation in verify_heapam() |
Date: | 2022-09-06 12:29:22 |
Message-ID: | CAJ7c6TPZFHrwGvxNomEFM9w+j9oB1tY6HUpxOCDrJej2dK=WnA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Himanshu,
Many thanks for working on this!
> Please find attached the patch with the above idea of HOT chain's validation
Please correct me if I'm wrong, but don't we have a race condition here:
```
+ if ((TransactionIdDidAbort(pred_xmin) ||
TransactionIdIsInProgress(pred_xmin))
+ && !TransactionIdEquals(pred_xmin, curr_xmin))
{
```
The scenario that concerns me is the following:
1. TransactionIdDidAbort(pred_xmin) returns false
2. The transaction aborts
3. TransactionIdIsInProgress(pred_xmin) returns false
4. (false || false) gives us false. An error is reported, although
actually the condition should have been true.
--
Best regards,
Aleksander Alekseev
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Cramer | 2022-09-06 12:31:47 | Re: Proposal to provide the facility to set binary format output for specific OID's per session |
Previous Message | Robert Haas | 2022-09-06 12:26:55 | Re: predefined role(s) for VACUUM and ANALYZE |