Re: pg_receivexlog --status-interval add fsync feedback

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
Cc: furuyao(at)pm(dot)nttdata(dot)co(dot)jp, Robert Haas <robertmhaas(at)gmail(dot)com>, Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Sawada Masahiko <sawada(dot)mshk(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, teranishih(at)nttdata(dot)co(dot)jp
Subject: Re: pg_receivexlog --status-interval add fsync feedback
Date: 2014-11-12 19:05:45
Message-ID: 20141112190545.GZ1791@alvin.alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Fujii Masao wrote:

> --- 127,152 ----
> When this option is used, <application>pg_receivexlog</> will report
> a flush position to the server, indicating when each segment has been
> synchronized to disk so that the server can remove that segment if it
> ! is not otherwise needed. <literal>--synchronous</literal> option must
> ! be specified when making <application>pg_receivexlog</> run as
> ! synchronous standby by using replication slot. Otherwise WAL data
> ! cannot be flushed frequently enough for this to work correctly.
> </para>
> </listitem>
> </varlistentry>

Whitespace damage here.

> + printf(_(" --synchronous flush transaction log in real time\n"));

"in real time" sounds odd. How about "flush transaction log
immediately after writing", or maybe "have transaction log writes be
synchronous".

> --- 781,791 ----
> now = feGetCurrentTimestamp();
>
> /*
> ! * Issue sync command as soon as there are WAL data which
> ! * has not been flushed yet if synchronous option is true.
> */
> if (lastFlushPosition < blockpos &&
> ! walfile != -1 && synchronous)

I'd put the "synchronous" condition first in the if(), and start the
comment with it rather than putting it at the end. Both seem weird.

> --- 793,807 ----
> progname, current_walfile_name, strerror(errno));
> goto error;
> }
> lastFlushPosition = blockpos;
> !
> ! /*
> ! * Send feedback so that the server sees the latest WAL locations
> ! * immediately if synchronous option is true.
> ! */
> ! if (!sendFeedback(conn, blockpos, now, false))
> ! goto error;
> ! last_status = now;

I'm not clear about this comment .. why does it say "if synchronous
option is true" when it's not checking the condition?

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2014-11-12 19:16:40 Re: group locking: incomplete patch, just for discussion
Previous Message Robert Haas 2014-11-12 18:06:26 Re: recovery_target_time and standby_mode