Re: WIP: Failover Slots - Mailing list pgsql-hackers

From Simon Riggs
Subject Re: WIP: Failover Slots
Date
Msg-id CANP8+jJ+YFHO3Ow3HOhH8SAumGDhaRtt=bDtAvchcbdWySv+rw@mail.gmail.com
Whole thread Raw
In response to Re: WIP: Failover Slots  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
On 6 April 2016 at 15:17, Andres Freund <andres@anarazel.de> wrote:
On 2016-04-06 14:30:21 +0100, Simon Riggs wrote:
> On 6 April 2016 at 14:15, Craig Ringer <craig@2ndquadrant.com> wrote:
>  ...
>
> Nice summary
>
> Failover slots are optional. And they work on master.
>
> While the other approach could also work, it will work later and still
> require a slot on the master.
>
>
> => I don't see why having Failover Slots in 9.6 would prevent us from
> having something else later, if someone else writes it.
>
>
> We don't need to add this to core. Each plugin can independently write is
> own failover code. Works, but doesn't seem like the right approach for open
> source.
>
>
> => I think we should add Failover Slots to 9.6.

Simon, please don't take this personal; because of the other ongoing
thread.

Thanks for the review. Rational technical comments are exactly why we are here and they are always welcome.
 
For one I think this is architecturally the wrong choice. 
But even leaving that fact aside, and
considering this a temporary solution (we can't easily remove),

As I observed above, the alternate solution doesn't sound particularly good either but the main point is that we wouldn't need to remove it, it can coexist happily. I would add that I did think of the alternate solution previously as well, this one seemed simpler, which is always key for me in code aimed at robustness.
 
there appears to have been very little code level review

That is potentially fixable. At this point I don't claim it is committable, I only say it is important and the alternate solution is not significantly better, therefore if the patch can be beaten into shape we should commit it.

I will spend some time on this and see if we have something viable. Which will be posted here for discussion, as would have happened even before our other discussions.
 
Thanks for the points below

(one early from Petr
in [1], two by Oleksii mostly focusing on error messages [2] [3]). The
whole patch was submitted late to the 9.6 cycle.

Quickly skimming 0001 in [4] there appear to be a number of issues:
* LWLockHeldByMe() is only for debugging, not functional differences
* ReplicationSlotPersistentData is now in an xlog related header
* The code and behaviour around name conflicts of slots seems pretty
  raw, and not discussed
* Taking spinlocks dependant on InRecovery() seems like a seriously bad
  idea
* I doubt that the archive based switches around StartupReplicationSlots
  do what they intend. Afaics that'll not work correctly for basebackups
  taken with -X, without recovery.conf

That's from a ~5 minute skim, of one patch in the series.


[1] http://archives.postgresql.org/message-id/CALLjQTSCHvcsF6y7%3DZhmdMjJUMGLqt1-6Pz2rtb7PfFLxFfBOw%40mail.gmail.com
[2] http://archives.postgresql.org/message-id/FA68178E-F0D1-47F6-9791-8A3E2136C119%40hintbits.com
[3] http://archives.postgresql.org/message-id/9B503EB5-676A-4258-9F78-27FC583713FE%40hintbits.com
[4] http://archives.postgresql.org/message-id/CAMsr+YE6LNy2e0tBuAQB+NTVb6W-dHJAfLq0-zbAL7G7hjhXBA@mail.gmail.com

--
Simon Riggs                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Truncating/vacuuming relations on full tablespaces
Next
From: Teodor Sigaev
Date:
Subject: Re: [PATH] Jsonb, insert a new value into an array at arbitrary position