Thanks Amit for the response. Two things : 1) In our observation via PSQL the advance command as well do not move the restart_lsn immediately. It is similar to our approach that use the confirmed_flush_lsn via stream 2) I am ok to understand the point that we are not reading from the stream so we might be facing the issue. But the question is why we are able to move the restart_lsn most of the time by updating the confirmed_flush_lsn via pgJDBC. But only occasionally it lags behind too far behind.
Regards Shailesh On Tue, Dec 15, 2020 at 6:30 PM Amit Kapila <amit.kapil...@gmail.com> wrote: > On Tue, Dec 15, 2020 at 11:00 AM Jammie <shailesh.jaml...@gmail.com> > wrote: > > > > Thanks Amit for the response > > > > We are using pgJDBC sample program here > > https://jdbc.postgresql.org/documentation/head/replication.html > > > > the setFlushLSN is coming from the pgJDBC only. > > > > git hub for APIs of pgJDBC methods available. > > > > https://github.com/pgjdbc/pgjdbc > > > > The second slot refers to "private" slot. > > > > So ""we are not doing reading from the stream' ==> It means that we are > having readPending call only from the shared slot then we get the > lastReceivedLSN() from stream and > > send it back to stream as confirmed_flush_lsn for both private and > shared slot. We dont do readPending call to private slot. we will use > private slot only when we dont have choice. It is kind of reserver slot for > us. > > > > I think this (not performing read/decode on the private slot) could be > the reason why it lagging behind. If you want to use as a reserve slot > then you probably want to at least perform > pg_replication_slot_advance() to move it to the required position. The > restart_lsn won't move unless you read/decode from that slot. > > -- > With Regards, > Amit Kapila. >