[BUG] Crash of logical replica with trigger.
От | Anton A. Melnikov |
---|---|
Тема | [BUG] Crash of logical replica with trigger. |
Дата | |
Msg-id | adf0452f-8c6b-7def-d35e-ab516c80088e@inbox.ru обсуждение исходный текст |
Ответы |
Re: [BUG] Crash of logical replica with trigger.
|
Список | pgsql-bugs |
Hello! There is a crash during logical replication. Reproduction on current master: A) on master (wal_level = logical): create table rul_rule_set that will be replicated: CREATE TABLE public.rul_rule_set (id smallint NOT NULL, description text, stage_id integer, condition text, condition_compiled text); ALTER TABLE ONLY public.rul_rule_set ADD CONSTRAINT rul_rule_set_pkey PRIMARY KEY (id); CREATE PUBLICATION test_pub FOR TABLE rul_rule_set; B) on replica 1. Create tables doc_attribute and rul_rule_set for incoming changes: CREATE TABLE public.doc_attribute (id integer NOT NULL, attr_name text, attr_desc text, attr_type text, attr_order integer, is_system boolean, used_by_slice boolean); INSERT INTO doc_attribute VALUES ('1','name','Имя','text','1','t','t'); CREATE TABLE public.rul_rule_set (id smallint NOT NULL, description text, stage_id integer, condition text, condition_compiled text); ALTER TABLE ONLY public.doc_attribute ADD CONSTRAINT doc_attribute_pkey PRIMARY KEY (id); ALTER TABLE ONLY public.rul_rule_set ADD CONSTRAINT rul_rule_set_pkey PRIMARY KEY (id); 2.Create procedure and trigger that will be fired on lines inserting into the rul_rule_set table: Execute trigger.sql attached. 3. Create suscription: CREATE SUBSCRIPTION test_sub CONNECTION 'port=5116 user=postgres dbname=postgres' PUBLICATION test_pub; C) on master: insert row in table rul_rule_set: INSERT INTO rul_rule_set VALUES ('1', 'name','1','age','true'); The replica will crash with: TRAP: FailedAssertion("ActivePortal && ActivePortal->status == PORTAL_ACTIVE", File: "pg_proc.c", Line: 1038, PID: 310502) as ActivePortal is NULL because logical replication worker was forked before any active command. The backtrace is attached. I thought to pass the text of the request as a parameter, but most likely, it will be wrong. Please suggest the best way to solve this problem, would be very grateful. With best regards, -- Anton A. Melnikov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
Вложения
В списке pgsql-bugs по дате отправления: