Re: Libpq support to connect to standby server as priority
Haribabu Kommi <kommi.haribabu@gmail.com>
From: Haribabu Kommi <kommi.haribabu@gmail.com>
To: "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>
Cc: Laurenz Albe <laurenz.albe@cybertec.at>, Tom Lane <tgl@sss.pgh.pa.us>, Dave Cramer <pg@fastcrypt.com>, Robert Haas <robertmhaas@gmail.com>, Jing Wang <jingwangian@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-02-06T00:33:29Z
Lists: pgsql-hackers
On Mon, Jan 21, 2019 at 5:48 PM Tsunakawa, Takayuki < tsunakawa.takay@jp.fujitsu.com> wrote: > From: Haribabu Kommi [mailto:kommi.haribabu@gmail.com] > > Thanks for finding out the problem, how about the following way of > checking > > for prefer-read/prefer-standby. > > > > 1. (default_transaction_read_only = true and recovery = true) > > > > 2. If none of the host satisfies the above scenario, then recovery = true > > 3. Last check is for default_transaction_read_only = true > > That would be fine. But as I mentioned in another mail, I think "get > read-only session" and "connect to standby" differ. So I find it better to > separate parameters for those request; target_session_attr and > target_server_type. > Thanks for your opinion. target_session_attrs checks for the default_transaction_readonly or not? target_server_type checks for whether the server is in recovery or not? I feel having two options make this feature complex to use it from the user point of view? The need of two options came because of a possibility of a master server with default_transaction_readonly set to true. Even if the default transaction is readonly, it is user changeable parameter, so there shouldn't be any problem. The same can be applied for logical replication also, the user can change the default transaction mode once the connection is established, if it is not according to it's requirement. how about just adding one parameter that takes the options similar like JDBC? target_server_type - Master, standby and prefer-standby. (The option names can revised based on the common words on the postgresql docs?) And one more thing, what happens when the server promotes to master but the connection requested is standby? I feel we can maintain the existing connections and later new connections can be redirected? comments? Regards, Haribabu Kommi Fujitsu Australia
Commits
-
Make test_target_session_attrs more robust against connection failure.
- 3769e11a3183 14.0 landed
-
Extend the abilities of libpq's target_session_attrs parameter.
- ee28cacf619f 14.0 landed
-
Mark default_transaction_read_only as GUC_REPORT.
- d16f8c8e416d 14.0 landed
-
Introduce a new GUC_REPORT setting "in_hot_standby".
- bf8a662c9afa 14.0 landed
-
Avoid spamming the client with multiple ParameterStatus messages.
- 2432b1a04087 14.0 landed
-
Avoid harmless Valgrind no-buffer-pin errors.
- a766d6ca22ac 14.0 cited
-
Restructure libpq code to remove some duplicity
- b438e7e7a1c5 13.0 landed
-
libpq: Add target_session_attrs parameter.
- 721f7bd3cbcc 10.0 cited