1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/opengauss-openGauss-server

 / Детали:

【Тип теста: функциональное тестирование】【Версия теста: 7.0.0-RC2】【Пул ресурсов】Из-за невозможности...

Предстоит сделать
Владелец
Создано  
30.06.2025

отключения backends операция переключения узлов switchover не удалась (подозревается, что связано с выполнением определенной хранимой процедуры)

Заголовок описания: Неудачная операция переключения узлов из-за невозможности отката backends (предположительно связано с выполнением определенной хранимой процедуры)

Тестовый тип: Функциональное тестирование

Тестовая версия: 7.0.0-RC2

Ресурсное пулинг: Включен

Операционная система и аппаратные данные (команда запроса: cat /etc/system-release, uname -a): ARM+openEuler

Тестовая среда (одиночная машина/1 главный x резервных x каскадных резервных): Один главный, два резервных

Тестируемая функция: Переключение (switchover)

Тестовый тип: Функциональное тестирование

Версия базы данных (команда запроса: gaussdb -V):

Описание изображения

Предварительные условия: Отсутствуют

Шаги выполнения (пожалуйста, заполните подробные шаги выполнения):

  1. Кластер не в начальном состоянии;
  2. На текущем главном узле создайте следующую хранимую процедуру и вызовите ее;
  3. Выполните команду 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() и не откатиться

Анализ причины:

  1. Корневая причина этой проблемы
  2. Процесс выявления проблемы
  3. Другие возможные причины подобного явления
  4. Есть ли временные меры для обхода проблемы
  5. Решение проблемы
  6. Предполагаемое время исправления проблемы

Логическая информация (пожалуйста, приложите файлы логов, скриншоты, coredump информацию):

Описание изображения

Описание изображения

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

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/opengauss-openGauss-server.git
git@api.gitlife.ru:oschina-mirror/opengauss-openGauss-server.git
oschina-mirror
opengauss-openGauss-server
opengauss-openGauss-server