отключения backends операция переключения узлов switchover не удалась (подозревается, что связано с выполнением определенной хранимой процедуры)
Заголовок описания: Неудачная операция переключения узлов из-за невозможности отката backends (предположительно связано с выполнением определенной хранимой процедуры)
Тестовый тип: Функциональное тестирование
Тестовая версия: 7.0.0-RC2
Ресурсное пулинг: Включен
Операционная система и аппаратные данные (команда запроса: cat /etc/system-release
, uname -a
): ARM+openEuler
Тестовая среда (одиночная машина/1 главный x резервных x каскадных резервных): Один главный, два резервных
Тестируемая функция: Переключение (switchover)
Тестовый тип: Функциональное тестирование
Версия базы данных (команда запроса: gaussdb -V
):

Предварительные условия: Отсутствуют
Шаги выполнения (пожалуйста, заполните подробные шаги выполнения):
- Кластер не в начальном состоянии;
- На текущем главном узле создайте следующую хранимую процедуру и вызовите ее;
- Выполните команду
switchover -a
для восстановления кластера в начальное состояние;
create table test_tbl(id int);
insert into test_tbl values(1),(2);
DROP PROCEDURE IF EXISTS test_pro;
create procedure test_pro()
LANGUAGE 'plpgsql'
AS
DECLARE
v_id varchar(100);
v_msg varchar(100);
v_v int;
CURSOR c_id FOR (SELECT id from test_tbl);
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, not FOUND
BEGIN
raise notice 'error';
ROLLBACK;
END;
OPEN c_id;
id_loop:
LOOP
FETCH c_id INTO v_id;
raise NOTICE 'aaa %', v_id;
IF NOT FOUND THEN
raise notice 'not found';
LEAVE id_loop;
raise notice 'leave';
END IF;
raise NOTICE 'v_v %', v_v;
SET v_v = 1;
-- v_v := 1;
END LOOP;
CLOSE c_id;
END
/
;
call test_pro();
Ожидаемый результат: Успешное переключение (switchover)
Фактический результат: Переключение (switchover) не удалось, стек может застрять на call test_pro()
и не откатиться
Анализ причины:
- Корневая причина этой проблемы
- Процесс выявления проблемы
- Другие возможные причины подобного явления
- Есть ли временные меры для обхода проблемы
- Решение проблемы
- Предполагаемое время исправления проблемы
Логическая информация (пожалуйста, приложите файлы логов, скриншоты, coredump информацию):


Тестовый код: Не применимо