Thread

  1. Big disconnect_and_exit cleanup in pg_basebackup

    Boszormenyi Zoltan <zb@cybertec.at> — 2013-01-02T16:17:59Z

    Hi,
    
    the previously sent "factor out pg_malloc and friends" patch
    may call exit() in case of OOM during allocation and as a consequence,
    PQfinish() won't get called, leaving an "unexpected EOF from client"
    in the log.
    
    Let's close this annoyance in pg_basebackup. The attached patch does
    the following:
    
    - adds a PQfinish() (actually PQfinishSafe()) call that was just posted
       in another thread
    - replace all PQfinish() and PQclear() with their *Safe counterpart so
       a normal execution won't result in a crash because of calling PQfinish()
       on a stale pointer
    - kill the disconnect_and_exit() macro, replace it with plain exit(),
       the atexit callback does the disconnect anyway.
    
    Best regards,
    Zoltán Böszörményi
    
    -- 
    ----------------------------------
    Zoltán Böszörményi
    Cybertec Schönig & Schönig GmbH
    Gröhrmühlgasse 26
    A-2700 Wiener Neustadt, Austria
    Web: http://www.postgresql-support.de
          http://www.postgresql.at/
    
    
  2. Re: Big disconnect_and_exit cleanup in pg_basebackup

    Boszormenyi Zoltan <zb@cybertec.at> — 2013-01-02T16:44:12Z

    2013-01-02 17:17 keltezéssel, Boszormenyi Zoltan írta:
    > Hi,
    >
    > the previously sent "factor out pg_malloc and friends" patch
    > may call exit() in case of OOM during allocation and as a consequence,
    > PQfinish() won't get called, leaving an "unexpected EOF from client"
    > in the log.
    >
    > Let's close this annoyance in pg_basebackup. The attached patch does
    > the following:
    >
    > - adds a PQfinish() (actually PQfinishSafe()) call that was just posted
    >   in another thread
    > - replace all PQfinish() and PQclear() with their *Safe counterpart so
    >   a normal execution won't result in a crash because of calling PQfinish()
    >   on a stale pointer
    
    Forget about this point, the attached version sets "conn = NULL;"
    explicitly after PQfinish(conn).
    
    > - kill the disconnect_and_exit() macro, replace it with plain exit(),
    >   the atexit callback does the disconnect anyway.
    >
    > Best regards,
    > Zoltán Böszörményi
    >
    >
    >
    
    
    -- 
    ----------------------------------
    Zoltán Böszörményi
    Cybertec Schönig & Schönig GmbH
    Gröhrmühlgasse 26
    A-2700 Wiener Neustadt, Austria
    Web: http://www.postgresql-support.de
          http://www.postgresql.at/