From: | Mihail Nikalayeu <mihailnikalayeu(at)gmail(dot)com> |
---|---|
To: | Josh Curtis <jcurtis825(at)gmail(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Fix race condition in SSI when reading PredXact->SxactGlobalXmin |
Date: | 2025-10-21 00:55:00 |
Message-ID: | CADzfLwUFSdC38uES+dfOTUL=YSHxYnm66upLNUd7Zj29fvS9Lw@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello!
Josh Curtis <jcurtis825(at)gmail(dot)com>:
> This is definitely a bit more complex. It requires that SetNewSxactGlobalXmin is never called when SxactGlobalXmin is invalid to prevent readers from seeing an invalid transaction ID when they should see a valid one -- I think this is the case now since before SetNewSxactGlobalXmin is called postgres checks that PredXact->SxactGlobalXminCount > 0. I assume this entails that SxactGlobalXmin is valid, but I have not checked every place the two variables are modified.
Such logic feels fragile to me. Maybe add a special flag like
'PredXact->SxactGlobalSkipAllowed' which will be updated to 'true' by
SetNewSxactGlobalXmin, and dropped to 'false' by functions affecting
PredXact->activeList?
But I prefer the first solution anyway.
Best regards,
Mikhail.
From | Date | Subject | |
---|---|---|---|
Next Message | Fujii Masao | 2025-10-21 00:58:12 | Re: Suggestion to add --continue-client-on-abort option to pgbench |
Previous Message | Sami Imseih | 2025-10-21 00:54:09 | Re: Skip unregistered custom kinds on stats load |