| From: | Dave Cramer <davecramer(at)postgres(dot)rocks> |
|---|---|
| To: | Abbas Butt <abbas(dot)butt(at)enterprisedb(dot)com> |
| Cc: | pgsql-jdbc(at)lists(dot)postgresql(dot)org, Zahid Iqbal <zahid(dot)iqbal(at)enterprisedb(dot)com> |
| Subject: | Re: An issue in JDBC replication API |
| Date: | 2020-06-19 23:37:25 |
| Message-ID: | CADK3HHLa4+MEicCZLX2S1F_i59SET+6xycyBXQ2oJUgApbsJJQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | 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(dot)butt(at)enterprisedb(dot)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
>
> https://jdbc.postgresql.org/documentation/head/replication.html#logical-replication
>
> 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
>
> Ph: 92.334.5100153
> Skype ID: gabbasb
> www.enterprisedb.co <http://www.enterprisedb.com/>m
> <http://www.enterprisedb.com/>
>
> *Follow us on Twitter*
> @EnterpriseDB
>
> Visit EnterpriseDB for tutorials, webinars, whitepapers
> <http://www.enterprisedb.com/resources-community> and more
> <http://www.enterprisedb.com/resources-community>
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Dave Cramer | 2020-06-20 14:37:38 | Re: An issue in JDBC replication API |
| Previous Message | Abbas Butt | 2020-06-19 20:39:47 | An issue in JDBC replication API |