Re: [HACKERS] Create subscription with `create_slot=false` andincorrect slot name
От | Masahiko Sawada |
---|---|
Тема | Re: [HACKERS] Create subscription with `create_slot=false` andincorrect slot name |
Дата | |
Msg-id | CAD21AoCPV8vFSNQCtFPdVFqTMKC6WX9u28i1gu-tUX032_WC-g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] Create subscription with `create_slot=false` andincorrect slot name (Robert Haas <robertmhaas@gmail.com>) |
Список | pgsql-hackers |
On Wed, May 24, 2017 at 9:41 PM, Robert Haas <robertmhaas@gmail.com> wrote: > On Wed, May 24, 2017 at 7:31 PM, Peter Eisentraut > <peter.eisentraut@2ndquadrant.com> wrote: >> On 5/23/17 02:33, Kuntal Ghosh wrote: >>>> The command succeed even if slot_name is invalid. That's because slot_name >>>> isn't validated. ReplicationSlotValidateName() should be called in >>>> parse_subscription_options() to avoid a pilot error. IMHO we should prevent >>>> a future error (use of invalid slot name). >>>> >>> +1. Since, slot_name can be provided even when create_slot is set >>> false, it should be validated as well while creating the subscription. >> >> This came up in a previous thread. It is up to the publishing end what >> slot names it accepts. So running the validation locally is incorrect. > > That argument seems pretty tenuous; surely both ends are PostgreSQL, > and the rules for valid slot names aren't likely to change very often. > > But even if we accept it as true, I still don't like the idea that a > DROP can just fail, especially with no real guidance as to how to fix > things so it doesn't fail. Ideas: > > 1. If we didn't create the slot (and have never connected to it?), > don't try to drop it. > > 2. Emit some kind of a HINT telling people about ALTER SUBSCRIPTION .. > SET (slot_name = NONE). > > 3. ??? > +1 to #2 idea. We already emit such errhint when connection to the publisher failed. I think we can do the same thing in this case. subscriptioncmds.c:L928 wrconn = walrcv_connect(conninfo, true, subname, &err); if (wrconn == NULL) ereport(ERROR, (errmsg("couldnot connect to publisher when attempting to " "drop the replication slot \"%s\"",slotname), errdetail("The error was: %s", err), errhint("Use ALTER SUBSCRIPTION ...SET (slot_name = NONE) " "to disassociate the subscription from the slot."))); Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
В списке pgsql-hackers по дате отправления: