Re: [HACKERS] Logical decoding on standby - Mailing list pgsql-hackers
From | Craig Ringer |
---|---|
Subject | Re: [HACKERS] Logical decoding on standby |
Date | |
Msg-id | CAMsr+YFsgksrpGUjgjcvDFieMV4zBzBdx=bLa4MDz_Ctz_VQSw@mail.gmail.com Whole thread Raw |
In response to | Re: [HACKERS] Logical decoding on standby (Andres Freund <andres@anarazel.de>) |
List | pgsql-hackers |
On 23 March 2017 at 00:17, Andres Freund <andres@anarazel.de> wrote: > On 2017-03-22 15:59:42 +0000, Simon Riggs wrote: >> On 22 March 2017 at 13:06, Andres Freund <andres@anarazel.de> wrote: >> >> >> The parts I think are important for Pg10 are: >> > >> >> * Ability to create logical slots on replicas >> > >> > Doesn't this also imply recovery conflicts on DROP DATABASE? >> >> Not needed until the slot is in use, which is a later patch. > > Hm? We need to drop slots, if they can exist / be created, on a standby, > and they're on a dropped database. Otherwise we'll reserve resources, > while anyone connecting to the slot will likely just receive errors > because the database doesn't exist anymore. It's also one of the > patches that can quite easily be developed / reviewed, because there > really isn't anything complicated about it. Most of the code is already > in Craig's patch, it just needs some adjustments. Right, I'm not too concerned about doing that, and it's next on my TODO as I clean up the split patch series. >> >> * Ability to advance (via feedback or via SQL function) - no need to >> >> actually decode and call output plugins at al >> > >> > That pretty much requires decoding, otherwise you really don't know how >> > much WAL you have to retain. >> >> Knowing how much WAL to retain is key. >> >> Why would decoding tell you how much WAL to retain? > > Because decoding already has the necessary logic? (You need to retain > enough WAL to restart decoding for all in-progress transactions etc). Indeed; after all, standby status updates from the decoding client only contain the *flushed* LSN. The downstream doesn't know the restartpoint LSN, it must be tracked by the upstream. It's also necessary to maintain our catalog_xmin correctly on the standby so we can send it via hot_standby_feedback to a physical replication slot used on the master, ensuring the master doesn't remove catalog tuples we may still need. > I don't know what you're on about with that statement. I've spent a > good chunk of time looking at the 0003 patch, even though it's large > and contains a lot of different things. I suggested splitting things up. > I even suggested what to move earlier after Craig agreed with that > sentiment, in the mail you're replying to, because it seems > independently doable. I really appreciate the review, as I'm all too aware of how time consuming it can be. From my PoV, the difficulty I'm in is that this patch series has languished for most of the Pg 10 release cycle with no real input from stakeholders in the logical decoding area, so while the review is important, the fact that it's now means that it pretty comprehensively blocks the patch for Pg 10. I asked on list for input on structure (if/how to split it up) literally months ago, for example. I've been struggling to get some kind of support for logical decoding on standbys for most of two release cycles, and there are people climbing the walls wanting it. I'm trying to make sure it's done right, but I can't do that alone, and it's hard to progress when I don't know what will be expected until it's too late to do anything about it. I guess all we can do at this point is get the foundations in place and carry on for Pg 11, where the presence of in-core logical replication will offer a lever to actually push this in. In the mean time I'll have to continue carrying the out-of-tree failover slots patch for people who use logical decoding and want it to be reliable. -- Craig Ringer http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
pgsql-hackers by date: