Thread: [HACKERS] No parameter values checking while creating Altersubscription...Connection
[HACKERS] No parameter values checking while creating Altersubscription...Connection
From
tushar
Date:
Hi, We usually check connection parameter values while creating create subscription \\port is WRONG postgres=# create subscription c1 connection 'port=4000 ' publication pub; ERROR: could not connect to the publisher: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.4000"? postgres=# \\when database doesn't exist postgres=# create subscription c1 connection 'dbname=postgre ' publication pub; ERROR: could not connect to the publisher: FATAL: database "postgre" does not exist postgres=# but such checking is not done at the time of alter subscription .. connection postgres=# alter subscription c1 connection 'port=4000'; ALTER SUBSCRIPTION postgres=# alter subscription c1 connection 'dbname=cc'; ALTER SUBSCRIPTION -- regards,tushar EnterpriseDB https://www.enterprisedb.com/ The Enterprise PostgreSQL Company
Re: [HACKERS] No parameter values checking while creating Alter subscription...Connection
From
Masahiko Sawada
Date:
On Thu, May 25, 2017 at 9:43 AM, tushar <tushar.ahuja@enterprisedb.com> wrote: > Hi, > > We usually check connection parameter values while creating create > subscription > > \\port is WRONG > > postgres=# create subscription c1 connection 'port=4000 ' publication pub; > ERROR: could not connect to the publisher: could not connect to server: No > such file or directory > Is the server running locally and accepting > connections on Unix domain socket "/tmp/.s.PGSQL.4000"? > postgres=# > > \\when database doesn't exist > > postgres=# create subscription c1 connection 'dbname=postgre ' publication > pub; > ERROR: could not connect to the publisher: FATAL: database "postgre" does > not exist > postgres=# > > but such checking is not done at the time of alter subscription .. > connection > > postgres=# alter subscription c1 connection 'port=4000'; > ALTER SUBSCRIPTION > postgres=# alter subscription c1 connection 'dbname=cc'; > ALTER SUBSCRIPTION > CREATE SUBSCRIPTION tries to connect to publisher to create replication slot or to get table list for table synchronization, not to check the connection parameter value. So if you specify connect = false then CREATE SUBSCRIPTION doesn't try to connect. Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
Re: [HACKERS] No parameter values checking while creating Altersubscription...Connection
From
Peter Eisentraut
Date:
On 5/25/17 10:18, Masahiko Sawada wrote: >> postgres=# alter subscription c1 connection 'port=4000'; >> ALTER SUBSCRIPTION >> postgres=# alter subscription c1 connection 'dbname=cc'; >> ALTER SUBSCRIPTION >> > CREATE SUBSCRIPTION tries to connect to publisher to create > replication slot or to get table list for table synchronization, not > to check the connection parameter value. So if you specify connect = > false then CREATE SUBSCRIPTION doesn't try to connect. We don't make a connection attempt as part of ALTER SUBSCRIPTION. I guess we could just connect and disconnect to check that it works. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Re: [HACKERS] No parameter values checking while creating Altersubscription...Connection
From
Andres Freund
Date:
On 2017-05-25 17:08:57 -0400, Peter Eisentraut wrote: > On 5/25/17 10:18, Masahiko Sawada wrote: > >> postgres=# alter subscription c1 connection 'port=4000'; > >> ALTER SUBSCRIPTION > >> postgres=# alter subscription c1 connection 'dbname=cc'; > >> ALTER SUBSCRIPTION > >> > > CREATE SUBSCRIPTION tries to connect to publisher to create > > replication slot or to get table list for table synchronization, not > > to check the connection parameter value. So if you specify connect = > > false then CREATE SUBSCRIPTION doesn't try to connect. > > We don't make a connection attempt as part of ALTER SUBSCRIPTION. I > guess we could just connect and disconnect to check that it works. I think during reconfigurations it's quite useful to be able to do so even if the other hosts aren't reachable that second. - Andres
Re: [HACKERS] No parameter values checking while creating Altersubscription...Connection
From
Petr Jelinek
Date:
On 25/05/17 23:18, Andres Freund wrote: > On 2017-05-25 17:08:57 -0400, Peter Eisentraut wrote: >> On 5/25/17 10:18, Masahiko Sawada wrote: >>>> postgres=# alter subscription c1 connection 'port=4000'; >>>> ALTER SUBSCRIPTION >>>> postgres=# alter subscription c1 connection 'dbname=cc'; >>>> ALTER SUBSCRIPTION >>>> >>> CREATE SUBSCRIPTION tries to connect to publisher to create >>> replication slot or to get table list for table synchronization, not >>> to check the connection parameter value. So if you specify connect = >>> false then CREATE SUBSCRIPTION doesn't try to connect. >> >> We don't make a connection attempt as part of ALTER SUBSCRIPTION. I >> guess we could just connect and disconnect to check that it works. > > I think during reconfigurations it's quite useful to be able to do so > even if the other hosts aren't reachable that second. > Yes, it's intended behavior for this very reason, we want ability to (re)configure downstream without any existing upstream. It's also reason why we have the WITH (connect = false) in CREATE SUBSCRIPTION. I don't see a nice way how to do something similar (ie make it optional) for ALTER though. -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services