Re: JDBC: logical replication and LSN feedback

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Yason TR <tryasontr(at)gmail(dot)com>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: JDBC: logical replication and LSN feedback
Date: 2017-09-21 15:28:20
Message-ID: CADK3HHLO3=J8Kq+i-cUC=x-YW=h87FmPBgfp-hA38Az4LkLj-Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On 21 September 2017 at 06:50, Yason TR <tryasontr(at)gmail(dot)com> wrote:

> Hi,
>
> This is a follow-up from my previous question
> (https://www.postgresql.org/message-id/trinity-903b9111-
> dde7-4901-8130-86924336c456-1505912478894%403c-app-mailcom-bs15).
>
> I created a git to guide my question, see
> https://github.com/yasontr/pg-jdbc-logical-decoding.
>
> Please follow the install steps on this page. After this, you can run
> the application with Maven. This application listens to a replication
> slot. See https://github.com/yasontr/pg-jdbc-logical-decoding/blob/
> master/src/main/java/yasontr/pg_jdbc_logical_decoding/Main.java
> for the code of the application.
>
> The problem I am seeing can be reproduced as following:
>
> 1) start the application
> 2) insert a dummy row to the test table: insert into test(key, value)
> values (1, 'test');
> 3) now you see in the console:
>
> event: {"change":[{"kind":"insert","schema":"public","table":"
> test","columnnames":["key","value"],"columntypes":["int4",
> "text"],"columnvalues":[1,"test"]}]}
> last received LSN: LSN{1A/AD2EEB0}
>
> 4) close the application
> 5) start the application again
> 6) now you see again the same event again in the console:
>
> event: {"change":[{"kind":"insert","schema":"public","table":"
> test","columnnames":["key","value"],"columntypes":["int4",
> "text"],"columnvalues":[1,"test"]}]}
> last received LSN: LSN{1A/AD2EEB0}
>
> As you can see in the code, I am confirming the event with its LSN:
>
> stream.setAppliedLSN(stream.getLastReceiveLSN());
> stream.setFlushedLSN(stream.getLastReceiveLSN());
> stream.forceUpdateStatus();
>

Pretty sure you only need one of them. I have to check again which one. One
if for binary replication and the other is for logical.

as for why you are getting the event twice. I don't know but am equally
interested in finding out why.

What version of postgres is this on ?

Dave Cramer

davec(at)postgresintl(dot)com
www.postgresintl.com

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2017-09-21 15:31:23 Re: Reading and writing off-heap data
Previous Message Yason TR 2017-09-21 13:50:44 JDBC: logical replication and LSN feedback