Re: Logical Replication WIP
От | Petr Jelinek |
---|---|
Тема | Re: Logical Replication WIP |
Дата | |
Msg-id | 01e5420f-5ffa-1179-6933-e7e7abd9cc97@2ndquadrant.com обсуждение исходный текст |
Ответ на | Re: Logical Replication WIP (Andres Freund <andres@anarazel.de>) |
Список | pgsql-hackers |
On 04/11/16 13:07, Andres Freund wrote: > > Hm. I think I have to agree a bit with Peter here. Overloading > MyReplicationSlot this way seems ugly, and I think there's a bunch of > bugs around it too. > > > Sounds what we really want is a) two different lifetimes for ephemeral > slots, session and "command" b) have a number of slots that are released > either after a failed transaction / command or at session end. The > easiest way for that appears to have a list of slots to be checked at > end-of-xact and backend shutdown. > Ok so how about attached? It adds temp slots as new type of persistence. It does not really touch the behavior of any of the existing API or persistence settings. The temp slots are just cleaned up on backend exit or error, other than that they are not special. I don't use any specific backend local list to track them, instead they have active_pid always set and just cleanup everything that has that set at the end of the session. This has nice property that it forbids other backends for acquiring them. It does not do any locking while searching for the slots to cleanup (see ReplicationSlotCleanup), mainly because it complicates the interaction with ReplicationSlotDropPtr and it seems to me that locking there is not really needed there as other backends will never change active_pid to our backend pid and then the ReplicationSlotDropPtr does exclusive lock when resetting it. -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Вложения
В списке pgsql-hackers по дате отправления: