| From: | Robert Haas <robertmhaas(at)gmail(dot)com> | 
|---|---|
| To: | Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com> | 
| Cc: | Pavan Deolasee <pavan(dot)deolasee(at)gmail(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: Changing WAL Header to reduce contention during ReserveXLogInsertLocation() | 
| Date: | 2018-03-27 12:00:31 | 
| Message-ID: | CA+TgmoYebhkd6LZemzr9JtmH_Atd=fK9GQxnUgada3u+iOMg9g@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On Tue, Mar 27, 2018 at 6:35 AM, Andrew Dunstan
<andrew(dot)dunstan(at)2ndquadrant(dot)com> wrote:
> Leaving aside the arguments about process, the patch is pretty small
> and fairly straightforward. Given the claimed performance gains that's
> a nice bang for the buck.
>
> I haven't seen any obvious holes, but this is surely a case for as
> many eyeballs as possible.
Taking a look at this version, I think the key thing we have to decide
is whether we're comfortable with this:
--- a/src/include/access/xlogrecord.h
+++ b/src/include/access/xlogrecord.h
@@ -42,7 +42,7 @@ typedef struct XLogRecord
 {
     uint32      xl_tot_len;     /* total len of entire record */
     TransactionId xl_xid;       /* xact id */
-    XLogRecPtr  xl_prev;        /* ptr to previous record in log */
+    XLogRecPtr  xl_curr;        /* ptr to this record in log */
     uint8       xl_info;        /* flag bits, see below */
     RmgrId      xl_rmid;        /* resource manager for this record */
     /* 2 bytes of padding here, initialize to zero */
I don't see any comments in the patch explaining why this substitution
is just as safe as what we had before, and I think it has only very
briefly been commented upon by Pavan, who remarked that it provided
similar protection to what we have today.  That's fair enough, but I
think a little more analysis of this point would be good.  Can we
think of any possible downsides to making this change?  I think there
are basically two issues:
1. Does it materially increase the chance of a bogus checksum match in
any plausible situation?
2. Does the new logic in pg_rewind to search backward for a checkpoint
work reliably, and will it be slow?
I don't know of a problem in either regard, but I wonder if anyone
else can think of anything.
-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Kyotaro HORIGUCHI | 2018-03-27 12:01:20 | Re: Problem while setting the fpw with SIGHUP | 
| Previous Message | Masahiko Sawada | 2018-03-27 11:58:11 | pg_class.reltuples of brin indexes |