1С: Сервер. Соединение с http сервисом. Как заблокировать?
Привет, коллеги!
Я собираю метрики из 1С по http. При этом у меня есть скрипты обновления ИБ.
Скрипт не выполняется, если ИБ имеет текущие соединения. Мне удалось заблокировать клиентские сеансы и сеансы регламентных заданий, но не соединения по http.
Имеет ли rac устанавливать такие блокировки? Если да, до подскажите как? В справке по командам rac я не нашел.
Прошу прощения, за скомканную формулировку. Попробую описать порядок действий скрипта:
1. Устанавливаем блокировку регламентных заданий
2. Устанавливаем блокировку начала сеансов
3. Убиваем все текущие соединения
4. Накатываем обновление (загружаем конфигурацию/запускаем обновление)
5. Запускаем в режиме предприятия, выполняем обновление метаданных
6. Снимаем блокировки регламентных заданий
7. Снимаем блокировки начала сеансов.
Выполнение скрипта останавливается на 4 пункте, где нужен монопольный доступ к ИБ. Обычно в конфигураторе на этом моменте система выдает окошко, что ИБ занят и просит завершить сеансы/подождать или отменить обновление. Скрипт выводит, что есть активное подключение по http. Это значит, все установленные блокировки игнорируются для подключения к ИБ с приложением "Соединение с http сервисом".
Может ли rac установить такую блокировку соединений для ИБ в кластере, что бы ничего не мешало обновлению ИБ?
Немного спутанно описано. Возможно, у Вас проблема не в блокировке соединений (она блокирует только новые соединения), а в том, чтобы отрезать уже имеющиеся. С точки зрения сервера 1С - http-сервис это фактически просто постоянно работающая 1С, которая не выключается после завершения выполнения запроса, можно либо обрубить вообще все текущие соединения с базой после установки блокировки, либо принудительно остановить службу Apache/IIS (на чем у Вас оно работает?) и тогда соединение само отключится.
Прошу прощения, за скомканную формулировку. Попробую описать порядок действий скрипта:
1. Устанавливаем блокировку регламентных заданий
2. Устанавливаем блокировку начала сеансов
3. Убиваем все текущие соединения
4. Накатываем обновление (загружаем конфигурацию/запускаем обновление)
5. Запускаем в режиме предприятия, выполняем обновление метаданных
6. Снимаем блокировки регламентных заданий
7. Снимаем блокировки начала сеансов.
Выполнение скрипта останавливается на 4 пункте, где нужен монопольный доступ к ИБ. Обычно в конфигураторе на этом моменте система выдает окошко, что ИБ занят и просит завершить сеансы/подождать или отменить обновление. Скрипт выводит, что есть активное подключение по http. Это значит, все установленные блокировки игнорируются для подключения к ИБ с приложением "Соединение с http сервисом".
Может ли rac установить такую блокировку соединений для ИБ в кластере, что бы ничего не мешало обновлению ИБ?
Александр Прохорович, сеанс может и не зависает... Метрики собираться раз в минуту. Выходит, что нет такой настройки, которая могла бы запретить такое подключение? Получается, что можно запретить выполнение регламентных заданий, установить блокировку пользовательских сеансов, а соединение с http сервисом запретить нельзя...
Alex_Buzz, как раз наоборот, блокировка сеансов блокирует любые соединения, в том числе и HTTP, здесь у Вас вся логика настроена правильно, но так как стабильность работы 1С не слишком хорошая, видимо, по какой то причине в Вашем случае не блокируется либо блокируется, но не обрывается существующее.
И еще, могу ошибаться, но по логике работы HTTP-соединение хоть и прерывается, но само по себе соединение с базой создается еще при первом обращении и дальше удерживается (обратите внимание на разницу времени выполнения первого обращения и всех последующих).
Alex_Buzz, вам верно написали - блокировка универсальна и действует для всех, кто не знает ключа для входа (если вы его задали). Если у вас нет доступа к веб-серверу (который в рамках оптимизации ресурсов, все время держит открытым соединение с 1С), то при каждом обновлении базы делайте реструктуризацию и выполняйте принудительное обновление с завершением открытых сеансов.