I guess the distinction between master and secondary logic can be looked up here(isMaster)
https://github.com/pgjdbc/pgjdbc/blob/f78a639d1ed3c64e80e1fa107691b4af5945cb84/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java
and from within slaves iirc we did check the code and it is random shuffle and does not support any custom logic to
pickany slaves.
I might be wrong but I do remember looking it up in the source :)
Regards,
Vijay
________________________________________
From: Debraj Manna <subharaj.manna@gmail.com>
Sent: Sunday, June 17, 2018 11:31:32 AM
To: pgsql-admin
Subject: [External] JDBC Postgres Failover with quorum based synchronous replication
Hi
Let's say I am using quorum based synchronous
replication<https://wiki.postgresql.org/wiki/New_in_postgres_10#Quorum_Commit_for_Synchronous_Replication>either ANY or
FIRSTin synchronous_standby_names
I am trying to read from slave as discussed here<https://jdbc.postgresql.org/documentation/head/connect.html>.
jdbc:postgresql://node1,node2,node3/accounting?targetServerType=preferSlave&loadBalanceHosts=true
Can someone let me know
1. How does a slave is selected? Is a slave randomly selected or a slave is preferred which has zero lag or the
minimumlag?
2. Is there any setting in jdbc url which will only select the slave with zero replication and if no such slave
existsthen read will be sent to master ?
Thanks,