====== Автотестирование остановки репликации ====== Для синхронизации данных между базами данных используется процесс [[:Репликация|репликации]]\\ В базе данных менеджера проектов фиксируются события связанные с выполнением репликаций, в частности, время начала выполнения репликации.\\ Репликация выполняется часто, поэтому большой перерыв в выполнении репликации означает возникновение проблем с выполнением репликации.\\ Своевременное восстановление репликации предотвращает возникновение коллизий данных. ===== Реализация тестирования ===== Пусть задан максимальный интервал паузы между репликациями (по умолчанию 3 часа).\\ Если за это время репликация не выполнилась, то создается задача первой очереди с целью восстановления процесса репликации.\\ Затем задачи будут создаваться раз в сутки до тех пор пока репликация не восстановится.\\ ===== Настройки ===== 1. В файле настроек AgentSettings.ini для агента обслуживающего "Менеджер проектов" в секции [AutoTest] настройка MaxPeriodReplMin, которая содержит максимальнодопустимый интервал паузы между репликациями в минутах (по умолчанию 180 мин);\\ 2. В "Менеджере проектов" на форме **"Сервисы"** \ **"Репликация"** \\ Открывается форма **"Отчет по репликации"** и на вкладке **"Отчет"** нужно включить настройку **"Проверять работу репликации (при обнаружении ошибки будет создаваться задача в Б24)"** \\ {{:pasted:20200226-100317.png}}\\ Поле **№ задачи** заполняется автоматически при тестировании.\\ Если репликация работает, поле **№ задачи** пустое.\\ При возникновении ошибки создается задача и ставится цифра 1. Если в течение суток проблема не решена, то создается повторная задача и номер увеличивается на единицу.\\ ===== Макет задачи ===== Заголовок: Ошибка запуска репликации: Наименование клиента / Наименование подразделения (ПОВТОРНО) Текст задачи: ReplIn не запускался уже более 3 час. ! ReplOut не запускался уже более 3 час. ! Наименование клиента Наименование подразделения (Центр) Дата и время проверки = 25.07.2016 20:05:27 Дата и время последнего выполнения ReplIn = 25.07.2016 20:05:27 Дата и время последнего выполнения ReplOut = 25.07.2016 20:05:27 ID в client_repl_reps = 1294 № копии задачи = 1 ==== Пример задачи ==== Заголовок: 1. Ошибка запуска репликации: РИКВЕСТ (Проф-Чистка №1) (Серпухов) / Центр Текст задачи: ReplIn не запускался уже более 2442 час. ! РИКВЕСТ (Проф-Чистка №1) (Серпухов) Новый сервер (Центр) Дата и время проверки = 03.12.2019 15:30:04 Дата и время последнего выполнения ReplIn = 23.08.2019 21:03:53 Дата и время последнего выполнения ReplOut = 03.12.2019 15:25:09 ID в client_repl_reps = 1242 № копии задачи = 1 ===== Схема выполнения процесса ===== 1. При выполнении репликации в базе данных менеджера проектов PC.fdb в таблице client_repl_reps заполняются поля: rep_dttm_in, rep_dttm_out - дата и время последнего выполнения ReplIn, ReplOut соответственно, которые отображаются в графах "Время отчета о загрузке" и "Время отчета об отправке" 2. Агент обслуживающий "Менеджер проектов" 2.1. при запуске считывает настройку из AgentSettings.ini из секции [AutoTest] MaxPeriodReplMin, которая содержит максимальнодопустимый интервал паузы между репликациями в минутах (по умолчанию 180 мин); 2.2. один раз в час запускается автотест остановки репликации. 2.2.1. в таблице client_repl_reps выбираются все записи с task_on=1; 2.3.2. проверяется превышение интервала между выполнением репликации и текущим временем превышает максимальный интервал паузы между репликациями {(now-rep_dttm_in)>MaxPeriodRepl или (now-rep_dttm_out)>MaxPeriodRepl, где MaxPeriodRepl равняется MaxPeriodReplMin конвертированному в формат времени}, то создается задача первой очереди и ставится цифра 1 в поле task_num. Если интервал превыше и в текущие сутки задача не создавалась, то \\ создается задача на исправление репликации;\\ в карточке репликации увеличивается на единицу "Номер задачи";\\ в лог в таблице AT_Repl_Log добавляется запись, в которой содержится URL задачи в битрексе;\\ 2.3. Если для активной задачи репликация восстановилась, то "Номер задачи" обнуляется, в логе делается запись о завершении задачи. ===== Таблицы данных ===== [[:sp_db_rep]]\\ [[:client_repl_reps]]\\ [[:at_repl_log]]\\