Re: Deficient error handling in pg_dump and pg_basebackup

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@lists.postgresql.org
Date: 2021-11-19T10:10:46Z
Lists: pgsql-hackers
On 09.11.21 21:20, Tom Lane wrote:
> Why is this different from the half-dozen
> other fsync-error cases in the same file?  Why, if fsync failure
> here is so catastrophic, is it okay to just return a normal failure
> code when tar_close doesn't even get to this point because of some
> earlier error?  At the very least it seems like it'd be preferable
> to do the exit(1) at the caller level.
> 
> The addition of the exit(1) seems to have been intentional in
> 1e2fddfa3, so cc'ing Peter for comment.

That commit addressed the behavior of fsync() failure in pg_receivewal 
and pg_recvlogical, which are long-running daemon processes, so this 
change was analogous to the server-side changes at the time.  I don't 
know what the behavior of fsync() failure in pg_basebackup should be, so 
calls that are only reachable from pg_basebackup are currently being 
handled differently.



Commits

  1. Clean up error handling in pg_basebackup's walmethods.c.

  2. Handle close() failures more robustly in pg_dump and pg_basebackup.

  3. Add support for LZ4 compression in pg_receivewal