pgsql: Rationalize parallel dump/restore's handling of worker cmd/statu - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Rationalize parallel dump/restore's handling of worker cmd/statu
Date
Msg-id E1bowbz-0002Rr-Gn@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Rationalize parallel dump/restore's handling of worker cmd/status messages.

The existing APIs for creating and parsing command and status messages are
rather messy; for example, archive-format modules have to provide code
for constructing command messages, which is entirely pointless since
the code to read them is hard-wired in WaitForCommands() and hence
no format-specific variation is actually possible.  But there's little
foreseeable reason to need format-specific variation anyway.

The situation for status messages is no better; at least those are both
constructed and parsed by format-specific code, but said code is quite
redundant since there's no actual need for format-specific variation.

To add insult to injury, the first API involves returning pointers to
static buffers, which is bad, while the second involves returning pointers
to malloc'd strings, which is safer but randomly inconsistent.

Hence, get rid of the MasterStartParallelItem and MasterEndParallelItem
APIs, and instead write centralized functions that construct and parse
command and status messages.  If we ever do need more flexibility, these
functions can be the standard implementations of format-specific
callback methods, but that's a long way off if it ever happens.

Tom Lane, reviewed by Kevin Grittner

Discussion: <17340.1464465717@sss.pgh.pa.us>

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/fb03d08a89e81a68585f17fd8e7f21c618f4e851

Modified Files
--------------
src/bin/pg_dump/parallel.c            | 232 +++++++++++++++++++++-------------
src/bin/pg_dump/pg_backup_archiver.h  |  11 +-
src/bin/pg_dump/pg_backup_custom.c    |  75 +----------
src/bin/pg_dump/pg_backup_directory.c | 115 ++---------------
src/bin/pg_dump/pg_backup_tar.c       |   3 -
5 files changed, 162 insertions(+), 274 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Redesign parallel dump/restore's wait-for-workers logic.
Next
From: Tom Lane
Date:
Subject: pgsql: Make struct ParallelSlot private within pg_dump/parallel.c.