Как устранить ошибку vrunner при подключении к хранилищу 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как устранить ошибку vrunner при подключении к хранилищу 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35825
      Фото аватараOdineski
      Участник

        как победить ошибку vrunner? опишу проблему, перед тем как подключить базу к хранилищу 1С мы делаем команду vrunner unbindrepo, но если зайти в консоль администрирования хранилища 1с, то видим что сеанс на самом деле не отключился, и чтобы поправить ошибку которая возникает при vrunner bindrepo приходится ругами грохать сеанс.
        Выявил следующую зависимость ошибок:

        — если мы в панели администрирования храна убиваем сеанс, то при restore + storage падаем на шаге updatedb (ОШИБКА — Обновление конфигурации базы данных. Используется оптимизированный механизм обновления конфигурации базы данных. В процессе обновления информационной базы произошла критическая ошибка)

        — если запускаем пайп повторно только storage падаем на шаге bindrepo (ОШИБКА — Попытка связывания информационной базы пользователем, у которого имеется другая информационная база, связанная с данным хранилищем конфигурации.)

        3. Если в панели администрирования храна убиваем сеанс, то обновление из хранилища происходит удачно

        4. Если мы повторно запускаем обновление из хранилища пайп падает на updatedb (ОШИБКА — Попытка связывания информационной базы пользователем, у которого имеется другая информационная база, связанная с данным хранилищем конфигурации. Ошибка подключения информационной базы к хранилищ)

        ВЫВОД: Требуется ручное вмешательство для удаления сеанса из панели администрирования хранилища.

      • #35826
        bot_avaOdin — Одинэсник
        Участник

          Артур, приветствую.

          Проблема с vrunner и хранилищем конфигурации 1С, которую вы описываете, связана с тем, что команда vrunner unbindrepo не всегда корректно завершает сессию подключения базы к хранилищу, из-за чего в панели администрирования хранилища остаётся «зависший» сеанс. Это приводит к конфликтам при повторном связывании (bindrepo) и обновлении базы (updatedb), так как хранилище считает, что пользователь уже связан с другой базой.

          Вот подробный разбор и рекомендации по решению:

          1. **Почему vrunner unbindrepo не завершает сессию полностью?**
          Команда unbindrepo должна отвязать базу от хранилища, но в некоторых случаях (например, при прерывании процесса, сетевых сбоях, или ошибках в vrunner) сессия остаётся активной в хранилище. Это баг или ограничение текущей версии vrunner/хранилища.

          2. **Ручное удаление сеанса в панели администрирования хранилища**
          Вы уже заметили, что без ручного удаления сеанса из панели администрирования хранилища невозможно корректно выполнить bindrepo и updatedb. Это стандартное поведение, так как хранилище не позволяет одному пользователю иметь несколько активных связей.

          3. **Почему при удалении сеанса из панели администрирования падает обновление на updatedb?**
          При насильственном удалении сеанса база может остаться в состоянии, когда метаданные или внутренние ссылки на хранилище не синхронизированы. В результате обновление конфигурации падает с критической ошибкой.

          4. **Рекомендации по устранению проблемы:**

          — **Используйте последовательность команд с контролем состояния:**
          Перед выполнением unbindrepo убедитесь, что база не занята и нет активных пользователей. После unbindrepo проверьте через API или консоль хранилища, что сессия действительно завершена. Если нет — удалите вручную.

          — **Автоматизация удаления зависших сессий:**
          Можно написать скрипт, который через API хранилища или через консоль администрирования будет проверять и удалять «зависшие» сессии перед выполнением bindrepo. Это позволит избежать ручного вмешательства.

          — **Используйте команду vrunner unbindrepo с параметрами ожидания и повторов:**
          В новых версиях vrunner есть параметры, позволяющие повторять попытки отвязки и ждать освобождения сессии. Обновите vrunner до последней версии и используйте эти возможности.

          — **Обновление vrunner и платформы 1С:**
          Убедитесь, что у вас актуальная версия vrunner и платформы 1С, так как в новых версиях исправлены многие баги, связанные с управлением сессиями хранилища.

          — **Избегайте насильственного удаления сеансов во время активных операций:**
          Если приходится удалять сеанс вручную, делайте это только когда база не используется, и после этого перезапускайте службу сервера 1С, чтобы очистить кэш и сбросить состояние.

          — **Используйте отдельные логины для каждой базы:**
          Как правило, для каждой базы, подключаемой к хранилищу, должен быть свой логин. Это уменьшит конфликты с сессиями.

          5. **Пример автоматизации проверки и удаления сессий (псевдокод):**

          6. **Если проблема повторяется часто — рассмотрите переход на клиент-серверный вариант хранилища или использование более стабильных средств обновления.**

          **Итог:**
          Ошибка с vrunner и зависшими сессиями — известная проблема, связанная с тем, что unbindrepo не всегда корректно завершает сессию. Чтобы победить ошибку, нужно:

          — Обновить vrunner и платформу 1С до последних версий.
          — Автоматизировать проверку и удаление зависших сессий через API хранилища перед bindrepo.
          — Избегать насильственного удаления сессий во время активных операций, а если удаляете — перезапускать сервер 1С.
          — Использовать отдельные логины для каждой базы, чтобы избежать конфликтов.
          https://infostart.ru/public/1013337/ (раздел про ошибки хранилища)
          https://infostart.ru/1c/articles/568518/ (восстановление после ошибок сессий)

          Если нужна помощь с написанием скрипта для автоматизации удаления сессий — могу помочь.

          Удачи!

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С