agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feedFrom: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Antonin Houska <ah@cybertec.at>
Cc: Michael Paquier <michael@paquier.xyz>
Cc: Thomas Munro <thomas.munro@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>
Cc: pgsql-hackers@postgresql.org <pgsql-hackers@postgresql.org>
Subject: Re: Attempt to consolidate reading of XLOG page
Date: Mon, 25 Nov 2019 15:15:34 -0300
Message-ID: <20191125181534.GA19210@alvherre.pgsql> (raw)
In-Reply-To: <50470.1574672520@antos>
On 2019-Nov-25, Antonin Houska wrote:
> Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
> > I see no reason to leave ws_off. We can move that to XLogReaderState; I
> > did that here. We also need the offset in WALReadError, though, so I
> > added it there too. Conceptually it seems clearer to me this way.
> >
> > What do you think of the attached?
>
> It looks good to me. Attached is just a fix of a minor problem in error
> reporting that Michael pointed out earlier.
Excellent, I pushed it with this change included and some other cosmetic
changes.
Now there's only XLogPageRead() ...
> > BTW I'm not clear what errors can pread()/pg_pread() report that do not
> > set errno. I think lines 1083/1084 of WALRead are spurious now.
>
> All I can say is that the existing calls of pg_pread() do not clear errno, so
> you may be right.
Right ... in this interface, we only report an error if pg_pread()
returns negative, which is documented to always set errno.
> I'd appreciate more background about the "partial read" that
> Michael mentions here:
>
> https://www.postgresql.org/message-id/20191125033048.GG37821%40paquier.xyz
In the current implementation, if pg_pread() does a partial read, we
just loop one more time.
I considered changing the "if (readbytes <= 0)" with "if (readbytes <
segbytes)", but that seemed pointless.
However, writing this now makes me think that we should add a
CHECK_FOR_INTERRUPTS in this loop. (I also wonder if we shouldn't limit
the number of times we retry if pg_pread returns zero (i.e. no error,
but no bytes read either). I don't know if this is a real-world
consideration.)
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
view thread (62+ messages) latest in thread
Message-ID: <20191125181534.GA19210@alvherre.pgsql>
Permalink: ../20191125181534.GA19210@alvherre.pgsql/
Also on: postgresql.org/message-id/20191125181534.GA19210@alvherre.pgsql
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: alvherre@2ndquadrant.com, ah@cybertec.at, michael@paquier.xyz, thomas.munro@gmail.com, robertmhaas@gmail.com
Subject: Re: Attempt to consolidate reading of XLOG page
In-Reply-To: <20191125181534.GA19210@alvherre.pgsql>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox