[JDBC] JDBC: logical replication and LSN feedback
От | Yason TR |
---|---|
Тема | [JDBC] JDBC: logical replication and LSN feedback |
Дата | |
Msg-id | CANcxKGKg5eof4Zm1fj-8EhirX9ZT4gnZyNoVEXqp74wruJvg8A@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: [JDBC] JDBC: logical replication and LSN feedback
|
Список | pgsql-jdbc |
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(); So I would expect that the event is marked, possibly removed from the WAL and that it would not be resent to the consumer(s). Could anyone explain why this is happening? As a side-question, what is the difference between setAppliedLSN and setFlushedLSN and why/when do I need both/just one? The javadocs are not really helpful here. Thanks and best regards, Yason TR -- Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-jdbc
В списке pgsql-jdbc по дате отправления: