Re: An issue in JDBC replication API

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: An issue in JDBC replication API
Дата
Msg-id CADK3HHLa4+MEicCZLX2S1F_i59SET+6xycyBXQ2oJUgApbsJJQ@mail.gmail.com
обсуждение исходный текст
Ответ на An issue in JDBC replication API  (Abbas Butt <abbas.butt@enterprisedb.com>)
Ответы Re: An issue in JDBC replication API  (Dave Cramer <davecramer@postgres.rocks>)
Список pgsql-jdbc
Hi Abbas,

Thanks for this I seem to recall something about this.

Dave Cramer
www.postgres.rocks


On Fri, 19 Jun 2020 at 16:40, Abbas Butt <abbas.butt@enterprisedb.com> wrote:
Hi,
I have found that the JDBC replication API does not handle the keep alive messages sent by the server correctly.
A replication client cannot ignore even a single keep alive message from the server and it must respond to it.
If it does not the server will stop WAL sender with the following error:
LOG:  terminating walsender process due to replication timeout
LOG:  disconnection: session time: 0:02:00.173 user=replicant database=edb host=127.0.0.1 port=57900

and this is exactly what is happening when I use JDBC replication API.
The JDBC driver is ignoring the server's keep alive messages and hence the server stops the WAL sender and drops the connection.

Attached please find a sample program that I have mostly copied from the documentation available here

When we run this program and do not do any activity on the database server (I have tested with server version 12 and JDBC 42.2.14), after some time (wal_sender_timeout/2 seconds to be precise)  the server stops the WAL sender process and drops the connection.
To use the program follow these steps:

Issue the following commands to the database server:
./createuser --superuser --replication -h 127.0.0.1 -p 7777 -U postgres replicant
select pg_drop_replication_slot('radium');
CREATE TABLE numbers(a int PRIMARY KEY, b varchar(255));
GRANT SELECT on numbers to replicant;
INSERT INTO numbers VALUES(10, 'ten'),(20,'twenty'),(30,'thirty');
CREATE PUBLICATION barium for TABLE numbers;

To run the program use the following commands:
mvn clean
mvn package
java -cp target/Lithium-1.0-SNAPSHOT.jar:/home/abbas/tmp/postgresql-42.2.14.jar com.edb.App

If my analysis is correct, can we please have this issue fixed in the driver?

Best Regards

--
--
Abbas
Architect
Skype ID: gabbasb
www.enterprisedb.com

Follow us on Twitter

@EnterpriseDB

Visit EnterpriseDB for tutorials, webinars, whitepapers and more

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Abbas Butt
Дата:
Сообщение: An issue in JDBC replication API
Следующее
От: Dave Cramer
Дата:
Сообщение: Re: An issue in JDBC replication API