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