Thread

Commits

  1. Fix failure to advance content pointer in sendFileWithContent.

  1. sendFileWithContent() does not advance the source pointer

    Antonin Houska <ah@cybertec.at> — 2022-12-08T19:44:05Z

    When checking something else in the base backup code, I've noticed that
    sendFileWithContent() does not advance the 'content' pointer. The sink buffer
    is large enough (32kB) so that the first iteration usually processes the whole
    file (only special files are processed by this function), and thus that the
    problem is hidden.
    
    However it's possible to hit the issue: if there are too many tablespaces,
    pg_basebackup generates corrupted tablespace_map. Instead of writing all the
    tablespace paths it writes only some and then starts to write the contents
    from the beginning again.
    
    The attached script generates scripts to create many tablespaces as well as
    the underlying directories. Fix is attached here as well.
    
    -- 
    Antonin Houska
    Web: https://www.cybertec-postgresql.com
    
    
  2. Re: sendFileWithContent() does not advance the source pointer

    Andres Freund <andres@anarazel.de> — 2022-12-08T21:53:18Z

    Hi,
    
    On 2022-12-08 20:44:05 +0100, Antonin Houska wrote:
    > When checking something else in the base backup code, I've noticed that
    > sendFileWithContent() does not advance the 'content' pointer.
    
    Oof. Luckily it looks like that is a relatively recent issue, introduced in
    bef47ff85df, which is only in 15.
    
    Greetings,
    
    Andres Freund
    
    
    
    
  3. Re: sendFileWithContent() does not advance the source pointer

    Robert Haas <robertmhaas@gmail.com> — 2022-12-12T15:40:38Z

    On Thu, Dec 8, 2022 at 2:43 PM Antonin Houska <ah@cybertec.at> wrote:
    > When checking something else in the base backup code, I've noticed that
    > sendFileWithContent() does not advance the 'content' pointer. The sink buffer
    > is large enough (32kB) so that the first iteration usually processes the whole
    > file (only special files are processed by this function), and thus that the
    > problem is hidden.
    >
    > However it's possible to hit the issue: if there are too many tablespaces,
    > pg_basebackup generates corrupted tablespace_map. Instead of writing all the
    > tablespace paths it writes only some and then starts to write the contents
    > from the beginning again.
    
    Thanks for the report, analysis, and fix. I have committed your patch
    and back-patched to v15.
    
    -- 
    Robert Haas
    EDB: http://www.enterprisedb.com