On Thu, Mar 28, 2019 at 1:30 AM Thomas Munro <thomas.mu...@gmail.com> wrote:

> On Thu, Mar 28, 2019 at 1:48 AM Heikki Linnakangas <hlinn...@iki.fi>
> wrote:
> > Once we have the FullTransactionId type and basic macros in place, I'm
> > sure we could tidy up a bunch of code by using them.


Thanks for the reviews!  Pushed.
>

I think that this might be broken.

We have this change:

@@ -73,7 +75,8 @@ GetNewTransactionId(bool isSubXact)

    LWLockAcquire(XidGenLock, LW_EXCLUSIVE);

-   xid = XidFromFullTransactionId(ShmemVariableCache->nextFullXid);
+   full_xid = ShmemVariableCache->nextFullXid;
+   xid = XidFromFullTransactionId(full_xid);

But then later on in an little-used code path around line 164:

        /* Re-acquire lock and start over */
        LWLockAcquire(XidGenLock, LW_EXCLUSIVE);
        xid = XidFromFullTransactionId(ShmemVariableCache->nextFullXid);

full_xid does not get updated, but then later on full_xid gets returned in
lieu of xid.

Is there a reason that this is OK?

Cheers,

Jeff

Reply via email to