Обсуждение: After an error - pg_replication_slot is dropped

Поиск
Список
Период
Сортировка

After an error - pg_replication_slot is dropped

От
tushar
Дата:
Hi,

Please refer this straight forward scenario  against latest sources of v11.

[centos@centos-cpula bin]$ ./psql  postgres
psql (11devel)
Type "help" for help.

postgres=#  SELECT * FROM 
pg_create_logical_replication_slot('regression_slot1', 'test_decoding', 
true);
     slot_name     |    lsn
------------------+-----------
  regression_slot1 | 0/40001E8
(1 row)

postgres=#
postgres=# select * from pg_replication_slots;
     slot_name     |    plugin     | slot_type | datoid | database | 
temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | 
confirmed_flush_lsn

------------------+---------------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------
  regression_slot1 | test_decoding | logical   |  13220 | postgres | 
t         | t      |      28015 |      |          557 | 0/40001B0 | 
0/40001E8
(1 row)

--Try to again create  the same slot , getting an error - which is expected
postgres=#
postgres=#  SELECT * FROM 
pg_create_logical_replication_slot('regression_slot1', 'test_decoding', 
true);
ERROR:  replication slot "regression_slot1" already exists
postgres=#

--No slot found
postgres=# select * from pg_replication_slots;
  slot_name | plugin | slot_type | datoid | database | temporary | 
active | active_pid | xmin | catalog_xmin | restart_lsn | 
confirmed_flush_lsn

-----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------
(0 rows)

-- 
regards,tushar
EnterpriseDB  https://www.enterprisedb.com/
The Enterprise PostgreSQL Company



Re: After an error - pg_replication_slot is dropped

От
Petr Jelinek
Дата:
Hi,

On 16/02/18 10:51, tushar wrote:
> Hi,
> 
> Please refer this straight forward scenario  against latest sources of v11.
> 
> [centos@centos-cpula bin]$ ./psql  postgres
> psql (11devel)
> Type "help" for help.
> 
> postgres=#  SELECT * FROM
> pg_create_logical_replication_slot('regression_slot1', 'test_decoding',
> true);
>     slot_name     |    lsn
> ------------------+-----------
>  regression_slot1 | 0/40001E8
> (1 row)
> 
> postgres=#
> postgres=# select * from pg_replication_slots;
>     slot_name     |    plugin     | slot_type | datoid | database |
> temporary | active | active_pid | xmin | catalog_xmin | restart_lsn |
> confirmed_flush_lsn
>
------------------+---------------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------
> 
>  regression_slot1 | test_decoding | logical   |  13220 | postgres |
> t         | t      |      28015 |      |          557 | 0/40001B0 |
> 0/40001E8
> (1 row)
> 
> --Try to again create  the same slot , getting an error - which is expected
> postgres=#
> postgres=#  SELECT * FROM
> pg_create_logical_replication_slot('regression_slot1', 'test_decoding',
> true);
> ERROR:  replication slot "regression_slot1" already exists
> postgres=#
> 
> --No slot found
> postgres=# select * from pg_replication_slots;
>  slot_name | plugin | slot_type | datoid | database | temporary | active
> | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn
>
-----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------
> 
> (0 rows)
> 

It's because you are creating temporary slot. Temporary slots are
removed on error, that's a documented behavior.

-- 
  Petr Jelinek                  http://www.2ndQuadrant.com/
  PostgreSQL Development, 24x7 Support, Training & Services


Re: After an error - pg_replication_slot is dropped

От
tushar
Дата:
On 02/16/2018 04:02 PM, Petr Jelinek wrote:
> It's because you are creating temporary slot. Temporary slots are
> removed on error, that's a documented behavior.

Thanks for pointing out but It looks weird behavior - even a small mea 
culpa can remove the slot. Temporary table - doesn't go automatically 
after an error ?

-- 
regards,tushar
EnterpriseDB  https://www.enterprisedb.com/
The Enterprise PostgreSQL Company



Re: After an error - pg_replication_slot is dropped

От
Petr Jelinek
Дата:
On 16/02/18 12:38, tushar wrote:
> On 02/16/2018 04:02 PM, Petr Jelinek wrote:
>> It's because you are creating temporary slot. Temporary slots are
>> removed on error, that's a documented behavior.
> 
> Thanks for pointing out but It looks weird behavior - even a small mea
> culpa can remove the slot. Temporary table - doesn't go automatically
> after an error ?
> 

Temporary tables have transactional properties, slots don't (even the
non-temporary). For example if you create replication slot in
transaction and then abort it, the slot will survive. That's the price
we pay for ability to create slots on standby.

-- 
  Petr Jelinek                  http://www.2ndQuadrant.com/
  PostgreSQL Development, 24x7 Support, Training & Services