Re: [REVIEW] pg_last_xact_insert_timestamp
Fujii Masao <masao.fujii@gmail.com>
From: Fujii Masao <masao.fujii@gmail.com>
To: Andres Freund <andres@2ndquadrant.com>
Cc: Robert Haas <robertmhaas@gmail.com>,
Kyotaro HORIGUCHI <horiguchi.kyotaro@oss.ntt.co.jp>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2014-08-11T11:27:28Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Treat 2PC commit/abort the same as regular xacts in recovery.
- e74e0906fad5 9.5.0 cited
On Mon, Aug 11, 2014 at 4:46 PM, Andres Freund <andres@2ndquadrant.com> wrote: > Hi, > > On 2011-10-04 20:52:59 +0900, Fujii Masao wrote: >> *** a/src/backend/access/transam/xact.c >> --- b/src/backend/access/transam/xact.c >> *************** >> *** 1066,1071 **** RecordTransactionCommit(void) >> --- 1066,1074 ---- >> >> (void) XLogInsert(RM_XACT_ID, XLOG_XACT_COMMIT_COMPACT, rdata); >> } >> + >> + /* Save timestamp of latest transaction commit record */ >> + pgstat_report_xact_end_timestamp(xactStopTimestamp); >> } >> > > Perhaps that pgstat_report() should instead be combined with the > pgstat_report_xact_timestamp(0) in CommitTransaction()? Then the number > of changecount increases and cacheline references would stay the > same. The only thing that'd change would be a single additional > assignment. Sounds good suggestion. While reading the patch again, I found it didn't handle the COMMIT/ABORT PREPARED case properly. According to the commit e74e090, now pg_last_xact_replay_timestamp() returns the timestamp of COMMIT/ABORT PREPARED. pg_last_xact_insert_timestamp() is mainly expected to be used to calculate the replication delay, so it also needs to return that timestam. But the patch didn't change 2PC code at all. We need to add pgstat_report_xact_end_timestamp() into FinishPreparedTransaction(), RecordTransactionCommitPrepared() or RecordTransactionAbortPrepared(). Regards, -- Fujii Masao