Skip to content

Commit

Permalink
fix: 662
Browse files Browse the repository at this point in the history
Теперь мы удаляем соединения не по процессу, а скопом.
Убрал фильтр соединений по application(он все равно не работал)
  • Loading branch information
Segate-ekb committed Dec 12, 2024
1 parent f447639 commit b02ac12
Showing 1 changed file with 18 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@
// соединения будет отключать всегда, так как могут быть зависшие
Лог.Информация("Пауза перед отключением соединений");
Приостановить(Пауза_ДесятьСек);
ОтключитьСоединенияСРабочимиПроцессами();
ОтключитьСоединения();

Сеансы = ПолучитьСписокСеансов();
Если Сеансы.Количество() = 0 Тогда
Expand Down Expand Up @@ -510,99 +510,53 @@

КонецПроцедуры

Процедура ОтключитьСоединенияСРабочимиПроцессами()
Процедура ОтключитьСоединения()

Процессы = ПолучитьСписокРабочихПроцессов();

Для Каждого РабочийПроцесс Из Процессы Цикл
Если РабочийПроцесс["running"] = "yes" Тогда

СписокСоединений = ПолучитьСоединенияРабочегоПроцесса(РабочийПроцесс);
СписокСоединений = ПолучитьСоединения();
Для Каждого Соединение Из СписокСоединений Цикл

// Попытка
РазорватьСоединениеСПроцессом(РабочийПроцесс, Соединение);
// Исключение
// Лог.Ошибка(ОписаниеОшибки());
// КонецПопытки;

РазорватьСоединение(Соединение);
КонецЦикла;

КонецЕсли;
КонецЦикла;

КонецПроцедуры

Функция ПолучитьСписокРабочихПроцессов()

ОписаниеКластера = МенеджерRac.ОписаниеКластера();
КомандаЗапускаПроцессы = МенеджерRac.СтрокаЗапускаКлиента() + СтрШаблон("process list --cluster=""%1""%2",
МенеджерRac.ИдентификаторКластера(ОписаниеКластера),
МенеджерRac.КлючиАвторизацииВКластере()) + " " + Настройки.АдресСервераАдминистрирования;

Лог.Информация("Получаю список рабочих процессов...");
СписокПроцессов = ЗапуститьПроцесс(КомандаЗапускаПроцессы);

Результат = МенеджерRAC.РазобратьПоток(СписокПроцессов);

Возврат Результат;

КонецФункции

Функция ПолучитьСоединенияРабочегоПроцесса(Знач РабочийПроцесс)
Функция ПолучитьСоединения()

ОписаниеКластера = МенеджерRac.ОписаниеКластера();
КомандаЗапускаСоединения = МенеджерRac.СтрокаЗапускаКлиента() + СтрШаблон("connection list --cluster=""%1""%2 --infobase=%3%4 --process=%5",
КомандаЗапускаСоединения = МенеджерRac.СтрокаЗапускаКлиента()
+ СтрШаблон("connection list --cluster=""%1""%2 --infobase=%3%4",
МенеджерRac.ИдентификаторКластера(ОписаниеКластера),
МенеджерRac.КлючиАвторизацииВКластере(),
МенеджерRAC.ИдентификаторБазы(),
МенеджерRAC.КлючиАвторизацииВБазе(),
РабочийПроцесс["process"]) + " " + Настройки.АдресСервераАдминистрирования;
МенеджерRAC.КлючиАвторизацииВБазе()) + " " + Настройки.АдресСервераАдминистрирования;

Результат = Новый Массив;
Лог.Информация("Получаю список соединений рабочего процесса...");
Соединения = Новый Массив;
Лог.Информация("Получаю список соединений...");

Попытка
Соединения = МенеджерRAC.РазобратьПоток(ЗапуститьПроцесс(КомандаЗапускаСоединения));
Исключение
ТекстОшибки = ОписаниеОшибки();
Если СтрНайти(ВРег(ТекстОшибки), "РАБОЧИЙ ПРОЦЕСС С УКАЗАННЫМ ИДЕНТИФИКАТОРОМ НЕ НАЙДЕН") = 0 Тогда
ВызватьИсключение;
КонецЕсли;
Лог.Отладка("Пропускаю ошибку: " + ТекстОшибки);

Соединения = Новый Массив;
КонецПопытки;

Для Каждого ТекПроцесс Из Соединения Цикл
Если ВРег(ТекПроцесс["app-id"]) = "RAS"
Или Не МенеджерФильтраПриложений.СеансПодходит(ТекПроцесс["app-id"], ТекПроцесс["user-name"]) Тогда
Продолжить;
КонецЕсли;

Результат.Добавить(ТекПроцесс);

КонецЦикла;

Возврат Результат;
Возврат Соединения;

КонецФункции

Процедура РазорватьСоединениеСПроцессом(Знач РабочийПроцесс, Знач Соединение)
Процедура РазорватьСоединение(Знач Соединение)

ОписаниеКластера = МенеджерRac.ОписаниеКластера();
КомандаРазрывСоединения = МенеджерRac.СтрокаЗапускаКлиента() + СтрШаблон("connection disconnect --cluster=""%1""%2 %3 --process=%4 --connection=%5",
КомандаРазрывСоединения = МенеджерRac.СтрокаЗапускаКлиента()
+ СтрШаблон("connection disconnect --cluster=""%1""%2 %3 --process=%4 --connection=%5",
МенеджерRac.ИдентификаторКластера(ОписаниеКластера),
МенеджерRac.КлючиАвторизацииВКластере(),
МенеджерRAC.КлючиАвторизацииВБазе(),
РабочийПроцесс["process"],
Соединение["process"],
Соединение["connection"]) + " " + Настройки.АдресСервераАдминистрирования;

Сообщение = СтрШаблон("Отключаю соединение %1 [%2] (%3)",
Соединение["conn-id"],
Соединение["app-id"],
Соединение["user-name"]
);
Сообщение = СтрШаблон("Отключаю соединение %1 [%2]",
Соединение["conn-id"],
Соединение["application"]);

Лог.Информация(Сообщение);

Expand Down

0 comments on commit b02ac12

Please sign in to comment.