Re: BUG #17116: Assert failed in SerialSetActiveSerXmin() on commit of parallelized serializable transaction

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2021-07-23T12:56:22Z
Lists: pgsql-bugs
On Thu, Jul 22, 2021 at 11:23 PM PG Bug reporting form
<noreply@postgresql.org> wrote:           '.
> Program terminated with signal SIGABRT, Aborted.
> #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
> 50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
> (gdb) bt
> #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
> #1  0x00007f21de1dd859 in __GI_abort () at abort.c:79
> #2  0x0000555e1740b1ac in ExceptionalCondition (
>     conditionName=conditionName@entry=0x555e17581ce8
> "!TransactionIdIsValid(serialControl->tailXid) || TransactionIdFollows(xid,
> serialControl->tailXid)", errorType=errorType@entry=0x555e17466028
> "FailedAssertion",
>     fileName=fileName@entry=0x555e17581789 "predicate.c",
> lineNumber=lineNumber@entry=1056) at assert.c:67

Thanks.  Repro'd here.  Not immediately sure what's happening here,
but I will look into it next week.



Commits

  1. Fix race in SERIALIZABLE READ ONLY.

  2. Fix assert failures in parallel SERIALIZABLE READ ONLY.

  3. Fix SxactGlobalXmin tracking.

  4. There's a small window wherein a transaction is committed but not yet