Re: [Patch] pg_rewind: options to use restore_command from recovery.conf or command line

Alexey Kondratov <a.kondratov@postgrespro.ru>

From: Alexey Kondratov <a.kondratov@postgrespro.ru>
To: Michael Paquier <michael@paquier.xyz>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, Alexander Korotkov <a.korotkov@postgrespro.ru>, Kuntal Ghosh <kuntalghosh.2007@gmail.com>, Liudmila Mantrova <l.mantrova@postgrespro.ru>, Thomas Munro <thomas.munro@gmail.com>, Andrey Borodin <x4mmm@yandex-team.ru>, David Steele <david@pgmasters.net>, Andres Freund <andres@anarazel.de>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Dmitry Dolgov <9erthalion6@gmail.com>, vladimirlesk@yandex-team.ru, dsarafan@yandex-team.ru
Date: 2020-03-30T14:00:01Z
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 →
  1. Move frontend-side archive APIs from src/common/ to src/fe_utils/

  2. Add -c/--restore-target-wal to pg_rewind

  3. Move routine definitions of xlogarchive.c to a new header file

  4. Move routine building restore_command to src/common/

  5. Integrate recovery.conf into postgresql.conf

Attachments

On 2020-03-30 04:56, Michael Paquier wrote:
> On Fri, Mar 27, 2020 at 07:47:29AM +0900, Michael Paquier wrote:
>> On Thu, Mar 26, 2020 at 06:56:36PM -0300, Alvaro Herrera wrote:
>>> I don't think any such cleanup should hamper the patch at hand 
>>> anyway.
>> 
>> I don't think either, so I would do the split for the archive routines
>> at least.  It still feels strange to me to have a different routine
>> name for the frontend-side of RestoreArchivedFile().  That's not
>> really consistent with the current practice we have palloc() & co, as
>> well as the sync routines.
> 
> Okay.  Hearing nothing, I have rebased the patch set this morning,
> improving some comments and the code format while on it.  I would like
> to commit both 0001 (creation of xlogarchiver.h) and 0002 attached in
> the next couple of days.  If you have an objection, please feel free.
> 

0001:

What do think about adding following sanity check into xlogarchive.c?

+#ifdef FRONTEND
+#error "This file is not expected to be compiled for frontend code"
+#endif

It would prevent someone from adding typedefs and any other common 
definitions into xlogarchive.h in the future, leading to the accidental 
inclusion of both xlogarchive.h and fe_archive.h in the same time.

0002:

+ */
+int
+RestoreArchivedFile(const char *path, const char *xlogfname,
+							off_t expectedSize, const char *restoreCommand)
+{

There is a couple of extra tabs IMO.

+extern int	RestoreArchivedFile(const char *path,
+						const char *xlogfname,
+						off_t expectedSize,
+						const char *restoreCommand);

And the same here.

+ * This uses a logic based on "postgres -C" to get the value from
+ * from the cluster.

Repetitive 'from'.

  extractPageMap(const char *datadir, XLogRecPtr startpoint, int 
tliIndex,
-			   XLogRecPtr endpoint)
+			   XLogRecPtr endpoint, const char *restore_command)

Let us use camel case 'restoreCommand' here as in the header for 
tidiness.

I have left 0001 intact, but fixed all these small remarks in the 0002. 
Please, find it attached.


Regards
-- 
Alexey Kondratov

Postgres Professional https://www.postgrespro.com
Russian Postgres Company