Re: Minimal logical decoding on standbys
От | Amit Khandekar |
---|---|
Тема | Re: Minimal logical decoding on standbys |
Дата | |
Msg-id | CAJ3gD9dg0eQs5o1cJ_MSVVAy5EoiVsnez8nrZM0hWf6hYGHBww@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Minimal logical decoding on standbys (Amit Khandekar <amitdkhan.pg@gmail.com>) |
Ответы |
Re: Minimal logical decoding on standbys
Re: Minimal logical decoding on standbys |
Список | pgsql-hackers |
On Fri, 31 May 2019 at 11:08, Amit Khandekar <amitdkhan.pg@gmail.com> wrote: > > On Thu, 30 May 2019 at 20:13, Andres Freund <andres@anarazel.de> wrote: > > > > Hi, > > > > On 2019-05-30 19:46:26 +0530, Amit Khandekar wrote: > > > @@ -1042,7 +1042,8 @@ ReplicationSlotReserveWal(void) > > > if (!RecoveryInProgress() && SlotIsLogical(slot)) > > > { > > > .... > > > } > > > else > > > { > > > - restart_lsn = GetRedoRecPtr(); > > > + restart_lsn = SlotIsLogical(slot) ? > > > + GetXLogReplayRecPtr(&ThisTimeLineID) : GetRedoRecPtr(); > > > > > > But then when I do pg_create_logical_replication_slot(), it hangs in > > > DecodingContextFindStartpoint(), waiting to find new records > > > (XLogReadRecord). > > > > But just till the primary has logged the necessary WAL records? If you > > just do CHECKPOINT; or such on the primary, it should succeed quickly? > > Yes, it waits until there is a commit record, or (just tried) until a > checkpoint command. Is XLOG_RUNNING_XACTS record essential for the logical decoding to build a consistent snapshot ? Since the restart_lsn is now ReplayRecPtr, there is no XLOG_RUNNING_XACTS record, and so the snapshot state is not yet SNAPBUILD_CONSISTENT. And so DecodingContextFindStartpoint()=>DecodingContextReady() never returns true, and hence DecodingContextFindStartpoint() goes in an infinite loop, until it gets XLOG_RUNNING_XACTS. -- Thanks, -Amit Khandekar EnterpriseDB Corporation The Postgres Database Company
В списке pgsql-hackers по дате отправления: