From: | Michael Paquier <michael(at)paquier(dot)xyz> |
---|---|
To: | Dilip Kumar <dilipbalaut(at)gmail(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Reset snapshot export state on the transaction abort |
Date: | 2021-10-13 04:47:38 |
Message-ID: | YWZk6nmAzQZS4B/z@paquier.xyz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Oct 11, 2021 at 08:46:32PM +0530, Dilip Kumar wrote:
> As reported at [1], if the transaction is aborted during export
> snapshot then ExportInProgress and SavedResourceOwnerDuringExport are
> not getting reset and that is throwing an error
> "clearing exported snapshot in wrong transaction state" while
> executing the next command. The attached patch clears this state if
> the transaction is aborted.
Injecting an error is enough to reproduce the failure in a second
command after the first one failed. This could happen on OOM for the
palloc() done at the beginning of SnapBuildInitialSnapshot().
@@ -2698,6 +2698,9 @@ AbortTransaction(void)
/* Reset logical streaming state. */
ResetLogicalStreamingState();
+ /* Reset snapshot export state. */
+ ResetSnapBuildExportSnapshotState();
Shouldn't we care about the case of a sub-transaction abort as well?
See AbortSubTransaction().
--
Michael
From | Date | Subject | |
---|---|---|---|
Next Message | Stan Hu | 2021-10-13 04:53:22 | lastOverflowedXid does not handle transaction ID wraparound |
Previous Message | Michael Paquier | 2021-10-13 04:21:05 | Re: Bug in DefineRange() with multiranges |