Re: An issue in JDBC replication API - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: An issue in JDBC replication API
Date
Msg-id CADK3HHLa4+MEicCZLX2S1F_i59SET+6xycyBXQ2oJUgApbsJJQ@mail.gmail.com
Whole thread Raw
In response to An issue in JDBC replication API  (Abbas Butt <abbas.butt@enterprisedb.com>)
Responses Re: An issue in JDBC replication API
List 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 by date:

Previous
From: Abbas Butt
Date:
Subject: An issue in JDBC replication API
Next
From: Dave Cramer
Date:
Subject: Re: An issue in JDBC replication API