Re: Excessive number of replication slots for 12->14 logical replication
От | Ajin Cherian |
---|---|
Тема | Re: Excessive number of replication slots for 12->14 logical replication |
Дата | |
Msg-id | CAFPTHDYmA_bJwXm8GaNdwG49X3m4YNeUaA5fFhOf-2BdeSTTWg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Excessive number of replication slots for 12->14 logical replication (Peter Smith <smithpb2250@gmail.com>) |
Ответы |
Re: Excessive number of replication slots for 12->14 logical replication
Re: Excessive number of replication slots for 12->14 logical replication |
Список | pgsql-bugs |
On Mon, Aug 1, 2022 at 11:50 AM Peter Smith <smithpb2250@gmail.com> wrote: > > Here is my review comment for v4-0001. > > (Just a nitpick about comments) > > ====== > > 1. src/backend/replication/logical/tablesync.c - process_syncing_tables_for_sync > > There are really just 2 main things that are being done for the cleanup here: > - Drop the origin tracking > - Drop the tablesync slot > > So, IMO the code will have more clarity by having one bigger comment > for each of those drops, instead of commenting every step separately. > > e.g. > > BEFORE > /* > * Cleanup the tablesync origin tracking if exists. > */ > ReplicationOriginNameForTablesync(MyLogicalRepWorker->subid, > MyLogicalRepWorker->relid, > originname, > sizeof(originname)); > > /* > * Reset the origin session before dropping. > * > * This is required to reset the ownership of the slot > * and allow the origin to be dropped. > */ > replorigin_session_reset(); > > replorigin_session_origin = InvalidRepOriginId; > replorigin_session_origin_lsn = InvalidXLogRecPtr; > replorigin_session_origin_timestamp = 0; > > /* > * There is a chance that the user is concurrently performing > * refresh for the subscription where we remove the table > * state and its origin and by this time the origin might be > * already removed. So passing missing_ok = true. > */ > replorigin_drop_by_name(originname, true, false); > > /* Cleanup the tablesync slot. */ > ReplicationSlotNameForTablesync(MyLogicalRepWorker->subid, > MyLogicalRepWorker->relid, > syncslotname, > sizeof(syncslotname)); > > /* > * It is important to give an error if we are unable to drop the slot, > * otherwise, it won't be dropped till the corresponding subscription > * is dropped. So passing missing_ok = false. > */ > ReplicationSlotDropAtPubNode(LogRepWorkerWalRcvConn, syncslotname, false); > > > SUGGESTION > > /* > * Cleanup the tablesync origin tracking. > * > * Resetting the origin session removes the ownership of the slot. > * This is needed to allow the origin to be dropped. > * > * Also, there is a chance that the user is concurrently performing > * refresh for the subscription where we remove the table > * state and its origin and by this time the origin might be > * already removed. So passing missing_ok = true. > */ > ReplicationOriginNameForTablesync(MyLogicalRepWorker->subid, > MyLogicalRepWorker->relid, > originname, > sizeof(originname)); > replorigin_session_reset(); > replorigin_session_origin = InvalidRepOriginId; > replorigin_session_origin_lsn = InvalidXLogRecPtr; > replorigin_session_origin_timestamp = 0; > > replorigin_drop_by_name(originname, true, false); > > /* > * Cleanup the tablesync slot. > * > * It is important to give an error if we are unable to drop the slot, > * otherwise, it won't be dropped till the corresponding subscription > * is dropped. So passing missing_ok = false. > */ > ReplicationSlotNameForTablesync(MyLogicalRepWorker->subid, > MyLogicalRepWorker->relid, > syncslotname, > sizeof(syncslotname)); > ReplicationSlotDropAtPubNode(LogRepWorkerWalRcvConn, syncslotname, false); > Updated. regards, Ajin Cherian Fujitsu Australia
Вложения
В списке pgsql-bugs по дате отправления: