Re: Timeline following for logical slots

From: Craig Ringer <craig(at)2ndquadrant(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Petr Jelinek <petr(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Timeline following for logical slots
Date: 2016-04-04 06:24:52
Message-ID: CAMsr+YE=uyyDH-tcOeLATEBWStAK1gXnPpdq9F+8fTkK6OWRLw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 1 April 2016 at 14:52, Andres Freund <andres(at)anarazel(dot)de> wrote:

> Hi,
>
> On 2016-04-01 08:46:01 +0200, Andres Freund wrote:
> > That's a fundamental misunderstanding on your part (perhaps created by
> > imprecise docs).
>
> > > Speaking of which, did you see the proposed README I sent for
> > > src/backend/replication/logical ?
> >
> > I skimmed it. But given we have a CF full of patches, some submitted
> > over a year ago, it seems unfair to spend time on a patch submitted a
> > few days ago.
>
> For that purpos
>
> WRT design readme, it might be interesting to look at 0009 in
>
> http://archives.postgresql.org/message-id/20140127162006.GA25670%40awork2.anarazel.de
>
> That's not up2date obviously, but it still might help.
>

Thanks, I've been reading it and the posts it references.

Most of it was familiar by this point, but would've been a good reference
earlier on. The snapshot builder docs in README.SNAPBUILD.txt are handy and
help glue a few separate pieces together better for me, and the
invalidations section was brief but informative.

The very last point looks interesting, but only really alludes to what's
going on:

+== Restartable Decoding ==
+
+As we want to generate a consistent stream of changes we need to have the
+ability to start from a previously decoded location without waiting
possibly
+very long to reach consistency. For that reason we dump the current
visibility
+information to disk whenever we read an xl_running_xacts record.

I don't feel like I've grasped this properly yet. I think it's referring to
the pg_logical/snapshots/ serialization, the use of which allows us to
avoid doing extra work in SnapBuildFindSnapshot(...), but doesn't seem to
be crucial for correct function. After all, decoding still restarts at the
restart_lsn and feeds relevant xact info into the snapshot builder,
accumulates invalidation information, etc.

After 9.6 I'd like to go through that, update it, and get it in as a README
for logical decoding. It would've done me a lot of good when getting up to
speed.

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2016-04-04 06:27:46 Re: pgsql: Avoid archiving XLOG_RUNNING_XACTS on idle server
Previous Message Andres Freund 2016-04-04 06:24:50 Re: pgsql: Avoid archiving XLOG_RUNNING_XACTS on idle server