Re: [COMMITTERS] pgsql: Keep track of transaction commit timestamps - Mailing list pgsql-hackers

From Alex Shulgin
Subject Re: [COMMITTERS] pgsql: Keep track of transaction commit timestamps
Date
Msg-id 87r3wf2wgz.fsf@commandprompt.com
Whole thread Raw
In response to Re: [COMMITTERS] pgsql: Keep track of transaction commit timestamps  (Alex Shulgin <ash@commandprompt.com>)
List pgsql-hackers
Alex Shulgin <ash@commandprompt.com> writes:
>
> Figured it out with a pg_usleep in bootstrap.c anyway.  Does this look sane?
>
>
> DEBUG:  inserting column 6 value "0"
> DEBUG:  inserted -> 0
> DEBUG:  inserting column 7 value "varchar_transform"
> TRAP: FailedAssertion("!(((xmax) >= ((TransactionId) 3)))", File:
"/home/ash/src/postgresql/src/backend/storage/ipc/procarray.c",Line: 1414)
 

I've tried to debug this and I feel really dumbfound...


DEBUG:  inserting column 7 value "varchar_transform"

Breakpoint 1, GetSnapshotData (snapshot=0xdb2d60 <CatalogSnapshotData>)   at
/home/ash/src/postgresql/src/backend/storage/ipc/procarray.c:1413
1413        xmax = ShmemVariableCache->latestCompletedXid;

(gdb) p ShmemVariableCache->latestCompletedXid 
$1 = 4294967295

(gdb) p *ShmemVariableCache
$2 = {nextOid = 10000, oidCount = 0, nextXid = 3, oldestXid = 3,  xidVacLimit = 200000003, xidWarnLimit = 2136483650,
xidStopLimit= 2146483650, xidWrapLimit = 2147483650, oldestXidDB = 1,  oldestCommitTs = 1, newestCommitTs = 0,
latestCompletedXid= 4294967295}
 

(gdb) p xmax
$3 = 0

(gdb) n
1414        Assert(TransactionIdIsNormal(xmax));

(gdb) p xmax
$4 = 1

(gdb) p *ShmemVariableCache
$5 = {nextOid = 10000, oidCount = 0, nextXid = 3, oldestXid = 3,  xidVacLimit = 200000003, xidWarnLimit = 2136483650,
xidStopLimit= 2146483650, xidWrapLimit = 2147483650, oldestXidDB = 1,  oldestCommitTs = 1, newestCommitTs = 0,
latestCompletedXid= 4294967295}
 

(gdb) p ShmemVariableCache->latestCompletedXid 
$6 = 4294967295

(gdb) 


How?  Is there an another concurrent process with the old view of
VariableCacheData struct where latestCompletedXid still points to
oldestCommitTs?

This only happens with the CommitTs commit in effect.

--
Alex



pgsql-hackers by date:

Previous
From: Alex Shulgin
Date:
Subject: Re: [COMMITTERS] pgsql: Keep track of transaction commit timestamps
Next
From: Alex Shulgin
Date:
Subject: Re: [COMMITTERS] pgsql: Keep track of transaction commit timestamps